pub mod auth;
#[cfg(feature = "codegen")]
pub mod backend_generator;
#[cfg(feature = "codegen")]
pub mod client_generator;
pub mod datasource;
pub mod error;
pub mod manifest;
#[cfg(feature = "codegen")]
pub mod plugins;
pub mod response;
pub mod runtime;
pub mod template;
pub mod types;
pub mod async_trait;
pub use async_trait::TokenResolver;
pub use auth::*;
#[cfg(feature = "codegen")]
pub use backend_generator::{
BackendGenerationMetadata, BackendGenerationResult, BackendGeneratorConfig,
BackendGeneratorPlugin, BackendGeneratorPluginConfig, Complexity, TodoCategory, TodoItem,
};
#[cfg(feature = "codegen")]
pub use client_generator::{
ClientGenerationResult, ClientGeneratorConfig, ClientGeneratorPlugin,
ClientGeneratorPluginConfig, GeneratedFile, GenerationMetadata, OpenApiSpec,
};
pub use datasource::{
DataConnection, DataQuery, DataResult, DataSourcePlugin, DataSourcePluginConfig,
};
#[cfg(feature = "codegen")]
pub use plugins::{ReactClientGenerator, VueClientGenerator};
pub use response::{
ResponseData, ResponseModifierConfig, ResponseModifierPlugin, ResponsePlugin,
ResponsePluginConfig, ResponseRequest,
};
pub use template::*;
pub use types::*;
pub use datasource::helpers as datasource_helpers;
pub use response::helpers as response_helpers;
pub use types::{
PluginAuthor, PluginHealth, PluginId, PluginInfo, PluginManifest, PluginMetadata, PluginState,
PluginVersion,
};
pub use types::{PluginError, PluginInstance, RequestMetadata, ResolutionContext, Result};
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_plugin_id() {
let id = PluginId::new("test-plugin");
assert_eq!(id.as_str(), "test-plugin");
}
#[test]
fn test_plugin_version() {
let version = PluginVersion::new(1, 2, 3);
assert_eq!(version.to_string(), "1.2.3");
}
#[test]
fn test_plugin_info() {
let id = PluginId::new("example");
let version = PluginVersion::new(1, 0, 0);
let author = PluginAuthor {
name: "Author".to_string(),
email: Some("author@example.com".to_string()),
};
let info = PluginInfo {
id: id.clone(),
version: version.clone(),
name: "Example Plugin".to_string(),
description: "Description".to_string(),
author: author.clone(),
};
assert_eq!(info.id.as_str(), "example");
assert_eq!(info.name, "Example Plugin");
assert_eq!(info.description, "Description");
assert_eq!(info.author.name, "Author");
assert_eq!(info.author.email, Some("author@example.com".to_string()));
}
#[test]
fn test_resolution_context() {
let context = ResolutionContext::new();
assert!(!context.environment.is_empty());
assert!(context.request_context.is_none());
}
#[test]
fn test_request_metadata() {
let request =
RequestMetadata::new("GET", "/api/users").with_header("Accept", "application/json");
assert_eq!(request.method, "GET");
assert_eq!(request.path, "/api/users");
assert_eq!(request.headers.get("Accept"), Some(&"application/json".to_string()));
}
}
#[cfg(all(test, feature = "codegen"))]
mod client_generator_tests;