fix(napi-derive): tuple object and enum (#2227)

* Fix tuple struct

* Add testcase
This commit is contained in:
CPunisher 2024-08-23 14:10:39 +08:00 committed by GitHub
parent e22158306a
commit 249c27e06d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 209 additions and 182 deletions

View File

@ -414,9 +414,10 @@ impl NapiStruct {
);
}
syn::Member::Unnamed(i) => {
field_destructions.push(quote! { arg #i });
let arg_name = format_ident!("arg{}", i);
field_destructions.push(quote! { #arg_name });
field_conversions.push(
quote! { <#ty as napi::bindgen_prelude::ToNapiValue>::to_napi_value(env, arg #i)? },
quote! { <#ty as napi::bindgen_prelude::ToNapiValue>::to_napi_value(env, #arg_name)? },
);
}
}
@ -542,30 +543,31 @@ impl NapiStruct {
}
}
syn::Member::Unnamed(i) => {
field_destructions.push(quote! { arg #i });
let arg_name = format_ident!("arg{}", i);
field_destructions.push(quote! { #arg_name });
if is_optional_field {
obj_field_setters.push(match self.use_nullable {
false => quote! {
if arg #1.is_some() {
obj.set(#field_js_name, arg #i)?;
if #arg_name.is_some() {
obj.set(#field_js_name, #arg_name)?;
}
},
true => quote! {
if let Some(arg #i) = arg #i {
obj.set(#field_js_name, arg #i)?;
if let Some(#arg_name) = #arg_name {
obj.set(#field_js_name, #arg_name)?;
} else {
obj.set(#field_js_name, napi::bindgen_prelude::Null)?;
}
},
});
} else {
obj_field_setters.push(quote! { obj.set(#field_js_name, arg #1)?; });
obj_field_setters.push(quote! { obj.set(#field_js_name, #arg_name)?; });
}
if is_optional_field && !self.use_nullable {
obj_field_getters.push(quote! { let arg #i: #ty = obj.get(#field_js_name)?; });
obj_field_getters.push(quote! { let #arg_name: #ty = obj.get(#field_js_name)?; });
} else {
obj_field_getters.push(quote! {
let arg #i: #ty = obj.get(#field_js_name)?.ok_or_else(|| napi::bindgen_prelude::Error::new(
let #arg_name: #ty = obj.get(#field_js_name)?.ok_or_else(|| napi::bindgen_prelude::Error::new(
napi::bindgen_prelude::Status::InvalidArg,
format!("Missing field `{}`", #field_js_name),
))?;
@ -922,30 +924,31 @@ impl NapiStruct {
}
}
syn::Member::Unnamed(i) => {
field_destructions.push(quote! { arg #i });
let arg_name = format_ident!("arg{}", i);
field_destructions.push(quote! { #arg_name });
if is_optional_field {
obj_field_setters.push(match self.use_nullable {
false => quote! {
if arg #1.is_some() {
obj.set(#field_js_name, arg #i)?;
if #arg_name.is_some() {
obj.set(#field_js_name, #arg_name)?;
}
},
true => quote! {
if let Some(arg #i) = arg #i {
obj.set(#field_js_name, arg #i)?;
if let Some(#arg_name) = #arg_name {
obj.set(#field_js_name, #arg_name)?;
} else {
obj.set(#field_js_name, napi::bindgen_prelude::Null)?;
}
},
});
} else {
obj_field_setters.push(quote! { obj.set(#field_js_name, arg #1)?; });
obj_field_setters.push(quote! { obj.set(#field_js_name, #arg_name)?; });
}
if is_optional_field && !self.use_nullable {
obj_field_getters.push(quote! { let arg #i: #ty = obj.get(#field_js_name)?; });
obj_field_getters.push(quote! { let #arg_name: #ty = obj.get(#field_js_name)?; });
} else {
obj_field_getters.push(quote! {
let arg #i: #ty = obj.get(#field_js_name)?.ok_or_else(|| napi::bindgen_prelude::Error::new(
let #arg_name: #ty = obj.get(#field_js_name)?.ok_or_else(|| napi::bindgen_prelude::Error::new(
napi::bindgen_prelude::Status::InvalidArg,
format!("Missing field `{}`", #field_js_name),
))?;

View File

@ -704,6 +704,7 @@ Generated by [AVA](https://avajs.dev).
| { type2: 'Hello' }␊
| { type2: 'Greeting', name: string }␊
| { type2: 'Birthday', name: string, age: number }␊
| { type2: 'Tuple', field0: number, field1: number }␊
export declare function sumBtreeMapping(nums: Record<string, number>): number␊
@ -754,6 +755,11 @@ Generated by [AVA](https://avajs.dev).
typeOverrideOptional?: object␊
}␊
export interface TupleObject {␊
field0: number␊
field1: number␊
}␊
export declare function u16ArrayToArray(input: Uint16Array): Array<number>
export declare function u32ArrayToArray(input: Uint32Array): Array<number>

View File

@ -265,9 +265,15 @@ test('structured enum', (t) => {
name: 'Napi-rs',
age: 10,
}
const tuple: StructuredKind = {
type2: 'Tuple',
field0: 1,
field1: 2,
}
t.deepEqual(hello, validateStructuredEnum(hello))
t.deepEqual(greeting, validateStructuredEnum(greeting))
t.deepEqual(birthday, validateStructuredEnum(birthday))
t.deepEqual(tuple, validateStructuredEnum(tuple))
t.throws(() => validateStructuredEnum({ type2: 'unknown' } as any))
t.throws(() => validateStructuredEnum({ type2: 'Greeting' } as any))
})

View File

@ -282,88 +282,89 @@ function __napi_rs_initialize_modules(__napiInstance) {
__napiInstance.exports['__napi_register__object_get_named_property_should_perform_typecheck_273']?.()
__napiInstance.exports['__napi_register__ObjectOnlyToJs_struct_274']?.()
__napiInstance.exports['__napi_register__return_object_only_to_js_275']?.()
__napiInstance.exports['__napi_register__async_plus_100_276']?.()
__napiInstance.exports['__napi_register__call_then_on_promise_277']?.()
__napiInstance.exports['__napi_register__call_catch_on_promise_278']?.()
__napiInstance.exports['__napi_register__call_finally_on_promise_279']?.()
__napiInstance.exports['__napi_register__JsRepo_struct_280']?.()
__napiInstance.exports['__napi_register__JsRepo_impl_283']?.()
__napiInstance.exports['__napi_register__JsRemote_struct_284']?.()
__napiInstance.exports['__napi_register__JsRemote_impl_287']?.()
__napiInstance.exports['__napi_register__CSSRuleList_struct_288']?.()
__napiInstance.exports['__napi_register__CSSRuleList_impl_292']?.()
__napiInstance.exports['__napi_register__CSSStyleSheet_struct_293']?.()
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_struct_294']?.()
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_impl_296']?.()
__napiInstance.exports['__napi_register__CSSStyleSheet_impl_300']?.()
__napiInstance.exports['__napi_register__PackageJson_struct_301']?.()
__napiInstance.exports['__napi_register__read_package_json_302']?.()
__napiInstance.exports['__napi_register__get_package_json_name_303']?.()
__napiInstance.exports['__napi_register__test_serde_roundtrip_304']?.()
__napiInstance.exports['__napi_register__test_serde_big_number_precision_305']?.()
__napiInstance.exports['__napi_register__test_serde_buffer_bytes_306']?.()
__napiInstance.exports['__napi_register__return_from_shared_crate_307']?.()
__napiInstance.exports['__napi_register__contains_308']?.()
__napiInstance.exports['__napi_register__concat_str_309']?.()
__napiInstance.exports['__napi_register__concat_utf16_310']?.()
__napiInstance.exports['__napi_register__concat_latin1_311']?.()
__napiInstance.exports['__napi_register__roundtrip_str_312']?.()
__napiInstance.exports['__napi_register__set_symbol_in_obj_313']?.()
__napiInstance.exports['__napi_register__create_symbol_314']?.()
__napiInstance.exports['__napi_register__create_symbol_for_315']?.()
__napiInstance.exports['__napi_register__DelaySum_impl_316']?.()
__napiInstance.exports['__napi_register__without_abort_controller_317']?.()
__napiInstance.exports['__napi_register__with_abort_controller_318']?.()
__napiInstance.exports['__napi_register__AsyncTaskVoidReturn_impl_319']?.()
__napiInstance.exports['__napi_register__async_task_void_return_320']?.()
__napiInstance.exports['__napi_register__AsyncTaskOptionalReturn_impl_321']?.()
__napiInstance.exports['__napi_register__async_task_optional_return_322']?.()
__napiInstance.exports['__napi_register__AsyncTaskReadFile_impl_323']?.()
__napiInstance.exports['__napi_register__async_task_read_file_324']?.()
__napiInstance.exports['__napi_register__call_threadsafe_function_325']?.()
__napiInstance.exports['__napi_register__call_long_threadsafe_function_326']?.()
__napiInstance.exports['__napi_register__threadsafe_function_throw_error_327']?.()
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_328']?.()
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_error_329']?.()
__napiInstance.exports['__napi_register__threadsafe_function_closure_capture_330']?.()
__napiInstance.exports['__napi_register__tsfn_call_with_callback_331']?.()
__napiInstance.exports['__napi_register__tsfn_async_call_332']?.()
__napiInstance.exports['__napi_register__accept_threadsafe_function_333']?.()
__napiInstance.exports['__napi_register__accept_threadsafe_function_fatal_334']?.()
__napiInstance.exports['__napi_register__accept_threadsafe_function_tuple_args_335']?.()
__napiInstance.exports['__napi_register__tsfn_return_promise_336']?.()
__napiInstance.exports['__napi_register__tsfn_return_promise_timeout_337']?.()
__napiInstance.exports['__napi_register__tsfn_throw_from_js_338']?.()
__napiInstance.exports['__napi_register__spawn_thread_in_thread_339']?.()
__napiInstance.exports['__napi_register__Pet_struct_340']?.()
__napiInstance.exports['__napi_register__tsfn_in_either_341']?.()
__napiInstance.exports['__napi_register__get_buffer_342']?.()
__napiInstance.exports['__napi_register__append_buffer_343']?.()
__napiInstance.exports['__napi_register__get_empty_buffer_344']?.()
__napiInstance.exports['__napi_register__convert_u32_array_345']?.()
__napiInstance.exports['__napi_register__create_external_typed_array_346']?.()
__napiInstance.exports['__napi_register__mutate_typed_array_347']?.()
__napiInstance.exports['__napi_register__deref_uint8_array_348']?.()
__napiInstance.exports['__napi_register__buffer_pass_through_349']?.()
__napiInstance.exports['__napi_register__array_buffer_pass_through_350']?.()
__napiInstance.exports['__napi_register__accept_slice_351']?.()
__napiInstance.exports['__napi_register__accept_arraybuffer_352']?.()
__napiInstance.exports['__napi_register__u8_array_to_array_353']?.()
__napiInstance.exports['__napi_register__i8_array_to_array_354']?.()
__napiInstance.exports['__napi_register__u16_array_to_array_355']?.()
__napiInstance.exports['__napi_register__i16_array_to_array_356']?.()
__napiInstance.exports['__napi_register__u32_array_to_array_357']?.()
__napiInstance.exports['__napi_register__i32_array_to_array_358']?.()
__napiInstance.exports['__napi_register__f32_array_to_array_359']?.()
__napiInstance.exports['__napi_register__f64_array_to_array_360']?.()
__napiInstance.exports['__napi_register__u64_array_to_array_361']?.()
__napiInstance.exports['__napi_register__i64_array_to_array_362']?.()
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_363']?.()
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_and_buffer_slice_364']?.()
__napiInstance.exports['__napi_register__AsyncBuffer_impl_365']?.()
__napiInstance.exports['__napi_register__async_reduce_buffer_366']?.()
__napiInstance.exports['__napi_register__async_buffer_to_array_367']?.()
__napiInstance.exports['__napi_register__u_init8_array_from_string_368']?.()
__napiInstance.exports['__napi_register__TupleObject_struct_276']?.()
__napiInstance.exports['__napi_register__async_plus_100_277']?.()
__napiInstance.exports['__napi_register__call_then_on_promise_278']?.()
__napiInstance.exports['__napi_register__call_catch_on_promise_279']?.()
__napiInstance.exports['__napi_register__call_finally_on_promise_280']?.()
__napiInstance.exports['__napi_register__JsRepo_struct_281']?.()
__napiInstance.exports['__napi_register__JsRepo_impl_284']?.()
__napiInstance.exports['__napi_register__JsRemote_struct_285']?.()
__napiInstance.exports['__napi_register__JsRemote_impl_288']?.()
__napiInstance.exports['__napi_register__CSSRuleList_struct_289']?.()
__napiInstance.exports['__napi_register__CSSRuleList_impl_293']?.()
__napiInstance.exports['__napi_register__CSSStyleSheet_struct_294']?.()
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_struct_295']?.()
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_impl_297']?.()
__napiInstance.exports['__napi_register__CSSStyleSheet_impl_301']?.()
__napiInstance.exports['__napi_register__PackageJson_struct_302']?.()
__napiInstance.exports['__napi_register__read_package_json_303']?.()
__napiInstance.exports['__napi_register__get_package_json_name_304']?.()
__napiInstance.exports['__napi_register__test_serde_roundtrip_305']?.()
__napiInstance.exports['__napi_register__test_serde_big_number_precision_306']?.()
__napiInstance.exports['__napi_register__test_serde_buffer_bytes_307']?.()
__napiInstance.exports['__napi_register__return_from_shared_crate_308']?.()
__napiInstance.exports['__napi_register__contains_309']?.()
__napiInstance.exports['__napi_register__concat_str_310']?.()
__napiInstance.exports['__napi_register__concat_utf16_311']?.()
__napiInstance.exports['__napi_register__concat_latin1_312']?.()
__napiInstance.exports['__napi_register__roundtrip_str_313']?.()
__napiInstance.exports['__napi_register__set_symbol_in_obj_314']?.()
__napiInstance.exports['__napi_register__create_symbol_315']?.()
__napiInstance.exports['__napi_register__create_symbol_for_316']?.()
__napiInstance.exports['__napi_register__DelaySum_impl_317']?.()
__napiInstance.exports['__napi_register__without_abort_controller_318']?.()
__napiInstance.exports['__napi_register__with_abort_controller_319']?.()
__napiInstance.exports['__napi_register__AsyncTaskVoidReturn_impl_320']?.()
__napiInstance.exports['__napi_register__async_task_void_return_321']?.()
__napiInstance.exports['__napi_register__AsyncTaskOptionalReturn_impl_322']?.()
__napiInstance.exports['__napi_register__async_task_optional_return_323']?.()
__napiInstance.exports['__napi_register__AsyncTaskReadFile_impl_324']?.()
__napiInstance.exports['__napi_register__async_task_read_file_325']?.()
__napiInstance.exports['__napi_register__call_threadsafe_function_326']?.()
__napiInstance.exports['__napi_register__call_long_threadsafe_function_327']?.()
__napiInstance.exports['__napi_register__threadsafe_function_throw_error_328']?.()
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_329']?.()
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_error_330']?.()
__napiInstance.exports['__napi_register__threadsafe_function_closure_capture_331']?.()
__napiInstance.exports['__napi_register__tsfn_call_with_callback_332']?.()
__napiInstance.exports['__napi_register__tsfn_async_call_333']?.()
__napiInstance.exports['__napi_register__accept_threadsafe_function_334']?.()
__napiInstance.exports['__napi_register__accept_threadsafe_function_fatal_335']?.()
__napiInstance.exports['__napi_register__accept_threadsafe_function_tuple_args_336']?.()
__napiInstance.exports['__napi_register__tsfn_return_promise_337']?.()
__napiInstance.exports['__napi_register__tsfn_return_promise_timeout_338']?.()
__napiInstance.exports['__napi_register__tsfn_throw_from_js_339']?.()
__napiInstance.exports['__napi_register__spawn_thread_in_thread_340']?.()
__napiInstance.exports['__napi_register__Pet_struct_341']?.()
__napiInstance.exports['__napi_register__tsfn_in_either_342']?.()
__napiInstance.exports['__napi_register__get_buffer_343']?.()
__napiInstance.exports['__napi_register__append_buffer_344']?.()
__napiInstance.exports['__napi_register__get_empty_buffer_345']?.()
__napiInstance.exports['__napi_register__convert_u32_array_346']?.()
__napiInstance.exports['__napi_register__create_external_typed_array_347']?.()
__napiInstance.exports['__napi_register__mutate_typed_array_348']?.()
__napiInstance.exports['__napi_register__deref_uint8_array_349']?.()
__napiInstance.exports['__napi_register__buffer_pass_through_350']?.()
__napiInstance.exports['__napi_register__array_buffer_pass_through_351']?.()
__napiInstance.exports['__napi_register__accept_slice_352']?.()
__napiInstance.exports['__napi_register__accept_arraybuffer_353']?.()
__napiInstance.exports['__napi_register__u8_array_to_array_354']?.()
__napiInstance.exports['__napi_register__i8_array_to_array_355']?.()
__napiInstance.exports['__napi_register__u16_array_to_array_356']?.()
__napiInstance.exports['__napi_register__i16_array_to_array_357']?.()
__napiInstance.exports['__napi_register__u32_array_to_array_358']?.()
__napiInstance.exports['__napi_register__i32_array_to_array_359']?.()
__napiInstance.exports['__napi_register__f32_array_to_array_360']?.()
__napiInstance.exports['__napi_register__f64_array_to_array_361']?.()
__napiInstance.exports['__napi_register__u64_array_to_array_362']?.()
__napiInstance.exports['__napi_register__i64_array_to_array_363']?.()
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_364']?.()
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_and_buffer_slice_365']?.()
__napiInstance.exports['__napi_register__AsyncBuffer_impl_366']?.()
__napiInstance.exports['__napi_register__async_reduce_buffer_367']?.()
__napiInstance.exports['__napi_register__async_buffer_to_array_368']?.()
__napiInstance.exports['__napi_register__u_init8_array_from_string_369']?.()
}
export const Animal = __napiModule.exports.Animal
export const AnimalWithDefaultConstructor = __napiModule.exports.AnimalWithDefaultConstructor

View File

@ -306,88 +306,89 @@ function __napi_rs_initialize_modules(__napiInstance) {
__napiInstance.exports['__napi_register__object_get_named_property_should_perform_typecheck_273']?.()
__napiInstance.exports['__napi_register__ObjectOnlyToJs_struct_274']?.()
__napiInstance.exports['__napi_register__return_object_only_to_js_275']?.()
__napiInstance.exports['__napi_register__async_plus_100_276']?.()
__napiInstance.exports['__napi_register__call_then_on_promise_277']?.()
__napiInstance.exports['__napi_register__call_catch_on_promise_278']?.()
__napiInstance.exports['__napi_register__call_finally_on_promise_279']?.()
__napiInstance.exports['__napi_register__JsRepo_struct_280']?.()
__napiInstance.exports['__napi_register__JsRepo_impl_283']?.()
__napiInstance.exports['__napi_register__JsRemote_struct_284']?.()
__napiInstance.exports['__napi_register__JsRemote_impl_287']?.()
__napiInstance.exports['__napi_register__CSSRuleList_struct_288']?.()
__napiInstance.exports['__napi_register__CSSRuleList_impl_292']?.()
__napiInstance.exports['__napi_register__CSSStyleSheet_struct_293']?.()
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_struct_294']?.()
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_impl_296']?.()
__napiInstance.exports['__napi_register__CSSStyleSheet_impl_300']?.()
__napiInstance.exports['__napi_register__PackageJson_struct_301']?.()
__napiInstance.exports['__napi_register__read_package_json_302']?.()
__napiInstance.exports['__napi_register__get_package_json_name_303']?.()
__napiInstance.exports['__napi_register__test_serde_roundtrip_304']?.()
__napiInstance.exports['__napi_register__test_serde_big_number_precision_305']?.()
__napiInstance.exports['__napi_register__test_serde_buffer_bytes_306']?.()
__napiInstance.exports['__napi_register__return_from_shared_crate_307']?.()
__napiInstance.exports['__napi_register__contains_308']?.()
__napiInstance.exports['__napi_register__concat_str_309']?.()
__napiInstance.exports['__napi_register__concat_utf16_310']?.()
__napiInstance.exports['__napi_register__concat_latin1_311']?.()
__napiInstance.exports['__napi_register__roundtrip_str_312']?.()
__napiInstance.exports['__napi_register__set_symbol_in_obj_313']?.()
__napiInstance.exports['__napi_register__create_symbol_314']?.()
__napiInstance.exports['__napi_register__create_symbol_for_315']?.()
__napiInstance.exports['__napi_register__DelaySum_impl_316']?.()
__napiInstance.exports['__napi_register__without_abort_controller_317']?.()
__napiInstance.exports['__napi_register__with_abort_controller_318']?.()
__napiInstance.exports['__napi_register__AsyncTaskVoidReturn_impl_319']?.()
__napiInstance.exports['__napi_register__async_task_void_return_320']?.()
__napiInstance.exports['__napi_register__AsyncTaskOptionalReturn_impl_321']?.()
__napiInstance.exports['__napi_register__async_task_optional_return_322']?.()
__napiInstance.exports['__napi_register__AsyncTaskReadFile_impl_323']?.()
__napiInstance.exports['__napi_register__async_task_read_file_324']?.()
__napiInstance.exports['__napi_register__call_threadsafe_function_325']?.()
__napiInstance.exports['__napi_register__call_long_threadsafe_function_326']?.()
__napiInstance.exports['__napi_register__threadsafe_function_throw_error_327']?.()
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_328']?.()
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_error_329']?.()
__napiInstance.exports['__napi_register__threadsafe_function_closure_capture_330']?.()
__napiInstance.exports['__napi_register__tsfn_call_with_callback_331']?.()
__napiInstance.exports['__napi_register__tsfn_async_call_332']?.()
__napiInstance.exports['__napi_register__accept_threadsafe_function_333']?.()
__napiInstance.exports['__napi_register__accept_threadsafe_function_fatal_334']?.()
__napiInstance.exports['__napi_register__accept_threadsafe_function_tuple_args_335']?.()
__napiInstance.exports['__napi_register__tsfn_return_promise_336']?.()
__napiInstance.exports['__napi_register__tsfn_return_promise_timeout_337']?.()
__napiInstance.exports['__napi_register__tsfn_throw_from_js_338']?.()
__napiInstance.exports['__napi_register__spawn_thread_in_thread_339']?.()
__napiInstance.exports['__napi_register__Pet_struct_340']?.()
__napiInstance.exports['__napi_register__tsfn_in_either_341']?.()
__napiInstance.exports['__napi_register__get_buffer_342']?.()
__napiInstance.exports['__napi_register__append_buffer_343']?.()
__napiInstance.exports['__napi_register__get_empty_buffer_344']?.()
__napiInstance.exports['__napi_register__convert_u32_array_345']?.()
__napiInstance.exports['__napi_register__create_external_typed_array_346']?.()
__napiInstance.exports['__napi_register__mutate_typed_array_347']?.()
__napiInstance.exports['__napi_register__deref_uint8_array_348']?.()
__napiInstance.exports['__napi_register__buffer_pass_through_349']?.()
__napiInstance.exports['__napi_register__array_buffer_pass_through_350']?.()
__napiInstance.exports['__napi_register__accept_slice_351']?.()
__napiInstance.exports['__napi_register__accept_arraybuffer_352']?.()
__napiInstance.exports['__napi_register__u8_array_to_array_353']?.()
__napiInstance.exports['__napi_register__i8_array_to_array_354']?.()
__napiInstance.exports['__napi_register__u16_array_to_array_355']?.()
__napiInstance.exports['__napi_register__i16_array_to_array_356']?.()
__napiInstance.exports['__napi_register__u32_array_to_array_357']?.()
__napiInstance.exports['__napi_register__i32_array_to_array_358']?.()
__napiInstance.exports['__napi_register__f32_array_to_array_359']?.()
__napiInstance.exports['__napi_register__f64_array_to_array_360']?.()
__napiInstance.exports['__napi_register__u64_array_to_array_361']?.()
__napiInstance.exports['__napi_register__i64_array_to_array_362']?.()
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_363']?.()
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_and_buffer_slice_364']?.()
__napiInstance.exports['__napi_register__AsyncBuffer_impl_365']?.()
__napiInstance.exports['__napi_register__async_reduce_buffer_366']?.()
__napiInstance.exports['__napi_register__async_buffer_to_array_367']?.()
__napiInstance.exports['__napi_register__u_init8_array_from_string_368']?.()
__napiInstance.exports['__napi_register__TupleObject_struct_276']?.()
__napiInstance.exports['__napi_register__async_plus_100_277']?.()
__napiInstance.exports['__napi_register__call_then_on_promise_278']?.()
__napiInstance.exports['__napi_register__call_catch_on_promise_279']?.()
__napiInstance.exports['__napi_register__call_finally_on_promise_280']?.()
__napiInstance.exports['__napi_register__JsRepo_struct_281']?.()
__napiInstance.exports['__napi_register__JsRepo_impl_284']?.()
__napiInstance.exports['__napi_register__JsRemote_struct_285']?.()
__napiInstance.exports['__napi_register__JsRemote_impl_288']?.()
__napiInstance.exports['__napi_register__CSSRuleList_struct_289']?.()
__napiInstance.exports['__napi_register__CSSRuleList_impl_293']?.()
__napiInstance.exports['__napi_register__CSSStyleSheet_struct_294']?.()
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_struct_295']?.()
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_impl_297']?.()
__napiInstance.exports['__napi_register__CSSStyleSheet_impl_301']?.()
__napiInstance.exports['__napi_register__PackageJson_struct_302']?.()
__napiInstance.exports['__napi_register__read_package_json_303']?.()
__napiInstance.exports['__napi_register__get_package_json_name_304']?.()
__napiInstance.exports['__napi_register__test_serde_roundtrip_305']?.()
__napiInstance.exports['__napi_register__test_serde_big_number_precision_306']?.()
__napiInstance.exports['__napi_register__test_serde_buffer_bytes_307']?.()
__napiInstance.exports['__napi_register__return_from_shared_crate_308']?.()
__napiInstance.exports['__napi_register__contains_309']?.()
__napiInstance.exports['__napi_register__concat_str_310']?.()
__napiInstance.exports['__napi_register__concat_utf16_311']?.()
__napiInstance.exports['__napi_register__concat_latin1_312']?.()
__napiInstance.exports['__napi_register__roundtrip_str_313']?.()
__napiInstance.exports['__napi_register__set_symbol_in_obj_314']?.()
__napiInstance.exports['__napi_register__create_symbol_315']?.()
__napiInstance.exports['__napi_register__create_symbol_for_316']?.()
__napiInstance.exports['__napi_register__DelaySum_impl_317']?.()
__napiInstance.exports['__napi_register__without_abort_controller_318']?.()
__napiInstance.exports['__napi_register__with_abort_controller_319']?.()
__napiInstance.exports['__napi_register__AsyncTaskVoidReturn_impl_320']?.()
__napiInstance.exports['__napi_register__async_task_void_return_321']?.()
__napiInstance.exports['__napi_register__AsyncTaskOptionalReturn_impl_322']?.()
__napiInstance.exports['__napi_register__async_task_optional_return_323']?.()
__napiInstance.exports['__napi_register__AsyncTaskReadFile_impl_324']?.()
__napiInstance.exports['__napi_register__async_task_read_file_325']?.()
__napiInstance.exports['__napi_register__call_threadsafe_function_326']?.()
__napiInstance.exports['__napi_register__call_long_threadsafe_function_327']?.()
__napiInstance.exports['__napi_register__threadsafe_function_throw_error_328']?.()
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_329']?.()
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_error_330']?.()
__napiInstance.exports['__napi_register__threadsafe_function_closure_capture_331']?.()
__napiInstance.exports['__napi_register__tsfn_call_with_callback_332']?.()
__napiInstance.exports['__napi_register__tsfn_async_call_333']?.()
__napiInstance.exports['__napi_register__accept_threadsafe_function_334']?.()
__napiInstance.exports['__napi_register__accept_threadsafe_function_fatal_335']?.()
__napiInstance.exports['__napi_register__accept_threadsafe_function_tuple_args_336']?.()
__napiInstance.exports['__napi_register__tsfn_return_promise_337']?.()
__napiInstance.exports['__napi_register__tsfn_return_promise_timeout_338']?.()
__napiInstance.exports['__napi_register__tsfn_throw_from_js_339']?.()
__napiInstance.exports['__napi_register__spawn_thread_in_thread_340']?.()
__napiInstance.exports['__napi_register__Pet_struct_341']?.()
__napiInstance.exports['__napi_register__tsfn_in_either_342']?.()
__napiInstance.exports['__napi_register__get_buffer_343']?.()
__napiInstance.exports['__napi_register__append_buffer_344']?.()
__napiInstance.exports['__napi_register__get_empty_buffer_345']?.()
__napiInstance.exports['__napi_register__convert_u32_array_346']?.()
__napiInstance.exports['__napi_register__create_external_typed_array_347']?.()
__napiInstance.exports['__napi_register__mutate_typed_array_348']?.()
__napiInstance.exports['__napi_register__deref_uint8_array_349']?.()
__napiInstance.exports['__napi_register__buffer_pass_through_350']?.()
__napiInstance.exports['__napi_register__array_buffer_pass_through_351']?.()
__napiInstance.exports['__napi_register__accept_slice_352']?.()
__napiInstance.exports['__napi_register__accept_arraybuffer_353']?.()
__napiInstance.exports['__napi_register__u8_array_to_array_354']?.()
__napiInstance.exports['__napi_register__i8_array_to_array_355']?.()
__napiInstance.exports['__napi_register__u16_array_to_array_356']?.()
__napiInstance.exports['__napi_register__i16_array_to_array_357']?.()
__napiInstance.exports['__napi_register__u32_array_to_array_358']?.()
__napiInstance.exports['__napi_register__i32_array_to_array_359']?.()
__napiInstance.exports['__napi_register__f32_array_to_array_360']?.()
__napiInstance.exports['__napi_register__f64_array_to_array_361']?.()
__napiInstance.exports['__napi_register__u64_array_to_array_362']?.()
__napiInstance.exports['__napi_register__i64_array_to_array_363']?.()
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_364']?.()
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_and_buffer_slice_365']?.()
__napiInstance.exports['__napi_register__AsyncBuffer_impl_366']?.()
__napiInstance.exports['__napi_register__async_reduce_buffer_367']?.()
__napiInstance.exports['__napi_register__async_buffer_to_array_368']?.()
__napiInstance.exports['__napi_register__u_init8_array_from_string_369']?.()
}
module.exports.Animal = __napiModule.exports.Animal
module.exports.AnimalWithDefaultConstructor = __napiModule.exports.AnimalWithDefaultConstructor

View File

@ -694,6 +694,7 @@ export type StructuredKind =
| { type2: 'Hello' }
| { type2: 'Greeting', name: string }
| { type2: 'Birthday', name: string, age: number }
| { type2: 'Tuple', field0: number, field1: number }
export declare function sumBtreeMapping(nums: Record<string, number>): number
@ -744,6 +745,11 @@ export interface TsTypeChanged {
typeOverrideOptional?: object
}
export interface TupleObject {
field0: number
field1: number
}
export declare function u16ArrayToArray(input: Uint16Array): Array<number>
export declare function u32ArrayToArray(input: Uint32Array): Array<number>

View File

@ -66,6 +66,7 @@ pub enum StructuredKind {
Hello,
Greeting { name: String },
Birthday { name: String, age: u8 },
Tuple(u32, u32),
}
#[napi]

View File

@ -145,3 +145,6 @@ fn return_object_only_to_js() -> ObjectOnlyToJs {
dependencies: serde_json::json!({ "@napi-rs/cli": "^3.0.0", "rollup": "^4.0.0" }),
}
}
#[napi(object)]
pub struct TupleObject(pub u32, pub u32);