#![forbid(unsafe_code)]
pub mod app;
pub mod testing;
pub use arcly_http_core::{
auth, core, docs, http, observability, pipeline, resilience, transport, web,
};
pub use arcly_http_core::auth::{guards, oauth};
pub use arcly_http_core::web::{cache, interceptors, security, validation};
pub use arcly_http_core::{cookie, openapi, plugins, session};
#[cfg(feature = "compliance")]
pub use arcly_http_compliance::compliance;
#[cfg(feature = "data")]
pub use arcly_http_data::data;
#[cfg(feature = "messaging")]
pub use arcly_http_messaging::messaging;
#[cfg(feature = "messaging")]
pub use arcly_http_messaging::messaging::event;
#[cfg(feature = "realtime")]
pub use arcly_http_realtime::realtime;
#[doc(hidden)]
pub use arcly_http_core::__axum;
pub use arcly_http_core::__schema_for;
pub use futures;
pub use inventory;
pub use schemars;
pub use serde_json;
pub use validator;
pub use app::{App, LaunchConfig};
pub use web::{Error, RequestContext};
#[doc(hidden)]
pub mod __macro_support {
pub use arcly_http_core::auth::guards::Guard;
pub use arcly_http_core::auth::policy::check_policies;
pub use arcly_http_core::core::engine::{
FrozenDiContainer, HttpMethod, Module, ModuleDescriptor, ParamLoc, ParamSpec,
ProviderDescriptor, Resolver, RouteDescriptor, RouteSpec,
};
pub use arcly_http_core::http::Json;
pub use arcly_http_core::observability::audit::emit_route_audit;
pub use arcly_http_core::resilience::timeout::run_with_timeout;
pub use arcly_http_core::resilience::{BreakerOpen, CircuitBreaker};
pub use arcly_http_core::web::context::RequestContext;
pub use arcly_http_core::web::extract::{
extract_body_validated, extract_header, extract_param, extract_query_validated, Inject,
};
pub use arcly_http_core::web::idempotency::run_idempotent;
pub use arcly_http_core::web::interceptors::{Interceptor, NextHandler};
pub use arcly_http_core::web::Error;
#[cfg(feature = "compliance")]
pub use arcly_http_compliance::compliance::crypto::EncryptRecord;
#[cfg(feature = "compliance")]
pub use arcly_http_compliance::compliance::masking::mask_response;
#[cfg(feature = "data")]
pub use arcly_http_data::data::tx::run_transactional;
#[cfg(feature = "messaging")]
pub use arcly_http_messaging::messaging::{EventContext, EventError, EventHandlerDescriptor};
#[cfg(feature = "realtime")]
pub use arcly_http_realtime::realtime::gateway::{
GatewayDescriptor, GatewayRuntime, MessageHandler,
};
#[cfg(feature = "realtime")]
pub use arcly_http_realtime::realtime::{ArclyGateway, WsClient};
}
pub mod prelude {
pub use crate::app::{App, LaunchConfig};
pub use crate::auth::cookie::{CookieConfig, CookieService, SameSite};
pub use crate::auth::guards::{
JwtAuthGuard, RoleGuard, SessionAuthGuard, JWT_AUTH, SESSION_AUTH,
};
pub use crate::auth::oauth::{OAuth2Provider, OAuth2Service, OAuth2UserInfo};
pub use crate::auth::policy::{
check_policies, Decision, EnvAttributes, PolicyEngine, PolicyInput, PolicySet, PolicySource,
};
pub use crate::auth::secrets::{spawn_secret_watcher, Rotating, SecretSource, SecretVersion};
pub use crate::auth::session::{Session, SessionConfig, SessionManager, SessionStore};
pub use crate::auth::{JwtConfig, JwtService};
pub use crate::cache::{stats as cache_stats, CacheInterceptor, CacheStats};
pub use crate::core::engine::FrozenDiContainer;
pub use crate::core::plugins::{ArclyPlugin, ArclyPluginContext, PluginError, PluginStage};
pub use crate::http::{
byte_range, bytes_response, header, Body, Bytes, HeaderMap, HeaderName, HeaderValue,
IntoResponse, Json, Method, RequestParts, Response, ResponseBuilder, StatusCode, Uri,
};
pub use crate::interceptors::{
EnvelopeResponse, Interceptor, LatencyLog, NextHandler, TelemetryLog, TraceInterceptor,
};
pub use crate::observability::audit::{AuditOutcome, AuditPipeline, AuditRecord, AuditSink};
pub use crate::observability::health::{HealthCheck, HealthRegistry, HealthStatus};
pub use crate::observability::plugin::ArclyObservabilityPlugin;
pub use crate::openapi::{ApiKeyIn, OpenApiInfo, SecurityScheme};
pub use crate::pipeline::Provenance;
pub use crate::resilience::{
Bulkhead, DLockBackend, DistributedLock, DistributedRateLimit, FailurePolicy, LockGuard,
RateDecision, RateLimit, RateLimitBackend,
};
pub use crate::security::{configure as configure_security, FrameOptions, SecurityConfig};
pub use crate::validation::Validated;
pub use crate::web::boundary::BoundaryFilter;
pub use crate::web::cors::CorsConfig;
pub use crate::web::dynamic::{DynamicRouteTable, DYNAMIC_PREFIX};
pub use crate::web::error::{
BadRequest, Conflict, FieldError, Forbidden, GatewayTimeout, HttpError, HttpException,
Internal, NotFound, ProblemDetails, ServiceUnavailable, TooManyRequests, Unauthorized,
Validation,
};
pub use crate::web::idempotency::{IdempotencyDecision, IdempotencyStore};
pub use crate::web::multipart::{MultipartForm, Part};
pub use crate::web::pagination::{Page, PageParams};
pub use crate::web::responses::{Accepted, Created, NoContent};
pub use crate::web::tenant::{
TenantConfig, TenantGuard, TenantId, TenantRegistry, TenantStrategy, TENANT,
};
pub use crate::web::{Error, Inject, RequestContext};
#[cfg(feature = "compliance")]
pub use crate::compliance::{
CryptoError, CryptoVault, DataKey, EncryptRecord, EncryptedField, KekSource, KeyId,
MaskRule, MaskStrategy, Masker, MaskingPolicy,
};
#[cfg(feature = "data")]
pub use crate::data::db::{ArclyDbPool, DbDriver, DbHealthCheck, OwnedDbConn};
#[cfg(all(feature = "data", feature = "db-sqlx"))]
pub use crate::data::migrate::{Migration, MigrationReport, MigrationRunner};
#[cfg(feature = "data")]
pub use crate::data::outbox::{
with_transaction, OutboxEntry, OutboxPublisher, OutboxRelay, OutboxStore, OutboxTx,
TransactionalDataSource,
};
#[cfg(feature = "data")]
pub use crate::data::tx::{in_transaction, with_current_tx, ArclyTransaction};
#[cfg(feature = "data")]
pub use crate::data::{
AccessIntent, DataError, DataErrorKind, DataSource, DataSourceRegistry, ReadAfterWritePin,
};
#[cfg(feature = "messaging")]
pub use crate::messaging::{
ConsumerRuntime, EventContext, EventHandlerDescriptor, InboundMessage, MessageTransport,
};
pub use arcly_http_macros::{
circuit_breaker, AuditLog, CacheKey, CacheTTL, Controller, Delete, Deprecated,
EncryptFields, EventConsumer, EventPattern, Get, Idempotent, Injectable, MaskFields,
Module, Multipart, Patch, Post, Put, RequirePolicies, Timeout, Transactional,
UseInterceptors, Version,
};
#[cfg(feature = "realtime")]
pub use arcly_http_macros::{Gateway, Subscribe};
pub use schemars::JsonSchema;
pub use validator::Validate;
}