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::{
12    env, env_optional, env_required, AppConfig, Config, Environment, ServerConfig,
13};
14pub use container::{App, Container};
15pub use database::{AutoRouteBinding, Database, DatabaseConfig, DatabaseType, DbConnection, Model, ModelMut, RouteBinding, DB};
16pub use error::{AppError, FrameworkError, HttpError, ValidationErrors};
17pub use http::{json, text, FormRequest, FromParam, FromRequest, HttpResponse, Redirect, Request, Response, ResponseExt};
18pub use inertia::{InertiaConfig, InertiaContext, InertiaResponse};
19pub use middleware::{
20    register_global_middleware, Middleware, MiddlewareFuture, MiddlewareRegistry, Next,
21};
22pub use routing::{delete, get, post, put, route, GroupBuilder, GroupDef, GroupRoute, GroupRouter, RouteBuilder, RouteDefBuilder, Router};
23pub use server::Server;
24
25// Re-export async_trait for middleware implementations
26pub use async_trait::async_trait;
27
28// Re-export inventory for #[service(ConcreteType)] macro
29#[doc(hidden)]
30pub use inventory;
31
32// Re-export for macro usage
33#[doc(hidden)]
34pub use serde_json;
35
36// Re-export serde for InertiaProps derive macro
37pub use serde;
38
39// Re-export validator for FormRequest validation
40pub use validator;
41pub use validator::Validate;
42
43// Re-export the proc-macros for compile-time component validation and type safety
44pub use kit_macros::domain_error;
45pub use kit_macros::handler;
46pub use kit_macros::inertia_response;
47pub use kit_macros::injectable;
48pub use kit_macros::InertiaProps;
49pub use kit_macros::redirect;
50pub use kit_macros::request;
51pub use kit_macros::service;
52pub use kit_macros::FormRequest as FormRequestDerive;
53
54#[macro_export]
55macro_rules! json_response {
56    ($($json:tt)+) => {
57        Ok($crate::HttpResponse::json($crate::serde_json::json!($($json)+)))
58    };
59}
60
61#[macro_export]
62macro_rules! text_response {
63    ($text:expr) => {
64        Ok($crate::HttpResponse::text($text))
65    };
66}
67
68/// Register global middleware that runs on every request
69///
70/// Global middleware is registered in `bootstrap.rs` and runs in registration order,
71/// before any route-specific middleware.
72///
73/// # Example
74///
75/// ```rust,ignore
76/// // In bootstrap.rs
77/// use kit::global_middleware;
78/// use crate::middleware;
79///
80/// pub fn register() {
81///     global_middleware!(middleware::LoggingMiddleware);
82///     global_middleware!(middleware::CorsMiddleware);
83/// }
84/// ```
85#[macro_export]
86macro_rules! global_middleware {
87    ($middleware:expr) => {
88        $crate::register_global_middleware($middleware)
89    };
90}
91
92/// Testing utilities for the application container
93///
94/// Provides `TestContainer` for setting up isolated test environments with
95/// fake implementations.
96pub mod testing {
97    pub use crate::container::testing::{TestContainer, TestContainerGuard};
98}