#![forbid(unsafe_code)]
#![cfg_attr(docsrs, feature(doc_cfg))]
pub use axum;
pub const FRAMEWORK_VERSION: &str = env!("CARGO_PKG_VERSION");
pub mod application;
pub mod assets;
pub mod config;
mod error;
pub mod http;
pub mod proxy;
pub mod routing;
#[cfg(feature = "dx")]
pub mod dx;
#[cfg(feature = "dev-proxy")]
pub mod dev_proxy;
pub use application::{
Application, ApplicationBuilder, EngineError, Lifecycle, LifecycleState, Resources,
};
pub use error::{Error, Result, ValidationError, bad_request, forbidden, not_found};
#[cfg(any(feature = "api", feature = "inertia"))]
pub use http::json;
pub use http::{RedirectResponse, no_content, redirect, text};
pub use routing::{IntoRoutes, Middleware, Next, Route, RouteGroup, RouterState, Routes};
pub use axum::middleware::from_fn;
pub use axum::routing::{any, delete, get, head, options, patch, post, put};
pub trait DxComponent {
const NAME: &'static str;
}
#[cfg(all(feature = "dx", feature = "database", feature = "api"))]
pub use dx::Bound;
#[cfg(feature = "dx")]
pub use dx::{
ApplicationGraph, ControllerMetadata, ControllerMethod, Empty, FieldShape, GraphError, Inject,
Json, ModuleDescriptor, ModuleNode, Page, Provider, RequestCacheDescriptor, RequestMetadata,
Resolve, ResourceMetadata, RouteDescriptor, RouteMethod, Service, page,
};
#[cfg(feature = "dx")]
pub use dx::{Command, CommandError, CommandFuture, CommandRegistry};
#[cfg(feature = "dx")]
pub use dx::{CommandBinding, JobBinding};
#[cfg(all(feature = "dx", feature = "database"))]
pub use dx::{DbFromState, RouteModel};
#[cfg(feature = "dx")]
pub use dx::{RequestCache, RequestCacheKey};
#[cfg(feature = "inertia")]
pub mod inertia;
#[cfg(feature = "inertia")]
pub use inertia::{
AssetVersion, Inertia, InertiaConfig, InertiaError, InertiaLayer, InertiaRequest, RootDocument,
ScriptBody, default_root_document, vite_root_document,
};
#[cfg(feature = "database")]
pub mod database;
#[cfg(feature = "database")]
pub use database::{DatabaseConfig, Db};
#[cfg(feature = "database")]
pub use sea_orm;
#[cfg(feature = "auth")]
pub mod auth;
#[cfg(feature = "auth")]
pub use auth::{
Auth, AuthError, AuthManager, AuthUser, AuthzError, CsrfConfig, CsrfConfigError, CsrfError,
CsrfLayer, CsrfToken, Current, Flash, FlashError, FlashLevel, FlashMessage, LoginBuilder,
OptionalAuth, OptionalCurrent, PasswordHashError, PasswordHashString, PasswordHasher,
PasswordSecret, PasswordVerifyError, Policy, RehashOutcome, SameSite, Session,
SessionBuildError, SessionConfig, SessionConfigError, SessionError, SessionKey, SessionLayer,
SigningKeyReason, UserLoader, verify_password,
};
#[cfg(feature = "validation")]
pub mod validation;
#[cfg(feature = "validation")]
pub use validation::{
Request, Validated, ValidatedForm, ValidatedJson, ValidatedPath, ValidatedQuery,
validate_or_problem, validation_problem,
};
#[cfg(feature = "validation")]
pub use validation::rejection::{
from_form_rejection, from_json_rejection, from_path_rejection, from_query_rejection,
};
#[cfg(feature = "validation")]
pub use validator;
#[cfg(feature = "cache")]
pub mod cache;
#[cfg(feature = "cache")]
pub use cache::{
Cache, CacheConfig, CacheConfigError, CacheConnectError, CacheError, CacheHealthError,
Namespace,
};
#[cfg(feature = "storage-fs")]
pub mod storage;
#[cfg(feature = "storage-fs")]
pub use storage::{
Disk, FsConfig, S3Config, Storage, StorageBuilder, StorageConfig, StorageConfigError,
StorageConnectError, StorageError, StoragePath, StoragePathError,
};
#[cfg(feature = "mail")]
pub mod mail;
#[cfg(feature = "mail")]
pub use mail::{
Email, EmailAttachment, EmailError, Mail, MailBuilder, MailConfigError, MailSendError,
Mailable, Mailer, SmtpConfig, SmtpCredentials, TlsMode,
};
#[cfg(feature = "jobs")]
pub mod jobs;
#[cfg(feature = "jobs")]
pub use jobs::{
ClaimedJob, DEFAULT_MAX_PAYLOAD_BYTES, EnqueueError, EnqueuedJob, Job, JobError, JobModel,
JobRequest, JobStatus, Jobs, MigrateError, RegisterError, Registry, RetryPolicy,
ScheduleBinding, ScheduleCadence, Scheduler, SchedulerError, Worker, WorkerBuilder,
WorkerConfig, WorkerError,
};
#[cfg(feature = "events")]
pub mod events;
#[cfg(feature = "events")]
pub use events::{DispatchError, Dispatcher, Event, ListenerBinding};
#[cfg(feature = "realtime")]
pub mod realtime;
#[cfg(feature = "realtime")]
pub use realtime::{Broadcast, SseEndpoint, WebSocketEndpoint};
pub mod api;
pub use api::{PROBLEM_JSON, Problem, ProblemBuilder, ProblemKind};
#[cfg(feature = "observe")]
pub mod observe;
#[cfg(feature = "observe")]
pub use observe::RequestId;
#[cfg(feature = "pages")]
pub mod pages;
#[cfg(feature = "templates")]
pub mod templates;
#[cfg(feature = "cli")]
pub mod cli;
#[cfg(feature = "uag")]
pub mod uag;
#[cfg(feature = "oauth")]
pub mod oauth;
#[cfg(feature = "test-kit")]
pub mod test_kit;
#[cfg(feature = "macros")]
mod macros;
#[cfg(feature = "macros")]
pub use macros::main;
#[cfg(feature = "macros")]
pub use arcature_macros::{Event, Job, listener, model, request};
#[cfg(all(feature = "macros", feature = "dx"))]
pub use arcature_macros::{
DxComponent, application, command, controller, job_handler, middleware, module, page,
page_macro, policy, provider, redirect, request_cache, resource, route_model, routes, service,
};
pub mod prelude;
#[cfg(any(
feature = "inertia",
feature = "api",
feature = "auth",
feature = "database",
feature = "events",
feature = "jobs",
feature = "validation",
feature = "pages"
))]
pub use serde::{Deserialize, Serialize};
pub use serde_json;