diff --git a/crates/backend/src/codegen/struct.rs b/crates/backend/src/codegen/struct.rs index da23e085..72dae59a 100644 --- a/crates/backend/src/codegen/struct.rs +++ b/crates/backend/src/codegen/struct.rs @@ -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), ))?; diff --git a/examples/napi/__tests__/__snapshots__/typegen.spec.ts.md b/examples/napi/__tests__/__snapshots__/typegen.spec.ts.md index 18f2a122..b47d2487 100644 --- a/examples/napi/__tests__/__snapshots__/typegen.spec.ts.md +++ b/examples/napi/__tests__/__snapshots__/typegen.spec.ts.md @@ -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): 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␊ ␊ export declare function u32ArrayToArray(input: Uint32Array): Array␊ diff --git a/examples/napi/__tests__/__snapshots__/typegen.spec.ts.snap b/examples/napi/__tests__/__snapshots__/typegen.spec.ts.snap index 1681d6ab..20c491c4 100644 Binary files a/examples/napi/__tests__/__snapshots__/typegen.spec.ts.snap and b/examples/napi/__tests__/__snapshots__/typegen.spec.ts.snap differ diff --git a/examples/napi/__tests__/values.spec.ts b/examples/napi/__tests__/values.spec.ts index 4d6c9239..0fa15180 100644 --- a/examples/napi/__tests__/values.spec.ts +++ b/examples/napi/__tests__/values.spec.ts @@ -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)) }) diff --git a/examples/napi/example.wasi-browser.js b/examples/napi/example.wasi-browser.js index 7248595f..a3cada74 100644 --- a/examples/napi/example.wasi-browser.js +++ b/examples/napi/example.wasi-browser.js @@ -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 diff --git a/examples/napi/example.wasi.cjs b/examples/napi/example.wasi.cjs index cd12d402..95c78862 100644 --- a/examples/napi/example.wasi.cjs +++ b/examples/napi/example.wasi.cjs @@ -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 diff --git a/examples/napi/index.d.cts b/examples/napi/index.d.cts index 1012b1a6..0d3a4c26 100644 --- a/examples/napi/index.d.cts +++ b/examples/napi/index.d.cts @@ -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): number @@ -744,6 +745,11 @@ export interface TsTypeChanged { typeOverrideOptional?: object } +export interface TupleObject { + field0: number + field1: number +} + export declare function u16ArrayToArray(input: Uint16Array): Array export declare function u32ArrayToArray(input: Uint32Array): Array diff --git a/examples/napi/src/enum.rs b/examples/napi/src/enum.rs index cb5a2dab..cb85d315 100644 --- a/examples/napi/src/enum.rs +++ b/examples/napi/src/enum.rs @@ -66,6 +66,7 @@ pub enum StructuredKind { Hello, Greeting { name: String }, Birthday { name: String, age: u8 }, + Tuple(u32, u32), } #[napi] diff --git a/examples/napi/src/object.rs b/examples/napi/src/object.rs index 5363065d..94ec91cd 100644 --- a/examples/napi/src/object.rs +++ b/examples/napi/src/object.rs @@ -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);