use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AutogenConfig {
#[serde(default = "default_max_variants")]
pub max_variants: usize,
#[serde(default = "default_true")]
pub include_default: bool,
#[serde(default = "default_true")]
pub include_boolean_toggles: bool,
#[serde(default = "default_true")]
pub include_enum_variants: bool,
#[serde(default)]
pub include_boundary_values: bool,
#[serde(default)]
pub include_empty_strings: bool,
}
impl Default for AutogenConfig {
fn default() -> Self {
Self {
max_variants: 20,
include_default: true,
include_boolean_toggles: true,
include_enum_variants: true,
include_boundary_values: false,
include_empty_strings: false,
}
}
}
fn default_max_variants() -> usize {
20
}
fn default_true() -> bool {
true
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PropDefinition {
pub name: String,
pub prop_type: String,
pub required: bool,
pub default_value: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GeneratedVariant {
pub name: String,
pub is_default: bool,
pub props: serde_json::Map<String, serde_json::Value>,
pub description: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AutogenOutput {
pub variants: Vec<GeneratedVariant>,
pub art_file_content: String,
pub component_name: String,
}