From 249c27e06dac0b101f31ccc0ce79c08bd38186dd Mon Sep 17 00:00:00 2001 From: CPunisher <1343316114@qq.com> Date: Fri, 23 Aug 2024 14:10:39 +0800 Subject: [PATCH] fix(napi-derive): tuple object and enum (#2227) * Fix tuple struct * Add testcase --- crates/backend/src/codegen/struct.rs | 39 +++-- .../__snapshots__/typegen.spec.ts.md | 6 + .../__snapshots__/typegen.spec.ts.snap | Bin 5300 -> 5335 bytes examples/napi/__tests__/values.spec.ts | 6 + examples/napi/example.wasi-browser.js | 165 +++++++++--------- examples/napi/example.wasi.cjs | 165 +++++++++--------- examples/napi/index.d.cts | 6 + examples/napi/src/enum.rs | 1 + examples/napi/src/object.rs | 3 + 9 files changed, 209 insertions(+), 182 deletions(-) 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 1681d6abf01d6e16f8da4cb12bdcd13a2332a69b..20c491c4125f49d051c0347d8576645a432f73d9 100644 GIT binary patch delta 5155 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 RAGA#3{{Xmvw$~S9005#n?!o{7 delta 5097 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 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);