1#![forbid(unsafe_code)]
20
21pub mod app;
22pub mod testing;
23
24pub use arcly_http_core::{
26 auth, core, docs, http, observability, pipeline, resilience, transport, web,
27};
28pub use arcly_http_core::auth::{guards, oauth};
30pub use arcly_http_core::web::{cache, interceptors, security, validation};
31pub use arcly_http_core::{cookie, openapi, plugins, session};
32
33#[cfg(feature = "compliance")]
35pub use arcly_http_compliance::compliance;
36#[cfg(feature = "data")]
37pub use arcly_http_data::data;
38#[cfg(feature = "identity")]
42pub use arcly_http_identity as identity;
43#[cfg(feature = "messaging")]
44pub use arcly_http_messaging::messaging;
45#[cfg(feature = "messaging")]
46pub use arcly_http_messaging::messaging::event;
47#[cfg(feature = "realtime")]
48pub use arcly_http_realtime::realtime;
49
50#[doc(hidden)]
52pub use arcly_http_core::__axum;
53pub use arcly_http_core::__schema_for;
54pub use futures;
55pub use inventory;
56pub use schemars;
57pub use serde_json;
58pub use validator;
59
60pub use app::{App, LaunchConfig};
61pub use web::{Error, RequestContext};
62
63#[doc(hidden)]
70pub mod __macro_support {
71 pub use arcly_http_core::auth::guards::Guard;
72 pub use arcly_http_core::auth::policy::check_policies;
73 pub use arcly_http_core::core::engine::{
74 FrozenDiContainer, HttpMethod, Module, ModuleDescriptor, ParamLoc, ParamSpec,
75 ProviderDescriptor, Resolver, RouteDescriptor, RouteSpec,
76 };
77 pub use arcly_http_core::http::Json;
78 pub use arcly_http_core::observability::audit::emit_route_audit;
79 pub use arcly_http_core::resilience::timeout::run_with_timeout;
80 pub use arcly_http_core::resilience::{BreakerOpen, CircuitBreaker};
81 pub use arcly_http_core::web::context::RequestContext;
82 pub use arcly_http_core::web::extract::{
83 extract_body_validated, extract_header, extract_param, extract_query_validated, Inject,
84 };
85 pub use arcly_http_core::web::idempotency::run_idempotent;
86 pub use arcly_http_core::web::interceptors::{Interceptor, NextHandler};
87 pub use arcly_http_core::web::Error;
88
89 #[cfg(feature = "compliance")]
90 pub use arcly_http_compliance::compliance::crypto::EncryptRecord;
91 #[cfg(feature = "compliance")]
92 pub use arcly_http_compliance::compliance::masking::mask_response;
93 #[cfg(feature = "data")]
94 pub use arcly_http_data::data::tx::run_transactional;
95 #[cfg(feature = "messaging")]
96 pub use arcly_http_messaging::messaging::{EventContext, EventError, EventHandlerDescriptor};
97 #[cfg(feature = "realtime")]
98 pub use arcly_http_realtime::realtime::gateway::{
99 GatewayDescriptor, GatewayRuntime, MessageHandler,
100 };
101 #[cfg(feature = "realtime")]
102 pub use arcly_http_realtime::realtime::{ArclyGateway, WsClient};
103}
104
105pub mod prelude {
107 pub use crate::app::{App, LaunchConfig};
108 pub use crate::auth::cookie::{CookieConfig, CookieService, SameSite};
109 pub use crate::auth::guards::{
110 JwtAuthGuard, RoleGuard, SessionAuthGuard, JWT_AUTH, SESSION_AUTH,
111 };
112 pub use crate::auth::oauth::{OAuth2Provider, OAuth2Service, OAuth2UserInfo};
113 pub use crate::auth::policy::{
114 check_policies, Decision, EnvAttributes, PolicyEngine, PolicyInput, PolicySet, PolicySource,
115 };
116 pub use crate::auth::secrets::{spawn_secret_watcher, Rotating, SecretSource, SecretVersion};
117 pub use crate::auth::session::{Session, SessionConfig, SessionManager, SessionStore};
118 pub use crate::auth::{JwtConfig, JwtService};
119 pub use crate::cache::{stats as cache_stats, CacheInterceptor, CacheStats};
120 pub use crate::core::engine::FrozenDiContainer;
121 pub use crate::core::plugins::{ArclyPlugin, ArclyPluginContext, PluginError, PluginStage};
122 pub use crate::http::{
123 byte_range, bytes_response, header, Body, Bytes, HeaderMap, HeaderName, HeaderValue,
124 IntoResponse, Json, Method, RequestParts, Response, ResponseBuilder, StatusCode, Uri,
125 };
126 pub use crate::interceptors::{
127 EnvelopeResponse, Interceptor, LatencyLog, NextHandler, TelemetryLog, TraceInterceptor,
128 };
129 pub use crate::observability::audit::{AuditOutcome, AuditPipeline, AuditRecord, AuditSink};
130 pub use crate::observability::health::{HealthCheck, HealthRegistry, HealthStatus};
131 pub use crate::observability::plugin::ArclyObservabilityPlugin;
132 pub use crate::openapi::{ApiKeyIn, OpenApiInfo, SecurityScheme};
133 pub use crate::pipeline::Provenance;
134 pub use crate::resilience::{
135 Bulkhead, DLockBackend, DistributedLock, DistributedRateLimit, FailurePolicy, LockGuard,
136 RateDecision, RateLimit, RateLimitBackend,
137 };
138 pub use crate::security::{configure as configure_security, FrameOptions, SecurityConfig};
139 pub use crate::validation::Validated;
140 pub use crate::web::boundary::BoundaryFilter;
141 pub use crate::web::cors::CorsConfig;
142 pub use crate::web::dynamic::{DynamicRouteTable, DYNAMIC_PREFIX};
143 pub use crate::web::error::{
144 BadRequest, Conflict, FieldError, Forbidden, GatewayTimeout, HttpError, HttpException,
145 Internal, NotFound, ProblemDetails, ServiceUnavailable, TooManyRequests, Unauthorized,
146 Validation,
147 };
148 pub use crate::web::idempotency::{IdempotencyDecision, IdempotencyStore};
149 pub use crate::web::multipart::{MultipartForm, Part};
150 pub use crate::web::pagination::{Page, PageParams};
151 pub use crate::web::responses::{Accepted, Created, NoContent};
152 pub use crate::web::tenant::{
153 TenantConfig, TenantGuard, TenantId, TenantRegistry, TenantStrategy, TENANT,
154 };
155 pub use crate::web::{Error, Inject, RequestContext};
156
157 #[cfg(feature = "compliance")]
159 pub use crate::compliance::{
160 CryptoError, CryptoVault, DataKey, EncryptRecord, EncryptedField, KekSource, KeyId,
161 MaskRule, MaskStrategy, Masker, MaskingPolicy,
162 };
163 #[cfg(feature = "data")]
164 pub use crate::data::db::{ArclyDbPool, DbDriver, DbHealthCheck, OwnedDbConn};
165 #[cfg(all(feature = "data", feature = "db-sqlx"))]
166 pub use crate::data::migrate::{Migration, MigrationReport, MigrationRunner};
167 #[cfg(feature = "data")]
168 pub use crate::data::outbox::{
169 with_transaction, OutboxEntry, OutboxPublisher, OutboxRelay, OutboxStore, OutboxTx,
170 TransactionalDataSource,
171 };
172 #[cfg(feature = "data")]
173 pub use crate::data::tx::{in_transaction, with_current_tx, ArclyTransaction};
174 #[cfg(feature = "data")]
175 pub use crate::data::{
176 AccessIntent, DataError, DataErrorKind, DataSource, DataSourceRegistry, ReadAfterWritePin,
177 };
178 #[cfg(feature = "messaging")]
179 pub use crate::messaging::{
180 ConsumerRuntime, EventContext, EventHandlerDescriptor, InboundMessage, MessageTransport,
181 };
182
183 pub use arcly_http_macros::{
184 circuit_breaker, AuditLog, CacheKey, CacheTTL, Controller, Delete, Deprecated,
185 EncryptFields, EventConsumer, EventPattern, Get, Idempotent, Injectable, MaskFields,
186 Module, Multipart, Patch, Post, Put, RequirePolicies, Timeout, Transactional,
187 UseInterceptors, Version,
188 };
189 #[cfg(feature = "realtime")]
190 pub use arcly_http_macros::{Gateway, Subscribe};
191 pub use schemars::JsonSchema;
192 pub use validator::Validate;
193}