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