kit_rs/
lib.rs

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