use proc_macro2::Ident; use syn::{Attribute, Expr, Type}; #[derive(Debug, Clone)] pub struct NapiFn { pub name: Ident, pub js_name: String, pub attrs: Vec, pub args: Vec, pub ret: Option, pub is_ret_result: bool, pub is_async: bool, pub fn_self: Option, pub kind: FnKind, pub vis: syn::Visibility, pub parent: Option, pub strict: bool, pub js_mod: Option, pub ts_args_type: Option, pub ts_return_type: Option, pub comments: Vec, } #[derive(Debug, Clone)] pub struct CallbackArg { pub pat: Box, pub args: Vec, pub ret: Option, } #[derive(Debug, Clone)] pub enum NapiFnArgKind { PatType(Box), Callback(Box), } #[derive(Debug, Clone, PartialEq)] pub enum FnKind { Normal, Constructor, Factory, Getter, Setter, } #[derive(Debug, Clone)] pub enum FnSelf { Value, Ref, MutRef, } #[derive(Debug, Clone)] pub struct NapiStruct { pub name: Ident, pub js_name: String, pub vis: syn::Visibility, pub fields: Vec, pub is_tuple: bool, pub kind: NapiStructKind, pub js_mod: Option, pub comments: Vec, } #[derive(Debug, Clone, PartialEq)] pub enum NapiStructKind { None, Constructor, Object, } #[derive(Debug, Clone)] pub struct NapiStructField { pub name: syn::Member, pub js_name: String, pub ty: syn::Type, pub getter: bool, pub setter: bool, pub comments: Vec, } #[derive(Debug, Clone)] pub struct NapiImpl { pub name: Ident, pub js_name: String, pub items: Vec, pub task_output_type: Option, pub js_mod: Option, pub comments: Vec, } #[derive(Debug, Clone)] pub struct NapiEnum { pub name: Ident, pub js_name: String, pub variants: Vec, pub js_mod: Option, pub comments: Vec, } #[derive(Debug, Clone)] pub struct NapiEnumVariant { pub name: Ident, pub val: i32, pub comments: Vec, } #[derive(Debug, Clone)] pub struct NapiConst { pub name: Ident, pub js_name: String, pub type_name: Type, pub value: Expr, pub js_mod: Option, pub comments: Vec, } #[derive(Debug, Clone)] pub struct NapiMod { pub name: Ident, pub js_name: String, }