barbacane_plugin_sdk/lib.rs
1//! SDK for building Barbacane WASM plugins.
2//!
3//! Provides `Request`, `Response`, and `Action` types, along with
4//! `#[barbacane_middleware]` and `#[barbacane_dispatcher]` macros
5//! that generate the required WASM export glue.
6//!
7//! # Example
8//!
9//! ```ignore
10//! use barbacane_plugin_sdk::prelude::*;
11//!
12//! #[barbacane_middleware]
13//! #[derive(serde::Deserialize)]
14//! struct RateLimiter {
15//! quota: u32,
16//! window: u32,
17//! }
18//!
19//! impl RateLimiter {
20//! fn on_request(&mut self, req: Request) -> Action<Request> {
21//! Action::Continue(req)
22//! }
23//!
24//! fn on_response(&mut self, resp: Response) -> Response {
25//! resp
26//! }
27//! }
28//! ```
29
30pub mod body;
31pub mod types;
32
33/// Re-export proc macros for plugin development.
34pub use barbacane_plugin_macros::{barbacane_dispatcher, barbacane_middleware};
35
36pub mod prelude {
37 pub use crate::body::*;
38 pub use crate::types::*;
39 pub use crate::{barbacane_dispatcher, barbacane_middleware};
40}