kit_rs/
lib.rs

1pub mod cache;
2pub mod config;
3pub mod container;
4pub mod database;
5pub mod error;
6pub mod http;
7pub mod inertia;
8pub mod middleware;
9pub mod routing;
10pub mod server;
11pub mod testing;
12
13pub use cache::{Cache, CacheConfig, CacheStore, InMemoryCache, RedisCache};
14pub use config::{env, env_optional, env_required, AppConfig, Config, Environment, ServerConfig};
15pub use container::{App, Container};
16pub use database::{
17    AutoRouteBinding, Database, DatabaseConfig, DatabaseType, DbConnection, Model, ModelMut,
18    RouteBinding, DB,
19};
20pub use error::{AppError, FrameworkError, HttpError, ValidationErrors};
21pub use http::{
22    json, text, FormRequest, FromParam, FromRequest, HttpResponse, Redirect, Request, Response,
23    ResponseExt,
24};
25pub use inertia::{InertiaConfig, InertiaContext, InertiaResponse};
26pub use middleware::{
27    register_global_middleware, Middleware, MiddlewareFuture, MiddlewareRegistry, Next,
28};
29pub use routing::{
30    route, validate_route_path,
31    // Internal functions used by macros (hidden from docs)
32    __delete_impl, __fallback_impl, __get_impl, __post_impl, __put_impl,
33    FallbackDefBuilder, GroupBuilder, GroupDef, GroupItem, GroupRoute, GroupRouter,
34    IntoGroupItem, RouteBuilder, RouteDefBuilder, Router,
35};
36pub use server::Server;
37
38// Re-export async_trait for middleware implementations
39pub use async_trait::async_trait;
40
41// Re-export inventory for #[service(ConcreteType)] macro
42#[doc(hidden)]
43pub use inventory;
44
45// Re-export for macro usage
46#[doc(hidden)]
47pub use serde_json;
48
49// Re-export serde for InertiaProps derive macro
50pub use serde;
51
52// Re-export validator for FormRequest validation
53pub use validator;
54pub use validator::Validate;
55
56// Re-export the proc-macros for compile-time component validation and type safety
57pub use kit_macros::domain_error;
58pub use kit_macros::handler;
59pub use kit_macros::inertia_response;
60pub use kit_macros::injectable;
61pub use kit_macros::redirect;
62pub use kit_macros::request;
63pub use kit_macros::service;
64pub use kit_macros::FormRequest as FormRequestDerive;
65pub use kit_macros::InertiaProps;
66pub use kit_macros::kit_test;
67
68// Re-export Jest-like testing macros
69pub use kit_macros::describe;
70pub use kit_macros::test;
71
72#[macro_export]
73macro_rules! json_response {
74    ($($json:tt)+) => {
75        Ok($crate::HttpResponse::json($crate::serde_json::json!($($json)+)))
76    };
77}
78
79#[macro_export]
80macro_rules! text_response {
81    ($text:expr) => {
82        Ok($crate::HttpResponse::text($text))
83    };
84}
85
86/// Register global middleware that runs on every request
87///
88/// Global middleware is registered in `bootstrap.rs` and runs in registration order,
89/// before any route-specific middleware.
90///
91/// # Example
92///
93/// ```rust,ignore
94/// // In bootstrap.rs
95/// use kit::global_middleware;
96/// use crate::middleware;
97///
98/// pub fn register() {
99///     global_middleware!(middleware::LoggingMiddleware);
100///     global_middleware!(middleware::CorsMiddleware);
101/// }
102/// ```
103#[macro_export]
104macro_rules! global_middleware {
105    ($middleware:expr) => {
106        $crate::register_global_middleware($middleware)
107    };
108}
109
110/// Create an expectation for fluent assertions
111///
112/// # Example
113///
114/// ```rust,ignore
115/// use kit::expect;
116///
117/// expect!(actual).to_equal(expected);
118/// expect!(result).to_be_ok();
119/// expect!(vec).to_have_length(3);
120/// ```
121///
122/// On failure, shows clear output:
123/// ```text
124/// Test: "returns all todos"
125///   at src/actions/todo_action.rs:25
126///
127///   expect!(actual).to_equal(expected)
128///
129///   Expected: 0
130///   Received: 3
131/// ```
132#[macro_export]
133macro_rules! expect {
134    ($value:expr) => {
135        $crate::testing::Expect::new($value, concat!(file!(), ":", line!()))
136    };
137}