1pub mod config;
2pub mod container;
3pub mod database;
4pub mod error;
5pub mod http;
6pub mod inertia;
7pub mod middleware;
8pub mod routing;
9pub mod server;
10
11pub use config::{env, env_optional, env_required, AppConfig, Config, Environment, ServerConfig};
12pub use container::{App, Container};
13pub use database::{
14 AutoRouteBinding, Database, DatabaseConfig, DatabaseType, DbConnection, Model, ModelMut,
15 RouteBinding, DB,
16};
17pub use error::{AppError, FrameworkError, HttpError, ValidationErrors};
18pub use http::{
19 json, text, FormRequest, FromParam, FromRequest, HttpResponse, Redirect, Request, Response,
20 ResponseExt,
21};
22pub use inertia::{InertiaConfig, InertiaContext, InertiaResponse};
23pub use middleware::{
24 register_global_middleware, Middleware, MiddlewareFuture, MiddlewareRegistry, Next,
25};
26pub use routing::{
27 route, validate_route_path,
28 __delete_impl, __get_impl, __post_impl, __put_impl,
30 GroupBuilder, GroupDef, GroupRoute, GroupRouter, RouteBuilder,
31 RouteDefBuilder, Router,
32};
33pub use server::Server;
34
35pub use async_trait::async_trait;
37
38#[doc(hidden)]
40pub use inventory;
41
42#[doc(hidden)]
44pub use serde_json;
45
46pub use serde;
48
49pub use validator;
51pub use validator::Validate;
52
53pub use kit_macros::domain_error;
55pub use kit_macros::handler;
56pub use kit_macros::inertia_response;
57pub use kit_macros::injectable;
58pub use kit_macros::redirect;
59pub use kit_macros::request;
60pub use kit_macros::service;
61pub use kit_macros::FormRequest as FormRequestDerive;
62pub use kit_macros::InertiaProps;
63
64#[macro_export]
65macro_rules! json_response {
66 ($($json:tt)+) => {
67 Ok($crate::HttpResponse::json($crate::serde_json::json!($($json)+)))
68 };
69}
70
71#[macro_export]
72macro_rules! text_response {
73 ($text:expr) => {
74 Ok($crate::HttpResponse::text($text))
75 };
76}
77
78#[macro_export]
96macro_rules! global_middleware {
97 ($middleware:expr) => {
98 $crate::register_global_middleware($middleware)
99 };
100}
101
102pub mod testing {
107 pub use crate::container::testing::{TestContainer, TestContainerGuard};
108}