typhoon_idl_generator/
plugin.rs1use {
2 crate::visitors::{
3 ContextVisitor, DefineTypeResolver, InstructionResolver, RouterVisitor, SetAccountVisitor,
4 SetErrorsVisitor, SetProgramIdVisitor,
5 },
6 codama::{
7 ApplyTypeModifiersVisitor, ApplyTypeOverridesVisitor, CodamaResult, CombineModulesVisitor,
8 IdentifyFieldTypesVisitor, SetDefaultValuesVisitor, SetProgramMetadataVisitor,
9 },
10 codama_korok_visitors::KorokVisitable,
11 codama_plugin_core::KorokPlugin,
12};
13
14pub struct TyphoonPlugin;
15
16impl KorokPlugin for TyphoonPlugin {
17 fn on_initialized(&self, visitable: &mut dyn KorokVisitable) -> CodamaResult<()> {
18 visitable.accept(&mut RouterVisitor::new())?;
19 Ok(())
20 }
21
22 fn on_fields_set(&self, visitable: &mut dyn KorokVisitable) -> CodamaResult<()> {
23 visitable.accept(&mut IdentifyFieldTypesVisitor::new())?;
25 visitable.accept(&mut ApplyTypeOverridesVisitor::new())?;
26 visitable.accept(&mut ApplyTypeModifiersVisitor::new())?;
27 visitable.accept(&mut SetDefaultValuesVisitor::new())?;
28 Ok(())
29 }
30
31 fn on_program_items_set(&self, visitable: &mut dyn KorokVisitable) -> CodamaResult<()> {
32 visitable.accept(&mut ContextVisitor::new())?;
33 visitable.accept(&mut SetErrorsVisitor::new())?;
34 visitable.accept(&mut SetAccountVisitor::new())?;
35 Ok(())
36 }
37
38 fn on_root_node_set(&self, visitable: &mut dyn KorokVisitable) -> CodamaResult<()> {
39 visitable.accept(&mut SetProgramIdVisitor::new())?;
40 visitable.accept(&mut SetProgramMetadataVisitor::new())?;
41 visitable.accept(&mut CombineModulesVisitor::new())?;
42 visitable.accept(&mut InstructionResolver::new())?;
43 visitable.accept(&mut DefineTypeResolver::new())?;
44 Ok(())
45 }
46}