use proc_macro::TokenStream;
mod controller;
mod debug;
mod groups;
mod http_methods;
mod inject;
mod middleware;
mod module;
mod params;
mod routes;
mod utils;
#[cfg(test)]
mod test;
#[proc_macro_attribute]
pub fn controller(args: TokenStream, input: TokenStream) -> TokenStream {
controller::controller_impl(args, input)
}
#[proc_macro_attribute]
pub fn get(args: TokenStream, input: TokenStream) -> TokenStream {
http_methods::get_impl(args, input)
}
#[proc_macro_attribute]
pub fn post(args: TokenStream, input: TokenStream) -> TokenStream {
http_methods::post_impl(args, input)
}
#[proc_macro_attribute]
pub fn put(args: TokenStream, input: TokenStream) -> TokenStream {
http_methods::put_impl(args, input)
}
#[proc_macro_attribute]
pub fn delete(args: TokenStream, input: TokenStream) -> TokenStream {
http_methods::delete_impl(args, input)
}
#[proc_macro_attribute]
pub fn patch(args: TokenStream, input: TokenStream) -> TokenStream {
http_methods::patch_impl(args, input)
}
#[proc_macro_attribute]
pub fn head(args: TokenStream, input: TokenStream) -> TokenStream {
http_methods::head_impl(args, input)
}
#[proc_macro_attribute]
pub fn options(args: TokenStream, input: TokenStream) -> TokenStream {
http_methods::options_impl(args, input)
}
#[proc_macro_attribute]
pub fn middleware(args: TokenStream, input: TokenStream) -> TokenStream {
middleware::middleware_impl(args, input)
}
#[proc_macro_attribute]
pub fn param(args: TokenStream, input: TokenStream) -> TokenStream {
params::param_impl(args, input)
}
#[proc_macro_attribute]
pub fn body(args: TokenStream, input: TokenStream) -> TokenStream {
params::body_impl(args, input)
}
#[proc_macro_attribute]
pub fn request(args: TokenStream, input: TokenStream) -> TokenStream {
params::request_impl(args, input)
}
#[proc_macro_attribute]
pub fn routes(args: TokenStream, input: TokenStream) -> TokenStream {
routes::routes_impl(args, input)
}
#[proc_macro_attribute]
pub fn resource(args: TokenStream, input: TokenStream) -> TokenStream {
routes::resource_impl(args, input)
}
#[proc_macro_attribute]
pub fn group(args: TokenStream, input: TokenStream) -> TokenStream {
groups::group_impl(args, input)
}
#[proc_macro_attribute]
pub fn inject(args: TokenStream, input: TokenStream) -> TokenStream {
inject::inject_impl(args, input)
}
#[proc_macro_attribute]
pub fn module(args: TokenStream, input: TokenStream) -> TokenStream {
module::module_impl(args, input)
}
#[proc_macro]
pub fn app(input: TokenStream) -> TokenStream {
module::module_composition_impl(input)
}
#[proc_macro]
pub fn module_composition(input: TokenStream) -> TokenStream {
module::module_composition_impl(input)
}
#[proc_macro]
pub fn demo_module(input: TokenStream) -> TokenStream {
module::demo_dsl_impl(input)
}
#[proc_macro]
pub fn debug_modules(_input: TokenStream) -> TokenStream {
let debug_utils = debug::generate_analysis_macros();
let health_check = debug::generate_health_check_utils();
let visualization = debug::generate_dependency_graph_visualization();
quote::quote! {
#debug_utils
#health_check
#visualization
}
.into()
}