mod analyze_script_bindings;
mod context;
mod define_emits;
mod define_expose;
mod define_model;
mod define_options;
mod define_props;
mod define_props_destructure;
mod define_slots;
mod import_usage_check;
pub(crate) mod type_resolution;
mod utils;
pub use analyze_script_bindings::{analyze_script_bindings, get_object_or_array_expression_keys};
pub use context::ScriptCompileContext;
pub use define_emits::{
extract_runtime_emits, gen_runtime_emits, process_define_emits, DefineEmitsResult,
};
pub use define_props_destructure::{
gen_props_access_exp, process_props_destructure, transform_destructured_props,
PropsDestructureBinding, PropsDestructuredBindings,
};
pub use import_usage_check::{
is_used_in_template, resolve_template_used_identifiers, resolve_template_v_model_identifiers,
TemplateUsedIdentifiers,
};
pub(crate) use type_resolution::{
build_interface_type_source, resolve_type_args, resolve_type_to_object_body,
};
pub use utils::{
get_escaped_prop_name, is_compiler_macro_line, is_valid_identifier, MacroCall,
ScriptSetupMacros,
};
pub use define_emits::DEFINE_EMITS;
pub use define_expose::DEFINE_EXPOSE;
pub use define_model::DEFINE_MODEL;
pub use define_options::DEFINE_OPTIONS;
pub use define_props::{DEFINE_PROPS, WITH_DEFAULTS};
pub use define_slots::DEFINE_SLOTS;
use crate::types::BindingMetadata;
use vize_croquis::analysis::Croquis as CroquisSummary;
use vize_croquis::script_parser::ScriptParseResult;
pub fn analyze_script_setup(content: &str) -> BindingMetadata {
let mut ctx = ScriptCompileContext::new(content);
ctx.analyze();
ctx.bindings
}
pub fn extract_macros(content: &str) -> ScriptSetupMacros {
let mut ctx = ScriptCompileContext::new(content);
ctx.extract_all_macros();
ctx.macros
}
#[inline]
pub fn analyze_script_setup_fast(content: &str) -> ScriptParseResult {
vize_croquis::script_parser::parse_script_setup(content)
}
pub fn analyze_script_setup_to_summary(content: &str) -> CroquisSummary {
let result = vize_croquis::script_parser::parse_script_setup(content);
let mut summary = CroquisSummary::new();
summary.bindings = result.bindings;
summary.macros = result.macros;
summary.reactivity = result.reactivity;
summary.type_exports = result.type_exports;
summary.invalid_exports = result.invalid_exports;
summary
}
#[inline]
pub fn analyze_script_setup_full(content: &str) -> CroquisSummary {
let mut ctx = ScriptCompileContext::new(content);
ctx.analyze();
ctx.to_analysis_summary()
}