kit_rs/
lib.rs

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    // Internal functions used by macros (hidden from docs)
29    __delete_impl, __fallback_impl, __get_impl, __post_impl, __put_impl,
30    FallbackDefBuilder, GroupBuilder, GroupDef, GroupItem, GroupRoute, GroupRouter,
31    IntoGroupItem, RouteBuilder, RouteDefBuilder, Router,
32};
33pub use server::Server;
34
35// Re-export async_trait for middleware implementations
36pub use async_trait::async_trait;
37
38// Re-export inventory for #[service(ConcreteType)] macro
39#[doc(hidden)]
40pub use inventory;
41
42// Re-export for macro usage
43#[doc(hidden)]
44pub use serde_json;
45
46// Re-export serde for InertiaProps derive macro
47pub use serde;
48
49// Re-export validator for FormRequest validation
50pub use validator;
51pub use validator::Validate;
52
53// Re-export the proc-macros for compile-time component validation and type safety
54pub 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;
63pub use kit_macros::kit_test;
64
65#[macro_export]
66macro_rules! json_response {
67    ($($json:tt)+) => {
68        Ok($crate::HttpResponse::json($crate::serde_json::json!($($json)+)))
69    };
70}
71
72#[macro_export]
73macro_rules! text_response {
74    ($text:expr) => {
75        Ok($crate::HttpResponse::text($text))
76    };
77}
78
79/// Register global middleware that runs on every request
80///
81/// Global middleware is registered in `bootstrap.rs` and runs in registration order,
82/// before any route-specific middleware.
83///
84/// # Example
85///
86/// ```rust,ignore
87/// // In bootstrap.rs
88/// use kit::global_middleware;
89/// use crate::middleware;
90///
91/// pub fn register() {
92///     global_middleware!(middleware::LoggingMiddleware);
93///     global_middleware!(middleware::CorsMiddleware);
94/// }
95/// ```
96#[macro_export]
97macro_rules! global_middleware {
98    ($middleware:expr) => {
99        $crate::register_global_middleware($middleware)
100    };
101}
102
103/// Testing utilities for the application container and database
104///
105/// Provides `TestContainer` for setting up isolated test environments with
106/// fake implementations, and `TestDatabase` for database testing with
107/// in-memory SQLite.
108pub mod testing {
109    pub use crate::container::testing::{TestContainer, TestContainerGuard};
110    pub use crate::database::testing::TestDatabase;
111}