Skip to main content

barbacane_wasm/
lib.rs

1//! WASM plugin runtime for Barbacane API gateway.
2//!
3//! This crate provides the wasmtime-based runtime for loading and executing
4//! WASM plugins (middlewares and dispatchers) according to SPEC-003.
5
6mod body_access;
7pub mod broker;
8pub mod cache;
9mod chain;
10mod circuit_breaker;
11pub mod crypto;
12mod engine;
13mod error;
14mod host;
15mod http_client;
16mod instance;
17pub mod kafka_client;
18mod limits;
19mod manifest;
20pub mod nats_client;
21mod pool;
22pub mod rate_limiter;
23mod schema;
24pub mod secrets;
25#[cfg(test)]
26mod serde_compat;
27mod trap;
28mod validate;
29pub mod version;
30pub mod ws_client;
31
32pub use body_access::BodyAccessControl;
33pub use chain::{
34    execute_on_request, execute_on_request_with_metrics, execute_on_response,
35    execute_on_response_partial, execute_on_response_with_metrics, parse_middleware_output,
36    ChainResult, MetricsCallback, MiddlewareChain, MiddlewareConfig, OnRequestResult,
37};
38pub use engine::WasmEngine;
39pub use error::WasmError;
40pub use instance::{PluginInstance, RequestContext, StreamEvent};
41pub use limits::PluginLimits;
42pub use manifest::{Capabilities, PluginManifest, PluginMeta, PluginType};
43pub use pool::{InstanceKey, InstancePool};
44pub use schema::ConfigSchema;
45pub use secrets::{
46    collect_secret_references, is_secret_reference, resolve_all_secrets, resolve_config_secrets,
47    resolve_secret, SecretsError, SecretsStore,
48};
49pub use trap::{TrapContext, TrapResult};
50pub use validate::{validate_exports, validate_imports};
51
52// Rate limiter for host_rate_limit_check
53pub use rate_limiter::{RateLimitResult, RateLimiter, RateLimiterStats};
54
55// Response cache for host_cache_get/set
56pub use cache::{CacheEntry, CacheResult, CacheStats, ResponseCache};
57
58// HTTP client for host_http_call
59pub use circuit_breaker::{CircuitBreaker, CircuitBreakerConfig, CircuitState};
60pub use http_client::{
61    HttpClient, HttpClientConfig, HttpClientError, HttpRequest, HttpResponse, TlsConfig,
62    TlsConfigError,
63};
64
65// Message broker types for event dispatch
66pub use broker::{BrokerError, BrokerMessage, PublishResult};
67
68// Kafka publisher for host_kafka_publish
69pub use kafka_client::KafkaPublisher;
70
71// NATS publisher for host_nats_publish
72pub use nats_client::NatsPublisher;
73
74// WebSocket client for host_ws_upgrade
75pub use ws_client::UpstreamWsStream;
76
77/// Re-export plugin SDK types for convenience.
78pub use barbacane_plugin_sdk::prelude::{Action, Request, Response};