use napi::{bindgen_prelude::*, JsGlobal, JsNull, JsUndefined}; #[napi] fn list_obj_keys(obj: Object) -> Vec { Object::keys(&obj).unwrap() } #[napi] fn create_obj(env: Env) -> Object { let mut obj = env.create_object().unwrap(); obj.set("test", 1).unwrap(); obj } #[napi] fn get_global(env: Env) -> Result { env.get_global() } #[napi] fn get_undefined(env: Env) -> Result { env.get_undefined() } #[napi] fn get_null(env: Env) -> Result { env.get_null() } #[napi(object)] struct AllOptionalObject { pub name: Option, pub age: Option, } #[napi] fn receive_all_optional_object(obj: Option) -> Result<()> { if obj.is_some() { assert!(obj.as_ref().unwrap().name.is_none()); assert!(obj.as_ref().unwrap().age.is_none()); } Ok(()) } #[napi(js_name = "ALIAS")] pub enum AliasedEnum { A, B, } #[napi(object, js_name = "AliasedStruct")] pub struct StructContainsAliasedEnum { pub a: AliasedEnum, pub b: u32, } #[napi] fn fn_received_aliased(mut s: StructContainsAliasedEnum, e: AliasedEnum) { s.a = e; }