use serde::{Deserialize, Serialize};
use vize_atelier_core::BindingMetadata;
use vize_carton::String;
use vize_croquis::Croquis;
#[derive(Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SsrCompilerOptions {
#[serde(default)]
pub scope_id: Option<String>,
#[serde(default)]
pub comments: bool,
#[serde(default)]
pub component_name: Option<String>,
#[serde(default)]
pub inline: bool,
#[serde(default)]
pub is_ts: bool,
#[serde(default)]
pub custom_renderer: bool,
#[serde(default)]
pub ssr_css_vars: Option<String>,
#[serde(skip)]
pub binding_metadata: Option<BindingMetadata>,
#[serde(skip)]
pub croquis: Option<Box<Croquis>>,
}
impl Clone for SsrCompilerOptions {
fn clone(&self) -> Self {
Self {
scope_id: self.scope_id.clone(),
comments: self.comments,
component_name: self.component_name.clone(),
inline: self.inline,
is_ts: self.is_ts,
custom_renderer: self.custom_renderer,
ssr_css_vars: self.ssr_css_vars.clone(),
binding_metadata: self.binding_metadata.clone(),
croquis: None,
}
}
}
#[cfg(test)]
mod tests {
use super::SsrCompilerOptions;
#[test]
fn test_default_options() {
let opts = SsrCompilerOptions::default();
assert!(opts.scope_id.is_none());
assert!(!opts.comments);
assert!(opts.component_name.is_none());
assert!(!opts.inline);
assert!(!opts.is_ts);
assert!(opts.ssr_css_vars.is_none());
assert!(opts.binding_metadata.is_none());
assert!(opts.croquis.is_none());
}
}