use r2x_manifest::types::SchemaFields;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone)]
pub struct EntryPointInfo {
pub(crate) name: String,
pub(crate) module: String,
pub(crate) symbol: String,
pub(crate) section: String,
}
impl EntryPointInfo {
pub(crate) fn is_class(&self) -> bool {
self.symbol.chars().next().is_some_and(|c| c.is_uppercase())
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConfigSpec {
pub(crate) module: String,
pub(crate) name: String,
#[serde(default)]
pub(crate) fields: Vec<ConfigField>,
#[serde(default, skip_serializing_if = "SchemaFields::is_empty")]
pub(crate) config_schema: SchemaFields,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConfigField {
pub(crate) name: String,
pub(crate) types: Vec<String>,
pub(crate) default: Option<String>,
pub(crate) required: bool,
pub(crate) description: Option<String>,
}