mirror of
https://github.com/napi-rs/napi-rs.git
synced 2025-12-08 19:56:07 +00:00
feat: support structured enum with discriminated unions (#2222)
* Structured enum * Type indent * Add test example * Remove trailing commas * discriminant * discriminant conflict * more test * typo
This commit is contained in:
parent
e02ec1e87c
commit
c459f0acf6
@ -12,6 +12,7 @@ enum TypeDefKind {
|
||||
Enum = 'enum',
|
||||
StringEnum = 'string_enum',
|
||||
Interface = 'interface',
|
||||
Type = 'type',
|
||||
Fn = 'fn',
|
||||
Struct = 'struct',
|
||||
Impl = 'impl',
|
||||
@ -38,6 +39,10 @@ function prettyPrint(
|
||||
s += `export interface ${line.name} {\n${line.def}\n}`
|
||||
break
|
||||
|
||||
case TypeDefKind.Type:
|
||||
s += `export type ${line.name} = \n${line.def}`
|
||||
break
|
||||
|
||||
case TypeDefKind.Enum:
|
||||
const enumName = constEnum ? 'const enum' : 'enum'
|
||||
s += `${exportDeclare(ambient)} ${enumName} ${line.name} {\n${line.def}\n}`
|
||||
@ -215,13 +220,20 @@ export function correctStringIdent(src: string, ident: number): string {
|
||||
const isInMultilineComment = line.startsWith('*')
|
||||
const isClosingBracket = line.endsWith('}')
|
||||
const isOpeningBracket = line.endsWith('{')
|
||||
const isTypeDeclaration = line.endsWith('=')
|
||||
const isTypeVariant = line.startsWith('|')
|
||||
|
||||
let rightIndent = ident
|
||||
if (isOpeningBracket && !isInMultilineComment) {
|
||||
if ((isOpeningBracket || isTypeDeclaration) && !isInMultilineComment) {
|
||||
bracketDepth += 1
|
||||
rightIndent += (bracketDepth - 1) * 2
|
||||
} else {
|
||||
if (isClosingBracket && bracketDepth > 0 && !isInMultilineComment) {
|
||||
if (
|
||||
isClosingBracket &&
|
||||
bracketDepth > 0 &&
|
||||
!isInMultilineComment &&
|
||||
!isTypeVariant
|
||||
) {
|
||||
bracketDepth -= 1
|
||||
}
|
||||
rightIndent += bracketDepth * 2
|
||||
|
||||
@ -77,25 +77,50 @@ pub enum FnSelf {
|
||||
pub struct NapiStruct {
|
||||
pub name: Ident,
|
||||
pub js_name: String,
|
||||
pub vis: syn::Visibility,
|
||||
pub fields: Vec<NapiStructField>,
|
||||
pub is_tuple: bool,
|
||||
pub kind: NapiStructKind,
|
||||
pub object_from_js: bool,
|
||||
pub object_to_js: bool,
|
||||
pub js_mod: Option<String>,
|
||||
pub comments: Vec<String>,
|
||||
pub implement_iterator: bool,
|
||||
pub use_custom_finalize: bool,
|
||||
pub register_name: Ident,
|
||||
pub js_mod: Option<String>,
|
||||
pub use_nullable: bool,
|
||||
pub register_name: Ident,
|
||||
pub kind: NapiStructKind,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum NapiStructKind {
|
||||
None,
|
||||
Constructor,
|
||||
Object,
|
||||
Class(NapiClass),
|
||||
Object(NapiObject),
|
||||
StructuredEnum(NapiStructuredEnum),
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct NapiClass {
|
||||
pub fields: Vec<NapiStructField>,
|
||||
pub ctor: bool,
|
||||
pub implement_iterator: bool,
|
||||
pub is_tuple: bool,
|
||||
pub use_custom_finalize: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct NapiObject {
|
||||
pub fields: Vec<NapiStructField>,
|
||||
pub object_from_js: bool,
|
||||
pub object_to_js: bool,
|
||||
pub is_tuple: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct NapiStructuredEnum {
|
||||
pub variants: Vec<NapiStructuredEnumVariant>,
|
||||
pub object_from_js: bool,
|
||||
pub object_to_js: bool,
|
||||
pub discriminant: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct NapiStructuredEnumVariant {
|
||||
pub name: Ident,
|
||||
pub fields: Vec<NapiStructField>,
|
||||
pub is_tuple: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
|
||||
@ -8,6 +8,7 @@ use crate::{
|
||||
codegen::{get_intermediate_ident, js_mod_to_token_stream},
|
||||
BindgenResult, FnKind, NapiImpl, NapiStruct, NapiStructKind, TryToTokens,
|
||||
};
|
||||
use crate::{NapiClass, NapiObject, NapiStructuredEnum};
|
||||
|
||||
static NAPI_IMPL_ID: AtomicU32 = AtomicU32::new(0);
|
||||
const TYPED_ARRAY_TYPE: &[&str] = &[
|
||||
@ -158,10 +159,9 @@ impl TryToTokens for NapiStruct {
|
||||
fn try_to_tokens(&self, tokens: &mut TokenStream) -> BindgenResult<()> {
|
||||
let napi_value_map_impl = self.gen_napi_value_map_impl();
|
||||
|
||||
let class_helper_mod = if self.kind == NapiStructKind::Object {
|
||||
quote! {}
|
||||
} else {
|
||||
self.gen_helper_mod()
|
||||
let class_helper_mod = match &self.kind {
|
||||
NapiStructKind::Class(class) => self.gen_helper_mod(class),
|
||||
_ => quote! {},
|
||||
};
|
||||
|
||||
(quote! {
|
||||
@ -175,18 +175,18 @@ impl TryToTokens for NapiStruct {
|
||||
}
|
||||
|
||||
impl NapiStruct {
|
||||
fn gen_helper_mod(&self) -> TokenStream {
|
||||
fn gen_helper_mod(&self, class: &NapiClass) -> TokenStream {
|
||||
let mod_name = Ident::new(&format!("__napi_helper__{}", self.name), Span::call_site());
|
||||
|
||||
let ctor = if self.kind == NapiStructKind::Constructor {
|
||||
self.gen_default_ctor()
|
||||
let ctor = if class.ctor {
|
||||
self.gen_default_ctor(class)
|
||||
} else {
|
||||
quote! {}
|
||||
};
|
||||
|
||||
let mut getters_setters = self.gen_default_getters_setters();
|
||||
let mut getters_setters = self.gen_default_getters_setters(class);
|
||||
getters_setters.sort_by(|a, b| a.0.cmp(&b.0));
|
||||
let register = self.gen_register();
|
||||
let register = self.gen_register(class);
|
||||
|
||||
let getters_setters_token = getters_setters.into_iter().map(|(_, token)| token);
|
||||
|
||||
@ -204,13 +204,13 @@ impl NapiStruct {
|
||||
}
|
||||
}
|
||||
|
||||
fn gen_default_ctor(&self) -> TokenStream {
|
||||
fn gen_default_ctor(&self, class: &NapiClass) -> TokenStream {
|
||||
let name = &self.name;
|
||||
let js_name_str = &self.js_name;
|
||||
let fields_len = self.fields.len();
|
||||
let fields_len = class.fields.len();
|
||||
let mut fields = vec![];
|
||||
|
||||
for (i, field) in self.fields.iter().enumerate() {
|
||||
for (i, field) in class.fields.iter().enumerate() {
|
||||
let ty = &field.ty;
|
||||
match &field.name {
|
||||
syn::Member::Named(ident) => fields
|
||||
@ -221,7 +221,7 @@ impl NapiStruct {
|
||||
}
|
||||
}
|
||||
|
||||
let construct = if self.is_tuple {
|
||||
let construct = if class.is_tuple {
|
||||
quote! { #name (#(#fields),*) }
|
||||
} else {
|
||||
quote! { #name {#(#fields),*} }
|
||||
@ -229,7 +229,7 @@ impl NapiStruct {
|
||||
|
||||
let is_empty_struct_hint = fields_len == 0;
|
||||
|
||||
let constructor = if self.implement_iterator {
|
||||
let constructor = if class.implement_iterator {
|
||||
quote! { unsafe { cb.construct_generator::<#is_empty_struct_hint, #name>(#js_name_str, #construct) } }
|
||||
} else {
|
||||
quote! { unsafe { cb.construct::<#is_empty_struct_hint, #name>(#js_name_str, #construct) } }
|
||||
@ -251,24 +251,30 @@ impl NapiStruct {
|
||||
}
|
||||
|
||||
fn gen_napi_value_map_impl(&self) -> TokenStream {
|
||||
match self.kind {
|
||||
NapiStructKind::None => gen_napi_value_map_impl(
|
||||
match &self.kind {
|
||||
NapiStructKind::Class(class) if !class.ctor => gen_napi_value_map_impl(
|
||||
&self.name,
|
||||
self.gen_to_napi_value_ctor_impl_for_non_default_constructor_struct(),
|
||||
self.gen_to_napi_value_ctor_impl_for_non_default_constructor_struct(class),
|
||||
),
|
||||
NapiStructKind::Constructor => {
|
||||
gen_napi_value_map_impl(&self.name, self.gen_to_napi_value_ctor_impl())
|
||||
NapiStructKind::Class(class) => {
|
||||
gen_napi_value_map_impl(&self.name, self.gen_to_napi_value_ctor_impl(class))
|
||||
}
|
||||
NapiStructKind::Object(obj) => self.gen_to_napi_value_obj_impl(obj),
|
||||
NapiStructKind::StructuredEnum(structured_enum) => {
|
||||
self.gen_to_napi_value_structured_enum_impl(structured_enum)
|
||||
}
|
||||
NapiStructKind::Object => self.gen_to_napi_value_obj_impl(),
|
||||
}
|
||||
}
|
||||
|
||||
fn gen_to_napi_value_ctor_impl_for_non_default_constructor_struct(&self) -> TokenStream {
|
||||
fn gen_to_napi_value_ctor_impl_for_non_default_constructor_struct(
|
||||
&self,
|
||||
class: &NapiClass,
|
||||
) -> TokenStream {
|
||||
let name = &self.name;
|
||||
let js_name_raw = &self.js_name;
|
||||
let js_name_str = format!("{}\0", js_name_raw);
|
||||
let iterator_implementation = self.gen_iterator_property(name);
|
||||
let finalize_trait = if self.use_custom_finalize {
|
||||
let iterator_implementation = self.gen_iterator_property(class, name);
|
||||
let finalize_trait = if class.use_custom_finalize {
|
||||
quote! {}
|
||||
} else {
|
||||
quote! { impl napi::bindgen_prelude::ObjectFinalize for #name {} }
|
||||
@ -377,8 +383,8 @@ impl NapiStruct {
|
||||
}
|
||||
}
|
||||
|
||||
fn gen_iterator_property(&self, name: &Ident) -> TokenStream {
|
||||
if !self.implement_iterator {
|
||||
fn gen_iterator_property(&self, class: &NapiClass, name: &Ident) -> TokenStream {
|
||||
if !class.implement_iterator {
|
||||
return quote! {};
|
||||
}
|
||||
quote! {
|
||||
@ -386,7 +392,7 @@ impl NapiStruct {
|
||||
}
|
||||
}
|
||||
|
||||
fn gen_to_napi_value_ctor_impl(&self) -> TokenStream {
|
||||
fn gen_to_napi_value_ctor_impl(&self, class: &NapiClass) -> TokenStream {
|
||||
let name = &self.name;
|
||||
let js_name_without_null = &self.js_name;
|
||||
let js_name_str = format!("{}\0", &self.js_name);
|
||||
@ -395,7 +401,7 @@ impl NapiStruct {
|
||||
let mut field_conversions = vec![];
|
||||
let mut field_destructions = vec![];
|
||||
|
||||
for field in self.fields.iter() {
|
||||
for field in class.fields.iter() {
|
||||
let ty = &field.ty;
|
||||
|
||||
match &field.name {
|
||||
@ -416,7 +422,7 @@ impl NapiStruct {
|
||||
}
|
||||
}
|
||||
|
||||
let destructed_fields = if self.is_tuple {
|
||||
let destructed_fields = if class.is_tuple {
|
||||
quote! {
|
||||
Self (#(#field_destructions),*)
|
||||
}
|
||||
@ -426,7 +432,7 @@ impl NapiStruct {
|
||||
}
|
||||
};
|
||||
|
||||
let finalize_trait = if self.use_custom_finalize {
|
||||
let finalize_trait = if class.use_custom_finalize {
|
||||
quote! {}
|
||||
} else {
|
||||
quote! { impl napi::bindgen_prelude::ObjectFinalize for #name {} }
|
||||
@ -470,7 +476,7 @@ impl NapiStruct {
|
||||
}
|
||||
}
|
||||
|
||||
fn gen_to_napi_value_obj_impl(&self) -> TokenStream {
|
||||
fn gen_to_napi_value_obj_impl(&self, obj: &NapiObject) -> TokenStream {
|
||||
let name = &self.name;
|
||||
let name_str = self.name.to_string();
|
||||
|
||||
@ -478,7 +484,7 @@ impl NapiStruct {
|
||||
let mut obj_field_getters = vec![];
|
||||
let mut field_destructions = vec![];
|
||||
|
||||
for field in self.fields.iter() {
|
||||
for field in obj.fields.iter() {
|
||||
let field_js_name = &field.js_name;
|
||||
let ty = &field.ty;
|
||||
let is_optional_field = if let syn::Type::Path(syn::TypePath {
|
||||
@ -569,7 +575,7 @@ impl NapiStruct {
|
||||
}
|
||||
}
|
||||
|
||||
let destructed_fields = if self.is_tuple {
|
||||
let destructed_fields = if obj.is_tuple {
|
||||
quote! {
|
||||
Self (#(#field_destructions),*)
|
||||
}
|
||||
@ -579,7 +585,7 @@ impl NapiStruct {
|
||||
}
|
||||
};
|
||||
|
||||
let to_napi_value = if self.object_to_js {
|
||||
let to_napi_value = if obj.object_to_js {
|
||||
quote! {
|
||||
impl napi::bindgen_prelude::ToNapiValue for #name {
|
||||
unsafe fn to_napi_value(env: napi::bindgen_prelude::sys::napi_env, val: #name) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {
|
||||
@ -597,7 +603,7 @@ impl NapiStruct {
|
||||
quote! {}
|
||||
};
|
||||
|
||||
let from_napi_value = if self.object_from_js {
|
||||
let from_napi_value = if obj.object_from_js {
|
||||
quote! {
|
||||
impl napi::bindgen_prelude::FromNapiValue for #name {
|
||||
unsafe fn from_napi_value(
|
||||
@ -638,11 +644,11 @@ impl NapiStruct {
|
||||
}
|
||||
}
|
||||
|
||||
fn gen_default_getters_setters(&self) -> Vec<(String, TokenStream)> {
|
||||
fn gen_default_getters_setters(&self, class: &NapiClass) -> Vec<(String, TokenStream)> {
|
||||
let mut getters_setters = vec![];
|
||||
let struct_name = &self.name;
|
||||
|
||||
for field in self.fields.iter() {
|
||||
for field in class.fields.iter() {
|
||||
let field_ident = &field.name;
|
||||
let field_name = match &field.name {
|
||||
syn::Member::Named(ident) => ident.to_string(),
|
||||
@ -737,17 +743,17 @@ impl NapiStruct {
|
||||
getters_setters
|
||||
}
|
||||
|
||||
fn gen_register(&self) -> TokenStream {
|
||||
fn gen_register(&self, class: &NapiClass) -> TokenStream {
|
||||
let name_str = self.name.to_string();
|
||||
let struct_register_name = &self.register_name;
|
||||
let js_name = format!("{}\0", self.js_name);
|
||||
let mut props = vec![];
|
||||
|
||||
if self.kind == NapiStructKind::Constructor {
|
||||
if class.ctor {
|
||||
props.push(quote! { napi::bindgen_prelude::Property::new("constructor").unwrap().with_ctor(constructor) });
|
||||
}
|
||||
|
||||
for field in self.fields.iter() {
|
||||
for field in class.fields.iter() {
|
||||
let field_name = match &field.name {
|
||||
syn::Member::Named(ident) => ident.to_string(),
|
||||
syn::Member::Unnamed(i) => format!("field{}", i.index),
|
||||
@ -838,6 +844,209 @@ impl NapiStruct {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn gen_to_napi_value_structured_enum_impl(
|
||||
&self,
|
||||
structured_enum: &NapiStructuredEnum,
|
||||
) -> TokenStream {
|
||||
let name = &self.name;
|
||||
let name_str = self.name.to_string();
|
||||
let discriminant = structured_enum.discriminant.as_str();
|
||||
|
||||
let mut variant_arm_setters = vec![];
|
||||
let mut variant_arm_getters = vec![];
|
||||
|
||||
for variant in structured_enum.variants.iter() {
|
||||
let variant_name = &variant.name;
|
||||
let variant_name_str = variant_name.to_string();
|
||||
let mut obj_field_setters = vec![quote! {
|
||||
obj.set(#discriminant, #variant_name_str)?;
|
||||
}];
|
||||
let mut obj_field_getters = vec![];
|
||||
let mut field_destructions = vec![];
|
||||
for field in variant.fields.iter() {
|
||||
let field_js_name = &field.js_name;
|
||||
let ty = &field.ty;
|
||||
let is_optional_field = if let syn::Type::Path(syn::TypePath {
|
||||
path: syn::Path { segments, .. },
|
||||
..
|
||||
}) = &ty
|
||||
{
|
||||
if let Some(last_path) = segments.last() {
|
||||
last_path.ident == "Option"
|
||||
} else {
|
||||
false
|
||||
}
|
||||
} else {
|
||||
false
|
||||
};
|
||||
match &field.name {
|
||||
syn::Member::Named(ident) => {
|
||||
let alias_ident = format_ident!("{}_", ident);
|
||||
field_destructions.push(quote! { #ident: #alias_ident });
|
||||
if is_optional_field {
|
||||
obj_field_setters.push(match self.use_nullable {
|
||||
false => quote! {
|
||||
if #alias_ident.is_some() {
|
||||
obj.set(#field_js_name, #alias_ident)?;
|
||||
}
|
||||
},
|
||||
true => quote! {
|
||||
if let Some(#alias_ident) = #alias_ident {
|
||||
obj.set(#field_js_name, #alias_ident)?;
|
||||
} else {
|
||||
obj.set(#field_js_name, napi::bindgen_prelude::Null)?;
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
obj_field_setters.push(quote! { obj.set(#field_js_name, #alias_ident)?; });
|
||||
}
|
||||
if is_optional_field && !self.use_nullable {
|
||||
obj_field_getters.push(quote! {
|
||||
let #alias_ident: #ty = obj.get(#field_js_name).map_err(|mut err| {
|
||||
err.reason = format!("{} on {}.{}", err.reason, #name_str, #field_js_name);
|
||||
err
|
||||
})?;
|
||||
});
|
||||
} else {
|
||||
obj_field_getters.push(quote! {
|
||||
let #alias_ident: #ty = obj.get(#field_js_name).map_err(|mut err| {
|
||||
err.reason = format!("{} on {}.{}", err.reason, #name_str, #field_js_name);
|
||||
err
|
||||
})?.ok_or_else(|| napi::bindgen_prelude::Error::new(
|
||||
napi::bindgen_prelude::Status::InvalidArg,
|
||||
format!("Missing field `{}`", #field_js_name),
|
||||
))?;
|
||||
});
|
||||
}
|
||||
}
|
||||
syn::Member::Unnamed(i) => {
|
||||
field_destructions.push(quote! { arg #i });
|
||||
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)?;
|
||||
}
|
||||
},
|
||||
true => quote! {
|
||||
if let Some(arg #i) = arg #i {
|
||||
obj.set(#field_js_name, arg #i)?;
|
||||
} else {
|
||||
obj.set(#field_js_name, napi::bindgen_prelude::Null)?;
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
obj_field_setters.push(quote! { obj.set(#field_js_name, arg #1)?; });
|
||||
}
|
||||
if is_optional_field && !self.use_nullable {
|
||||
obj_field_getters.push(quote! { let arg #i: #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(
|
||||
napi::bindgen_prelude::Status::InvalidArg,
|
||||
format!("Missing field `{}`", #field_js_name),
|
||||
))?;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let destructed_fields = if variant.is_tuple {
|
||||
quote! {
|
||||
Self::#variant_name (#(#field_destructions),*)
|
||||
}
|
||||
} else {
|
||||
quote! {
|
||||
Self::#variant_name {#(#field_destructions),*}
|
||||
}
|
||||
};
|
||||
|
||||
variant_arm_setters.push(quote! {
|
||||
#destructed_fields => {
|
||||
#(#obj_field_setters)*
|
||||
},
|
||||
});
|
||||
|
||||
variant_arm_getters.push(quote! {
|
||||
#variant_name_str => {
|
||||
#(#obj_field_getters)*
|
||||
#destructed_fields
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
let to_napi_value = if structured_enum.object_to_js {
|
||||
quote! {
|
||||
impl napi::bindgen_prelude::ToNapiValue for #name {
|
||||
unsafe fn to_napi_value(env: napi::bindgen_prelude::sys::napi_env, val: #name) -> napi::bindgen_prelude::Result<napi::bindgen_prelude::sys::napi_value> {
|
||||
let env_wrapper = napi::bindgen_prelude::Env::from(env);
|
||||
let mut obj = env_wrapper.create_object()?;
|
||||
match val {
|
||||
#(#variant_arm_setters)*
|
||||
};
|
||||
|
||||
napi::bindgen_prelude::Object::to_napi_value(env, obj)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
quote! {}
|
||||
};
|
||||
|
||||
let from_napi_value = if structured_enum.object_from_js {
|
||||
quote! {
|
||||
impl napi::bindgen_prelude::FromNapiValue for #name {
|
||||
unsafe fn from_napi_value(
|
||||
env: napi::bindgen_prelude::sys::napi_env,
|
||||
napi_val: napi::bindgen_prelude::sys::napi_value
|
||||
) -> napi::bindgen_prelude::Result<Self> {
|
||||
let env_wrapper = napi::bindgen_prelude::Env::from(env);
|
||||
let mut obj = napi::bindgen_prelude::Object::from_napi_value(env, napi_val)?;
|
||||
let type_: String = obj.get(#discriminant).map_err(|mut err| {
|
||||
err.reason = format!("{} on {}.{}", err.reason, #name_str, #discriminant);
|
||||
err
|
||||
})?.ok_or_else(|| napi::bindgen_prelude::Error::new(
|
||||
napi::bindgen_prelude::Status::InvalidArg,
|
||||
format!("Missing field `{}`", #discriminant),
|
||||
))?;
|
||||
let val = match type_.as_str() {
|
||||
#(#variant_arm_getters)*
|
||||
_ => return Err(napi::bindgen_prelude::Error::new(
|
||||
napi::bindgen_prelude::Status::InvalidArg,
|
||||
format!("Unknown variant `{}`", type_),
|
||||
)),
|
||||
};
|
||||
|
||||
Ok(val)
|
||||
}
|
||||
}
|
||||
|
||||
impl napi::bindgen_prelude::ValidateNapiValue for #name {}
|
||||
}
|
||||
} else {
|
||||
quote! {}
|
||||
};
|
||||
|
||||
quote! {
|
||||
impl napi::bindgen_prelude::TypeName for #name {
|
||||
fn type_name() -> &'static str {
|
||||
#name_str
|
||||
}
|
||||
|
||||
fn value_type() -> napi::ValueType {
|
||||
napi::ValueType::Object
|
||||
}
|
||||
}
|
||||
|
||||
#to_napi_value
|
||||
|
||||
#from_napi_value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl TryToTokens for NapiImpl {
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
use std::cell::RefCell;
|
||||
use std::collections::HashMap;
|
||||
use std::{cell::RefCell, iter};
|
||||
|
||||
use super::{add_alias, ToTypeDef, TypeDef};
|
||||
use crate::{js_doc_from_comments, ty_to_ts_type, NapiImpl, NapiStruct, NapiStructKind};
|
||||
use crate::{
|
||||
js_doc_from_comments, ty_to_ts_type, NapiImpl, NapiStruct, NapiStructField, NapiStructKind,
|
||||
};
|
||||
|
||||
thread_local! {
|
||||
pub(crate) static TASK_STRUCTS: RefCell<HashMap<String, String>> = Default::default();
|
||||
@ -18,10 +20,10 @@ impl ToTypeDef for NapiStruct {
|
||||
add_alias(self.name.to_string(), self.js_name.to_string());
|
||||
|
||||
Some(TypeDef {
|
||||
kind: String::from(if self.kind == NapiStructKind::Object {
|
||||
"interface"
|
||||
} else {
|
||||
"struct"
|
||||
kind: String::from(match self.kind {
|
||||
NapiStructKind::Class(_) => "struct",
|
||||
NapiStructKind::Object(_) => "interface",
|
||||
NapiStructKind::StructuredEnum(_) => "type",
|
||||
}),
|
||||
name: self.js_name.to_owned(),
|
||||
original_name: Some(self.name.to_string()),
|
||||
@ -104,51 +106,85 @@ impl ToTypeDef for NapiImpl {
|
||||
}
|
||||
|
||||
impl NapiStruct {
|
||||
fn gen_field(&self, f: &NapiStructField) -> Option<(String, String)> {
|
||||
if f.skip_typescript {
|
||||
return None;
|
||||
}
|
||||
|
||||
let mut field_str = String::from("");
|
||||
|
||||
if !f.comments.is_empty() {
|
||||
field_str.push_str(&js_doc_from_comments(&f.comments))
|
||||
}
|
||||
|
||||
if !f.setter {
|
||||
field_str.push_str("readonly ")
|
||||
}
|
||||
|
||||
let (arg, is_optional) = ty_to_ts_type(&f.ty, false, true, false);
|
||||
let arg = f.ts_type.as_ref().map(|ty| ty.to_string()).unwrap_or(arg);
|
||||
|
||||
let arg = match is_optional {
|
||||
false => format!("{}: {}", &f.js_name, arg),
|
||||
true => match self.use_nullable {
|
||||
false => format!("{}?: {}", &f.js_name, arg),
|
||||
true => format!("{}: {} | null", &f.js_name, arg),
|
||||
},
|
||||
};
|
||||
field_str.push_str(&arg);
|
||||
Some((field_str, arg))
|
||||
}
|
||||
|
||||
fn gen_ts_class(&self) -> String {
|
||||
let mut ctor_args = vec![];
|
||||
let def = self
|
||||
.fields
|
||||
.iter()
|
||||
.filter(|f| f.getter)
|
||||
.filter_map(|f| {
|
||||
if f.skip_typescript {
|
||||
return None;
|
||||
match &self.kind {
|
||||
NapiStructKind::Class(class) => {
|
||||
let mut ctor_args = vec![];
|
||||
let def = class
|
||||
.fields
|
||||
.iter()
|
||||
.filter(|f| f.getter)
|
||||
.filter_map(|f| {
|
||||
self.gen_field(f).map(|(field, arg)| {
|
||||
ctor_args.push(arg);
|
||||
field
|
||||
})
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
.join("\\n");
|
||||
if class.ctor {
|
||||
format!("{}\\nconstructor({})", def, ctor_args.join(", "))
|
||||
} else {
|
||||
def
|
||||
}
|
||||
|
||||
let mut field_str = String::from("");
|
||||
|
||||
if !f.comments.is_empty() {
|
||||
field_str.push_str(&js_doc_from_comments(&f.comments))
|
||||
}
|
||||
|
||||
if !f.setter {
|
||||
field_str.push_str("readonly ")
|
||||
}
|
||||
|
||||
let (arg, is_optional) = ty_to_ts_type(&f.ty, false, true, false);
|
||||
let arg = f.ts_type.as_ref().map(|ty| ty.to_string()).unwrap_or(arg);
|
||||
|
||||
let arg = match is_optional {
|
||||
false => format!("{}: {}", &f.js_name, arg),
|
||||
true => match self.use_nullable {
|
||||
false => format!("{}?: {}", &f.js_name, arg),
|
||||
true => format!("{}: {} | null", &f.js_name, arg),
|
||||
},
|
||||
};
|
||||
if self.kind == NapiStructKind::Constructor {
|
||||
ctor_args.push(arg.clone());
|
||||
}
|
||||
field_str.push_str(&arg);
|
||||
|
||||
Some(field_str)
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
.join("\\n");
|
||||
|
||||
if self.kind == NapiStructKind::Constructor {
|
||||
format!("{}\\nconstructor({})", def, ctor_args.join(", "))
|
||||
} else {
|
||||
def
|
||||
}
|
||||
NapiStructKind::Object(object) => object
|
||||
.fields
|
||||
.iter()
|
||||
.filter(|f| f.getter)
|
||||
.filter_map(|f| self.gen_field(f).map(|(field, _)| field))
|
||||
.collect::<Vec<_>>()
|
||||
.join("\\n"),
|
||||
NapiStructKind::StructuredEnum(structured_enum) => structured_enum
|
||||
.variants
|
||||
.iter()
|
||||
.map(|variant| {
|
||||
let def = iter::once(format!(
|
||||
"{}: '{}'",
|
||||
structured_enum.discriminant, variant.name
|
||||
))
|
||||
.chain(
|
||||
variant
|
||||
.fields
|
||||
.iter()
|
||||
.filter(|f| f.getter)
|
||||
.filter_map(|f| self.gen_field(f).map(|(field, _)| field)),
|
||||
)
|
||||
.collect::<Vec<_>>()
|
||||
.join(", ");
|
||||
format!(" | {{ {} }} ", def)
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
.join("\\n"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -73,6 +73,7 @@ macro_rules! attrgen {
|
||||
(ts_generic_types, TsGenericTypes(Span, String, Span)),
|
||||
(string_enum, StringEnum(Span, Option<(String, Span)>)),
|
||||
(use_nullable, UseNullable(Span, Option<bool>), false),
|
||||
(discriminant, Discriminant(Span, String, Span)),
|
||||
|
||||
// impl later
|
||||
// (inspectable, Inspectable(Span)),
|
||||
|
||||
@ -10,9 +10,10 @@ use attrs::BindgenAttrs;
|
||||
|
||||
use convert_case::{Case, Casing};
|
||||
use napi_derive_backend::{
|
||||
rm_raw_prefix, BindgenResult, CallbackArg, Diagnostic, FnKind, FnSelf, Napi, NapiConst, NapiEnum,
|
||||
NapiEnumValue, NapiEnumVariant, NapiFn, NapiFnArg, NapiFnArgKind, NapiImpl, NapiItem, NapiStruct,
|
||||
NapiStructField, NapiStructKind,
|
||||
rm_raw_prefix, BindgenResult, CallbackArg, Diagnostic, FnKind, FnSelf, Napi, NapiClass,
|
||||
NapiConst, NapiEnum, NapiEnumValue, NapiEnumVariant, NapiFn, NapiFnArg, NapiFnArgKind, NapiImpl,
|
||||
NapiItem, NapiObject, NapiStruct, NapiStructField, NapiStructKind, NapiStructuredEnum,
|
||||
NapiStructuredEnumVariant,
|
||||
};
|
||||
use proc_macro2::{Ident, Span, TokenStream};
|
||||
use quote::ToTokens;
|
||||
@ -921,79 +922,70 @@ impl ConvertToAST for syn::ItemFn {
|
||||
}
|
||||
}
|
||||
|
||||
fn convert_fields(
|
||||
fields: &mut syn::Fields,
|
||||
check_vis: bool,
|
||||
) -> BindgenResult<(Vec<NapiStructField>, bool)> {
|
||||
let mut napi_fields = vec![];
|
||||
let mut is_tuple = false;
|
||||
for (i, field) in fields.iter_mut().enumerate() {
|
||||
if check_vis && !matches!(field.vis, syn::Visibility::Public(_)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let field_opts = BindgenAttrs::find(&mut field.attrs)?;
|
||||
|
||||
let (js_name, name) = match &field.ident {
|
||||
Some(ident) => (
|
||||
field_opts.js_name().map_or_else(
|
||||
|| ident.unraw().to_string().to_case(Case::Camel),
|
||||
|(js_name, _)| js_name.to_owned(),
|
||||
),
|
||||
syn::Member::Named(ident.clone()),
|
||||
),
|
||||
None => {
|
||||
is_tuple = true;
|
||||
(format!("field{}", i), syn::Member::Unnamed(i.into()))
|
||||
}
|
||||
};
|
||||
|
||||
let ignored = field_opts.skip().is_some();
|
||||
let readonly = field_opts.readonly().is_some();
|
||||
let writable = field_opts.writable();
|
||||
let enumerable = field_opts.enumerable();
|
||||
let configurable = field_opts.configurable();
|
||||
let skip_typescript = field_opts.skip_typescript().is_some();
|
||||
let ts_type = field_opts.ts_type().map(|e| e.0.to_string());
|
||||
|
||||
napi_fields.push(NapiStructField {
|
||||
name,
|
||||
js_name,
|
||||
ty: field.ty.clone(),
|
||||
getter: !ignored,
|
||||
setter: !(ignored || readonly),
|
||||
writable,
|
||||
enumerable,
|
||||
configurable,
|
||||
comments: extract_doc_comments(&field.attrs),
|
||||
skip_typescript,
|
||||
ts_type,
|
||||
})
|
||||
}
|
||||
Ok((napi_fields, is_tuple))
|
||||
}
|
||||
|
||||
impl ConvertToAST for syn::ItemStruct {
|
||||
fn convert_to_ast(&mut self, opts: &BindgenAttrs) -> BindgenResult<Napi> {
|
||||
let mut errors = vec![];
|
||||
|
||||
let vis = self.vis.clone();
|
||||
let struct_name = self.ident.clone();
|
||||
let js_name = opts.js_name().map_or_else(
|
||||
|| self.ident.to_string().to_case(Case::Pascal),
|
||||
|(js_name, _)| js_name.to_owned(),
|
||||
);
|
||||
let mut fields = vec![];
|
||||
let mut is_tuple = false;
|
||||
let struct_kind = if opts.constructor().is_some() {
|
||||
NapiStructKind::Constructor
|
||||
} else if opts.object().is_some() {
|
||||
NapiStructKind::Object
|
||||
} else {
|
||||
NapiStructKind::None
|
||||
};
|
||||
|
||||
let use_nullable = opts.use_nullable();
|
||||
|
||||
for (i, field) in self.fields.iter_mut().enumerate() {
|
||||
match field.vis {
|
||||
syn::Visibility::Public(..) => {}
|
||||
_ => {
|
||||
if struct_kind != NapiStructKind::None {
|
||||
errors.push(err_span!(
|
||||
field,
|
||||
"#[napi] requires all struct fields to be public to mark struct as constructor or object shape\nthis field is not public."
|
||||
));
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
let field_opts = BindgenAttrs::find(&mut field.attrs)?;
|
||||
|
||||
let (js_name, name) = match &field.ident {
|
||||
Some(ident) => (
|
||||
field_opts.js_name().map_or_else(
|
||||
|| ident.unraw().to_string().to_case(Case::Camel),
|
||||
|(js_name, _)| js_name.to_owned(),
|
||||
),
|
||||
syn::Member::Named(ident.clone()),
|
||||
),
|
||||
None => {
|
||||
is_tuple = true;
|
||||
(format!("field{}", i), syn::Member::Unnamed(i.into()))
|
||||
}
|
||||
};
|
||||
|
||||
let ignored = field_opts.skip().is_some();
|
||||
let readonly = field_opts.readonly().is_some();
|
||||
let writable = field_opts.writable();
|
||||
let enumerable = field_opts.enumerable();
|
||||
let configurable = field_opts.configurable();
|
||||
let skip_typescript = field_opts.skip_typescript().is_some();
|
||||
let ts_type = field_opts.ts_type().map(|e| e.0.to_string());
|
||||
|
||||
fields.push(NapiStructField {
|
||||
name,
|
||||
js_name,
|
||||
ty: field.ty.clone(),
|
||||
getter: !ignored,
|
||||
setter: !(ignored || readonly),
|
||||
writable,
|
||||
enumerable,
|
||||
configurable,
|
||||
comments: extract_doc_comments(&field.attrs),
|
||||
skip_typescript,
|
||||
ts_type,
|
||||
})
|
||||
}
|
||||
let (fields, is_tuple) = convert_fields(&mut self.fields, true)?;
|
||||
|
||||
record_struct(&struct_name, js_name.clone(), opts);
|
||||
let namespace = opts.namespace().map(|(m, _)| m.to_owned());
|
||||
@ -1007,22 +999,46 @@ impl ConvertToAST for syn::ItemStruct {
|
||||
inner.insert(key, implement_iterator);
|
||||
});
|
||||
|
||||
let struct_kind = if opts.object().is_some() {
|
||||
NapiStructKind::Object(NapiObject {
|
||||
fields,
|
||||
object_from_js: opts.object_from_js(),
|
||||
object_to_js: opts.object_to_js(),
|
||||
is_tuple,
|
||||
})
|
||||
} else {
|
||||
NapiStructKind::Class(NapiClass {
|
||||
fields,
|
||||
ctor: opts.constructor().is_some(),
|
||||
implement_iterator,
|
||||
is_tuple,
|
||||
use_custom_finalize: opts.custom_finalize().is_some(),
|
||||
})
|
||||
};
|
||||
|
||||
match &struct_kind {
|
||||
NapiStructKind::Class(class) if !class.ctor => {}
|
||||
_ => {
|
||||
for field in self.fields.iter() {
|
||||
if !matches!(field.vis, syn::Visibility::Public(_)) {
|
||||
errors.push(err_span!(
|
||||
field,
|
||||
"#[napi] requires all struct fields to be public to mark struct as constructor or object shape\nthis field is not public."
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Diagnostic::from_vec(errors).map(|()| Napi {
|
||||
item: NapiItem::Struct(NapiStruct {
|
||||
js_name,
|
||||
name: struct_name.clone(),
|
||||
vis,
|
||||
fields,
|
||||
is_tuple,
|
||||
kind: struct_kind,
|
||||
object_from_js: opts.object_from_js(),
|
||||
object_to_js: opts.object_to_js(),
|
||||
js_mod: namespace,
|
||||
comments: extract_doc_comments(&self.attrs),
|
||||
implement_iterator,
|
||||
use_custom_finalize: opts.custom_finalize().is_some(),
|
||||
register_name: get_register_ident(format!("{struct_name}_struct").as_str()),
|
||||
use_nullable,
|
||||
register_name: get_register_ident(format!("{struct_name}_struct").as_str()),
|
||||
comments: extract_doc_comments(&self.attrs),
|
||||
}),
|
||||
})
|
||||
}
|
||||
@ -1133,13 +1149,58 @@ impl ConvertToAST for syn::ItemEnum {
|
||||
_ => bail_span!(self, "only public enum allowed"),
|
||||
}
|
||||
|
||||
self.attrs.push(parse_quote!(#[derive(Copy, Clone)]));
|
||||
|
||||
let js_name = opts
|
||||
.js_name()
|
||||
.map_or_else(|| self.ident.to_string(), |(s, _)| s.to_string());
|
||||
|
||||
let is_string_enum = opts.string_enum().is_some();
|
||||
|
||||
if self
|
||||
.variants
|
||||
.iter()
|
||||
.any(|v| !matches!(v.fields, syn::Fields::Unit))
|
||||
{
|
||||
let discriminant = opts.discriminant().map_or("type", |(s, _)| s);
|
||||
let mut errors = vec![];
|
||||
let mut variants = vec![];
|
||||
for variant in self.variants.iter_mut() {
|
||||
let (fields, is_tuple) = convert_fields(&mut variant.fields, false)?;
|
||||
for field in fields.iter() {
|
||||
if field.js_name == discriminant {
|
||||
errors.push(err_span!(
|
||||
field.name,
|
||||
r#"field's js_name("{}") and discriminator("{}") conflict"#,
|
||||
field.js_name,
|
||||
discriminant,
|
||||
));
|
||||
}
|
||||
}
|
||||
variants.push(NapiStructuredEnumVariant {
|
||||
name: variant.ident.clone(),
|
||||
fields,
|
||||
is_tuple,
|
||||
});
|
||||
}
|
||||
let struct_name = self.ident.clone();
|
||||
return Diagnostic::from_vec(errors).map(|()| Napi {
|
||||
item: NapiItem::Struct(NapiStruct {
|
||||
name: struct_name.clone(),
|
||||
js_name,
|
||||
comments: extract_doc_comments(&self.attrs),
|
||||
js_mod: opts.namespace().map(|(m, _)| m.to_owned()),
|
||||
use_nullable: opts.use_nullable(),
|
||||
register_name: get_register_ident(format!("{struct_name}_struct").as_str()),
|
||||
kind: NapiStructKind::StructuredEnum(NapiStructuredEnum {
|
||||
variants,
|
||||
discriminant: discriminant.to_owned(),
|
||||
object_from_js: opts.object_from_js(),
|
||||
object_to_js: opts.object_to_js(),
|
||||
}),
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
||||
self.attrs.push(parse_quote!(#[derive(Copy, Clone)]));
|
||||
|
||||
let variants = match opts.string_enum() {
|
||||
Some(case) => {
|
||||
let case = case.map(|c| Ok::<Case, Diagnostic>(match c.0.as_str() {
|
||||
@ -1161,7 +1222,10 @@ impl ConvertToAST for syn::ItemEnum {
|
||||
.iter_mut()
|
||||
.map(|v| {
|
||||
if !matches!(v.fields, syn::Fields::Unit) {
|
||||
bail_span!(v.fields, "Structured enum is not supported in #[napi]")
|
||||
bail_span!(
|
||||
v.fields,
|
||||
"Structured enum is not supported with string enum in #[napi]"
|
||||
)
|
||||
}
|
||||
if matches!(&v.discriminant, Some((_, _))) {
|
||||
bail_span!(
|
||||
@ -1193,10 +1257,6 @@ impl ConvertToAST for syn::ItemEnum {
|
||||
.variants
|
||||
.iter()
|
||||
.map(|v| {
|
||||
if !matches!(v.fields, syn::Fields::Unit) {
|
||||
bail_span!(v.fields, "Structured enum is not supported in #[napi]")
|
||||
}
|
||||
|
||||
let val = match &v.discriminant {
|
||||
Some((_, expr)) => {
|
||||
let mut symbol = 1;
|
||||
|
||||
@ -700,6 +700,11 @@ Generated by [AVA](https://avajs.dev).
|
||||
VariantThree = 'variantthree'␊
|
||||
}␊
|
||||
␊
|
||||
export type StructuredKind =␊
|
||||
| { type2: 'Hello' }␊
|
||||
| { type2: 'Greeting', name: string }␊
|
||||
| { type2: 'Birthday', name: string, age: number }␊
|
||||
␊
|
||||
export declare function sumBtreeMapping(nums: Record<string, number>): number␊
|
||||
␊
|
||||
export declare function sumIndexMapping(nums: Record<string, number>): number␊
|
||||
@ -805,6 +810,8 @@ Generated by [AVA](https://avajs.dev).
|
||||
␊
|
||||
export declare function validateStringEnum(input: StatusInValidate): string␊
|
||||
␊
|
||||
export declare function validateStructuredEnum(kind: StructuredKind): StructuredKind␊
|
||||
␊
|
||||
export declare function validateSymbol(s: symbol): boolean␊
|
||||
␊
|
||||
export declare function validateTypedArray(input: Uint8Array): number␊
|
||||
|
||||
Binary file not shown.
@ -186,6 +186,8 @@ import {
|
||||
callThenOnPromise,
|
||||
callCatchOnPromise,
|
||||
callFinallyOnPromise,
|
||||
StructuredKind,
|
||||
validateStructuredEnum,
|
||||
} from '../index.cjs'
|
||||
|
||||
import { test } from './test.framework.js'
|
||||
@ -250,6 +252,26 @@ test('enum', (t) => {
|
||||
t.is(enumToI32(CustomNumEnum.Eight), 8)
|
||||
})
|
||||
|
||||
test('structured enum', (t) => {
|
||||
const hello: StructuredKind = {
|
||||
type2: 'Hello',
|
||||
}
|
||||
const greeting: StructuredKind = {
|
||||
type2: 'Greeting',
|
||||
name: 'Napi-rs',
|
||||
}
|
||||
const birthday: StructuredKind = {
|
||||
type2: 'Birthday',
|
||||
name: 'Napi-rs',
|
||||
age: 10,
|
||||
}
|
||||
t.deepEqual(hello, validateStructuredEnum(hello))
|
||||
t.deepEqual(greeting, validateStructuredEnum(greeting))
|
||||
t.deepEqual(birthday, validateStructuredEnum(birthday))
|
||||
t.throws(() => validateStructuredEnum({ type2: 'unknown' } as any))
|
||||
t.throws(() => validateStructuredEnum({ type2: 'Greeting' } as any))
|
||||
})
|
||||
|
||||
test('function call', async (t) => {
|
||||
t.is(
|
||||
call0(() => 42),
|
||||
|
||||
@ -167,201 +167,203 @@ function __napi_rs_initialize_modules(__napiInstance) {
|
||||
__napiInstance.exports['__napi_register__enum_to_i32_151']?.()
|
||||
__napiInstance.exports['__napi_register__SkippedEnums_152']?.()
|
||||
__napiInstance.exports['__napi_register__CustomStringEnum_153']?.()
|
||||
__napiInstance.exports['__napi_register__run_script_154']?.()
|
||||
__napiInstance.exports['__napi_register__get_module_file_name_155']?.()
|
||||
__napiInstance.exports['__napi_register__throw_syntax_error_156']?.()
|
||||
__napiInstance.exports['__napi_register__throw_error_157']?.()
|
||||
__napiInstance.exports['__napi_register__panic_158']?.()
|
||||
__napiInstance.exports['__napi_register__receive_string_159']?.()
|
||||
__napiInstance.exports['__napi_register__custom_status_code_160']?.()
|
||||
__napiInstance.exports['__napi_register__throw_async_error_161']?.()
|
||||
__napiInstance.exports['__napi_register__CustomStruct_struct_162']?.()
|
||||
__napiInstance.exports['__napi_register__CustomStruct_impl_165']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_166']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_string_167']?.()
|
||||
__napiInstance.exports['__napi_register__get_external_168']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_external_169']?.()
|
||||
__napiInstance.exports['__napi_register__create_optional_external_170']?.()
|
||||
__napiInstance.exports['__napi_register__get_optional_external_171']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_optional_external_172']?.()
|
||||
__napiInstance.exports['__napi_register__validate_array_173']?.()
|
||||
__napiInstance.exports['__napi_register__validate_buffer_174']?.()
|
||||
__napiInstance.exports['__napi_register__validate_typed_array_175']?.()
|
||||
__napiInstance.exports['__napi_register__validate_typed_array_slice_176']?.()
|
||||
__napiInstance.exports['__napi_register__validate_uint8_clamped_slice_177']?.()
|
||||
__napiInstance.exports['__napi_register__validate_buffer_slice_178']?.()
|
||||
__napiInstance.exports['__napi_register__validate_bigint_179']?.()
|
||||
__napiInstance.exports['__napi_register__validate_boolean_180']?.()
|
||||
__napiInstance.exports['__napi_register__validate_date_181']?.()
|
||||
__napiInstance.exports['__napi_register__validate_date_time_182']?.()
|
||||
__napiInstance.exports['__napi_register__validate_external_183']?.()
|
||||
__napiInstance.exports['__napi_register__validate_function_184']?.()
|
||||
__napiInstance.exports['__napi_register__validate_hash_map_185']?.()
|
||||
__napiInstance.exports['__napi_register__validate_null_186']?.()
|
||||
__napiInstance.exports['__napi_register__validate_undefined_187']?.()
|
||||
__napiInstance.exports['__napi_register__validate_number_188']?.()
|
||||
__napiInstance.exports['__napi_register__validate_promise_189']?.()
|
||||
__napiInstance.exports['__napi_register__validate_string_190']?.()
|
||||
__napiInstance.exports['__napi_register__validate_symbol_191']?.()
|
||||
__napiInstance.exports['__napi_register__validate_optional_192']?.()
|
||||
__napiInstance.exports['__napi_register__KindInValidate_193']?.()
|
||||
__napiInstance.exports['__napi_register__validate_enum_194']?.()
|
||||
__napiInstance.exports['__napi_register__StatusInValidate_195']?.()
|
||||
__napiInstance.exports['__napi_register__validate_string_enum_196']?.()
|
||||
__napiInstance.exports['__napi_register__return_undefined_if_invalid_197']?.()
|
||||
__napiInstance.exports['__napi_register__return_undefined_if_invalid_promise_198']?.()
|
||||
__napiInstance.exports['__napi_register__ts_rename_199']?.()
|
||||
__napiInstance.exports['__napi_register__override_individual_arg_on_function_200']?.()
|
||||
__napiInstance.exports['__napi_register__override_individual_arg_on_function_with_cb_arg_201']?.()
|
||||
__napiInstance.exports['__napi_register__call0_202']?.()
|
||||
__napiInstance.exports['__napi_register__call1_203']?.()
|
||||
__napiInstance.exports['__napi_register__call2_204']?.()
|
||||
__napiInstance.exports['__napi_register__apply0_205']?.()
|
||||
__napiInstance.exports['__napi_register__apply1_206']?.()
|
||||
__napiInstance.exports['__napi_register__call_function_207']?.()
|
||||
__napiInstance.exports['__napi_register__call_function_with_arg_208']?.()
|
||||
__napiInstance.exports['__napi_register__create_reference_on_function_209']?.()
|
||||
__napiInstance.exports['__napi_register__call_function_with_arg_and_ctx_210']?.()
|
||||
__napiInstance.exports['__napi_register__reference_as_callback_211']?.()
|
||||
__napiInstance.exports['__napi_register__build_threadsafe_function_from_function_212']?.()
|
||||
__napiInstance.exports['__napi_register__build_threadsafe_function_from_function_callee_handle_213']?.()
|
||||
__napiInstance.exports['__napi_register__Fib_struct_214']?.()
|
||||
__napiInstance.exports['__napi_register__Fib_impl_215']?.()
|
||||
__napiInstance.exports['__napi_register__StructuredKind_struct_154']?.()
|
||||
__napiInstance.exports['__napi_register__validate_structured_enum_155']?.()
|
||||
__napiInstance.exports['__napi_register__run_script_156']?.()
|
||||
__napiInstance.exports['__napi_register__get_module_file_name_157']?.()
|
||||
__napiInstance.exports['__napi_register__throw_syntax_error_158']?.()
|
||||
__napiInstance.exports['__napi_register__throw_error_159']?.()
|
||||
__napiInstance.exports['__napi_register__panic_160']?.()
|
||||
__napiInstance.exports['__napi_register__receive_string_161']?.()
|
||||
__napiInstance.exports['__napi_register__custom_status_code_162']?.()
|
||||
__napiInstance.exports['__napi_register__throw_async_error_163']?.()
|
||||
__napiInstance.exports['__napi_register__CustomStruct_struct_164']?.()
|
||||
__napiInstance.exports['__napi_register__CustomStruct_impl_167']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_168']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_string_169']?.()
|
||||
__napiInstance.exports['__napi_register__get_external_170']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_external_171']?.()
|
||||
__napiInstance.exports['__napi_register__create_optional_external_172']?.()
|
||||
__napiInstance.exports['__napi_register__get_optional_external_173']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_optional_external_174']?.()
|
||||
__napiInstance.exports['__napi_register__validate_array_175']?.()
|
||||
__napiInstance.exports['__napi_register__validate_buffer_176']?.()
|
||||
__napiInstance.exports['__napi_register__validate_typed_array_177']?.()
|
||||
__napiInstance.exports['__napi_register__validate_typed_array_slice_178']?.()
|
||||
__napiInstance.exports['__napi_register__validate_uint8_clamped_slice_179']?.()
|
||||
__napiInstance.exports['__napi_register__validate_buffer_slice_180']?.()
|
||||
__napiInstance.exports['__napi_register__validate_bigint_181']?.()
|
||||
__napiInstance.exports['__napi_register__validate_boolean_182']?.()
|
||||
__napiInstance.exports['__napi_register__validate_date_183']?.()
|
||||
__napiInstance.exports['__napi_register__validate_date_time_184']?.()
|
||||
__napiInstance.exports['__napi_register__validate_external_185']?.()
|
||||
__napiInstance.exports['__napi_register__validate_function_186']?.()
|
||||
__napiInstance.exports['__napi_register__validate_hash_map_187']?.()
|
||||
__napiInstance.exports['__napi_register__validate_null_188']?.()
|
||||
__napiInstance.exports['__napi_register__validate_undefined_189']?.()
|
||||
__napiInstance.exports['__napi_register__validate_number_190']?.()
|
||||
__napiInstance.exports['__napi_register__validate_promise_191']?.()
|
||||
__napiInstance.exports['__napi_register__validate_string_192']?.()
|
||||
__napiInstance.exports['__napi_register__validate_symbol_193']?.()
|
||||
__napiInstance.exports['__napi_register__validate_optional_194']?.()
|
||||
__napiInstance.exports['__napi_register__KindInValidate_195']?.()
|
||||
__napiInstance.exports['__napi_register__validate_enum_196']?.()
|
||||
__napiInstance.exports['__napi_register__StatusInValidate_197']?.()
|
||||
__napiInstance.exports['__napi_register__validate_string_enum_198']?.()
|
||||
__napiInstance.exports['__napi_register__return_undefined_if_invalid_199']?.()
|
||||
__napiInstance.exports['__napi_register__return_undefined_if_invalid_promise_200']?.()
|
||||
__napiInstance.exports['__napi_register__ts_rename_201']?.()
|
||||
__napiInstance.exports['__napi_register__override_individual_arg_on_function_202']?.()
|
||||
__napiInstance.exports['__napi_register__override_individual_arg_on_function_with_cb_arg_203']?.()
|
||||
__napiInstance.exports['__napi_register__call0_204']?.()
|
||||
__napiInstance.exports['__napi_register__call1_205']?.()
|
||||
__napiInstance.exports['__napi_register__call2_206']?.()
|
||||
__napiInstance.exports['__napi_register__apply0_207']?.()
|
||||
__napiInstance.exports['__napi_register__apply1_208']?.()
|
||||
__napiInstance.exports['__napi_register__call_function_209']?.()
|
||||
__napiInstance.exports['__napi_register__call_function_with_arg_210']?.()
|
||||
__napiInstance.exports['__napi_register__create_reference_on_function_211']?.()
|
||||
__napiInstance.exports['__napi_register__call_function_with_arg_and_ctx_212']?.()
|
||||
__napiInstance.exports['__napi_register__reference_as_callback_213']?.()
|
||||
__napiInstance.exports['__napi_register__build_threadsafe_function_from_function_214']?.()
|
||||
__napiInstance.exports['__napi_register__build_threadsafe_function_from_function_callee_handle_215']?.()
|
||||
__napiInstance.exports['__napi_register__Fib_struct_216']?.()
|
||||
__napiInstance.exports['__napi_register__Fib_impl_217']?.()
|
||||
__napiInstance.exports['__napi_register__Fib2_struct_218']?.()
|
||||
__napiInstance.exports['__napi_register__Fib2_impl_219']?.()
|
||||
__napiInstance.exports['__napi_register__Fib_impl_219']?.()
|
||||
__napiInstance.exports['__napi_register__Fib2_struct_220']?.()
|
||||
__napiInstance.exports['__napi_register__Fib2_impl_221']?.()
|
||||
__napiInstance.exports['__napi_register__Fib3_struct_222']?.()
|
||||
__napiInstance.exports['__napi_register__Fib3_impl_223']?.()
|
||||
__napiInstance.exports['__napi_register__ALIGNMENT_224']?.()
|
||||
__napiInstance.exports['__napi_register__xxh64_225']?.()
|
||||
__napiInstance.exports['__napi_register__xxh128_226']?.()
|
||||
__napiInstance.exports['__napi_register__Xxh3_struct_227']?.()
|
||||
__napiInstance.exports['__napi_register__Xxh3_impl_231']?.()
|
||||
__napiInstance.exports['__napi_register__xxh2_plus_232']?.()
|
||||
__napiInstance.exports['__napi_register__xxh3_xxh64_alias_233']?.()
|
||||
__napiInstance.exports['__napi_register__xxh64_alias_234']?.()
|
||||
__napiInstance.exports['__napi_register__get_mapping_235']?.()
|
||||
__napiInstance.exports['__napi_register__sum_mapping_236']?.()
|
||||
__napiInstance.exports['__napi_register__get_btree_mapping_237']?.()
|
||||
__napiInstance.exports['__napi_register__sum_btree_mapping_238']?.()
|
||||
__napiInstance.exports['__napi_register__get_index_mapping_239']?.()
|
||||
__napiInstance.exports['__napi_register__sum_index_mapping_240']?.()
|
||||
__napiInstance.exports['__napi_register__indexmap_passthrough_241']?.()
|
||||
__napiInstance.exports['__napi_register__map_option_242']?.()
|
||||
__napiInstance.exports['__napi_register__return_null_243']?.()
|
||||
__napiInstance.exports['__napi_register__return_undefined_244']?.()
|
||||
__napiInstance.exports['__napi_register__UseNullableStruct_struct_245']?.()
|
||||
__napiInstance.exports['__napi_register__NotUseNullableStruct_struct_246']?.()
|
||||
__napiInstance.exports['__napi_register__DefaultUseNullableStruct_struct_247']?.()
|
||||
__napiInstance.exports['__napi_register__UseNullableClass_struct_248']?.()
|
||||
__napiInstance.exports['__napi_register__NotUseNullableClass_struct_249']?.()
|
||||
__napiInstance.exports['__napi_register__DefaultUseNullableClass_struct_250']?.()
|
||||
__napiInstance.exports['__napi_register__add_251']?.()
|
||||
__napiInstance.exports['__napi_register__fibonacci_252']?.()
|
||||
__napiInstance.exports['__napi_register__list_obj_keys_253']?.()
|
||||
__napiInstance.exports['__napi_register__create_obj_254']?.()
|
||||
__napiInstance.exports['__napi_register__get_global_255']?.()
|
||||
__napiInstance.exports['__napi_register__get_undefined_256']?.()
|
||||
__napiInstance.exports['__napi_register__get_null_257']?.()
|
||||
__napiInstance.exports['__napi_register__AllOptionalObject_struct_258']?.()
|
||||
__napiInstance.exports['__napi_register__receive_all_optional_object_259']?.()
|
||||
__napiInstance.exports['__napi_register__AliasedEnum_260']?.()
|
||||
__napiInstance.exports['__napi_register__StructContainsAliasedEnum_struct_261']?.()
|
||||
__napiInstance.exports['__napi_register__fn_received_aliased_262']?.()
|
||||
__napiInstance.exports['__napi_register__StrictObject_struct_263']?.()
|
||||
__napiInstance.exports['__napi_register__receive_strict_object_264']?.()
|
||||
__napiInstance.exports['__napi_register__get_str_from_object_265']?.()
|
||||
__napiInstance.exports['__napi_register__TsTypeChanged_struct_266']?.()
|
||||
__napiInstance.exports['__napi_register__create_obj_with_property_267']?.()
|
||||
__napiInstance.exports['__napi_register__getter_from_obj_268']?.()
|
||||
__napiInstance.exports['__napi_register__ObjectOnlyFromJs_struct_269']?.()
|
||||
__napiInstance.exports['__napi_register__receive_object_only_from_js_270']?.()
|
||||
__napiInstance.exports['__napi_register__object_get_named_property_should_perform_typecheck_271']?.()
|
||||
__napiInstance.exports['__napi_register__ObjectOnlyToJs_struct_272']?.()
|
||||
__napiInstance.exports['__napi_register__return_object_only_to_js_273']?.()
|
||||
__napiInstance.exports['__napi_register__async_plus_100_274']?.()
|
||||
__napiInstance.exports['__napi_register__call_then_on_promise_275']?.()
|
||||
__napiInstance.exports['__napi_register__call_catch_on_promise_276']?.()
|
||||
__napiInstance.exports['__napi_register__call_finally_on_promise_277']?.()
|
||||
__napiInstance.exports['__napi_register__JsRepo_struct_278']?.()
|
||||
__napiInstance.exports['__napi_register__JsRepo_impl_281']?.()
|
||||
__napiInstance.exports['__napi_register__JsRemote_struct_282']?.()
|
||||
__napiInstance.exports['__napi_register__JsRemote_impl_285']?.()
|
||||
__napiInstance.exports['__napi_register__CSSRuleList_struct_286']?.()
|
||||
__napiInstance.exports['__napi_register__CSSRuleList_impl_290']?.()
|
||||
__napiInstance.exports['__napi_register__CSSStyleSheet_struct_291']?.()
|
||||
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_struct_292']?.()
|
||||
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_impl_294']?.()
|
||||
__napiInstance.exports['__napi_register__CSSStyleSheet_impl_298']?.()
|
||||
__napiInstance.exports['__napi_register__PackageJson_struct_299']?.()
|
||||
__napiInstance.exports['__napi_register__read_package_json_300']?.()
|
||||
__napiInstance.exports['__napi_register__get_package_json_name_301']?.()
|
||||
__napiInstance.exports['__napi_register__test_serde_roundtrip_302']?.()
|
||||
__napiInstance.exports['__napi_register__test_serde_big_number_precision_303']?.()
|
||||
__napiInstance.exports['__napi_register__test_serde_buffer_bytes_304']?.()
|
||||
__napiInstance.exports['__napi_register__return_from_shared_crate_305']?.()
|
||||
__napiInstance.exports['__napi_register__contains_306']?.()
|
||||
__napiInstance.exports['__napi_register__concat_str_307']?.()
|
||||
__napiInstance.exports['__napi_register__concat_utf16_308']?.()
|
||||
__napiInstance.exports['__napi_register__concat_latin1_309']?.()
|
||||
__napiInstance.exports['__napi_register__roundtrip_str_310']?.()
|
||||
__napiInstance.exports['__napi_register__set_symbol_in_obj_311']?.()
|
||||
__napiInstance.exports['__napi_register__create_symbol_312']?.()
|
||||
__napiInstance.exports['__napi_register__create_symbol_for_313']?.()
|
||||
__napiInstance.exports['__napi_register__DelaySum_impl_314']?.()
|
||||
__napiInstance.exports['__napi_register__without_abort_controller_315']?.()
|
||||
__napiInstance.exports['__napi_register__with_abort_controller_316']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskVoidReturn_impl_317']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_void_return_318']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskOptionalReturn_impl_319']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_optional_return_320']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskReadFile_impl_321']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_read_file_322']?.()
|
||||
__napiInstance.exports['__napi_register__call_threadsafe_function_323']?.()
|
||||
__napiInstance.exports['__napi_register__call_long_threadsafe_function_324']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_throw_error_325']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_326']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_error_327']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_closure_capture_328']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_call_with_callback_329']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_async_call_330']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_331']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_fatal_332']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_tuple_args_333']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_334']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_timeout_335']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_throw_from_js_336']?.()
|
||||
__napiInstance.exports['__napi_register__spawn_thread_in_thread_337']?.()
|
||||
__napiInstance.exports['__napi_register__Pet_struct_338']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_in_either_339']?.()
|
||||
__napiInstance.exports['__napi_register__get_buffer_340']?.()
|
||||
__napiInstance.exports['__napi_register__append_buffer_341']?.()
|
||||
__napiInstance.exports['__napi_register__get_empty_buffer_342']?.()
|
||||
__napiInstance.exports['__napi_register__convert_u32_array_343']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_typed_array_344']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_typed_array_345']?.()
|
||||
__napiInstance.exports['__napi_register__deref_uint8_array_346']?.()
|
||||
__napiInstance.exports['__napi_register__buffer_pass_through_347']?.()
|
||||
__napiInstance.exports['__napi_register__array_buffer_pass_through_348']?.()
|
||||
__napiInstance.exports['__napi_register__accept_slice_349']?.()
|
||||
__napiInstance.exports['__napi_register__accept_arraybuffer_350']?.()
|
||||
__napiInstance.exports['__napi_register__u8_array_to_array_351']?.()
|
||||
__napiInstance.exports['__napi_register__i8_array_to_array_352']?.()
|
||||
__napiInstance.exports['__napi_register__u16_array_to_array_353']?.()
|
||||
__napiInstance.exports['__napi_register__i16_array_to_array_354']?.()
|
||||
__napiInstance.exports['__napi_register__u32_array_to_array_355']?.()
|
||||
__napiInstance.exports['__napi_register__i32_array_to_array_356']?.()
|
||||
__napiInstance.exports['__napi_register__f32_array_to_array_357']?.()
|
||||
__napiInstance.exports['__napi_register__f64_array_to_array_358']?.()
|
||||
__napiInstance.exports['__napi_register__u64_array_to_array_359']?.()
|
||||
__napiInstance.exports['__napi_register__i64_array_to_array_360']?.()
|
||||
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_361']?.()
|
||||
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_and_buffer_slice_362']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncBuffer_impl_363']?.()
|
||||
__napiInstance.exports['__napi_register__async_reduce_buffer_364']?.()
|
||||
__napiInstance.exports['__napi_register__async_buffer_to_array_365']?.()
|
||||
__napiInstance.exports['__napi_register__u_init8_array_from_string_366']?.()
|
||||
__napiInstance.exports['__napi_register__Fib2_impl_223']?.()
|
||||
__napiInstance.exports['__napi_register__Fib3_struct_224']?.()
|
||||
__napiInstance.exports['__napi_register__Fib3_impl_225']?.()
|
||||
__napiInstance.exports['__napi_register__ALIGNMENT_226']?.()
|
||||
__napiInstance.exports['__napi_register__xxh64_227']?.()
|
||||
__napiInstance.exports['__napi_register__xxh128_228']?.()
|
||||
__napiInstance.exports['__napi_register__Xxh3_struct_229']?.()
|
||||
__napiInstance.exports['__napi_register__Xxh3_impl_233']?.()
|
||||
__napiInstance.exports['__napi_register__xxh2_plus_234']?.()
|
||||
__napiInstance.exports['__napi_register__xxh3_xxh64_alias_235']?.()
|
||||
__napiInstance.exports['__napi_register__xxh64_alias_236']?.()
|
||||
__napiInstance.exports['__napi_register__get_mapping_237']?.()
|
||||
__napiInstance.exports['__napi_register__sum_mapping_238']?.()
|
||||
__napiInstance.exports['__napi_register__get_btree_mapping_239']?.()
|
||||
__napiInstance.exports['__napi_register__sum_btree_mapping_240']?.()
|
||||
__napiInstance.exports['__napi_register__get_index_mapping_241']?.()
|
||||
__napiInstance.exports['__napi_register__sum_index_mapping_242']?.()
|
||||
__napiInstance.exports['__napi_register__indexmap_passthrough_243']?.()
|
||||
__napiInstance.exports['__napi_register__map_option_244']?.()
|
||||
__napiInstance.exports['__napi_register__return_null_245']?.()
|
||||
__napiInstance.exports['__napi_register__return_undefined_246']?.()
|
||||
__napiInstance.exports['__napi_register__UseNullableStruct_struct_247']?.()
|
||||
__napiInstance.exports['__napi_register__NotUseNullableStruct_struct_248']?.()
|
||||
__napiInstance.exports['__napi_register__DefaultUseNullableStruct_struct_249']?.()
|
||||
__napiInstance.exports['__napi_register__UseNullableClass_struct_250']?.()
|
||||
__napiInstance.exports['__napi_register__NotUseNullableClass_struct_251']?.()
|
||||
__napiInstance.exports['__napi_register__DefaultUseNullableClass_struct_252']?.()
|
||||
__napiInstance.exports['__napi_register__add_253']?.()
|
||||
__napiInstance.exports['__napi_register__fibonacci_254']?.()
|
||||
__napiInstance.exports['__napi_register__list_obj_keys_255']?.()
|
||||
__napiInstance.exports['__napi_register__create_obj_256']?.()
|
||||
__napiInstance.exports['__napi_register__get_global_257']?.()
|
||||
__napiInstance.exports['__napi_register__get_undefined_258']?.()
|
||||
__napiInstance.exports['__napi_register__get_null_259']?.()
|
||||
__napiInstance.exports['__napi_register__AllOptionalObject_struct_260']?.()
|
||||
__napiInstance.exports['__napi_register__receive_all_optional_object_261']?.()
|
||||
__napiInstance.exports['__napi_register__AliasedEnum_262']?.()
|
||||
__napiInstance.exports['__napi_register__StructContainsAliasedEnum_struct_263']?.()
|
||||
__napiInstance.exports['__napi_register__fn_received_aliased_264']?.()
|
||||
__napiInstance.exports['__napi_register__StrictObject_struct_265']?.()
|
||||
__napiInstance.exports['__napi_register__receive_strict_object_266']?.()
|
||||
__napiInstance.exports['__napi_register__get_str_from_object_267']?.()
|
||||
__napiInstance.exports['__napi_register__TsTypeChanged_struct_268']?.()
|
||||
__napiInstance.exports['__napi_register__create_obj_with_property_269']?.()
|
||||
__napiInstance.exports['__napi_register__getter_from_obj_270']?.()
|
||||
__napiInstance.exports['__napi_register__ObjectOnlyFromJs_struct_271']?.()
|
||||
__napiInstance.exports['__napi_register__receive_object_only_from_js_272']?.()
|
||||
__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']?.()
|
||||
}
|
||||
export const Animal = __napiModule.exports.Animal
|
||||
export const AnimalWithDefaultConstructor = __napiModule.exports.AnimalWithDefaultConstructor
|
||||
@ -605,6 +607,7 @@ export const validateOptional = __napiModule.exports.validateOptional
|
||||
export const validatePromise = __napiModule.exports.validatePromise
|
||||
export const validateString = __napiModule.exports.validateString
|
||||
export const validateStringEnum = __napiModule.exports.validateStringEnum
|
||||
export const validateStructuredEnum = __napiModule.exports.validateStructuredEnum
|
||||
export const validateSymbol = __napiModule.exports.validateSymbol
|
||||
export const validateTypedArray = __napiModule.exports.validateTypedArray
|
||||
export const validateTypedArraySlice = __napiModule.exports.validateTypedArraySlice
|
||||
|
||||
@ -191,201 +191,203 @@ function __napi_rs_initialize_modules(__napiInstance) {
|
||||
__napiInstance.exports['__napi_register__enum_to_i32_151']?.()
|
||||
__napiInstance.exports['__napi_register__SkippedEnums_152']?.()
|
||||
__napiInstance.exports['__napi_register__CustomStringEnum_153']?.()
|
||||
__napiInstance.exports['__napi_register__run_script_154']?.()
|
||||
__napiInstance.exports['__napi_register__get_module_file_name_155']?.()
|
||||
__napiInstance.exports['__napi_register__throw_syntax_error_156']?.()
|
||||
__napiInstance.exports['__napi_register__throw_error_157']?.()
|
||||
__napiInstance.exports['__napi_register__panic_158']?.()
|
||||
__napiInstance.exports['__napi_register__receive_string_159']?.()
|
||||
__napiInstance.exports['__napi_register__custom_status_code_160']?.()
|
||||
__napiInstance.exports['__napi_register__throw_async_error_161']?.()
|
||||
__napiInstance.exports['__napi_register__CustomStruct_struct_162']?.()
|
||||
__napiInstance.exports['__napi_register__CustomStruct_impl_165']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_166']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_string_167']?.()
|
||||
__napiInstance.exports['__napi_register__get_external_168']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_external_169']?.()
|
||||
__napiInstance.exports['__napi_register__create_optional_external_170']?.()
|
||||
__napiInstance.exports['__napi_register__get_optional_external_171']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_optional_external_172']?.()
|
||||
__napiInstance.exports['__napi_register__validate_array_173']?.()
|
||||
__napiInstance.exports['__napi_register__validate_buffer_174']?.()
|
||||
__napiInstance.exports['__napi_register__validate_typed_array_175']?.()
|
||||
__napiInstance.exports['__napi_register__validate_typed_array_slice_176']?.()
|
||||
__napiInstance.exports['__napi_register__validate_uint8_clamped_slice_177']?.()
|
||||
__napiInstance.exports['__napi_register__validate_buffer_slice_178']?.()
|
||||
__napiInstance.exports['__napi_register__validate_bigint_179']?.()
|
||||
__napiInstance.exports['__napi_register__validate_boolean_180']?.()
|
||||
__napiInstance.exports['__napi_register__validate_date_181']?.()
|
||||
__napiInstance.exports['__napi_register__validate_date_time_182']?.()
|
||||
__napiInstance.exports['__napi_register__validate_external_183']?.()
|
||||
__napiInstance.exports['__napi_register__validate_function_184']?.()
|
||||
__napiInstance.exports['__napi_register__validate_hash_map_185']?.()
|
||||
__napiInstance.exports['__napi_register__validate_null_186']?.()
|
||||
__napiInstance.exports['__napi_register__validate_undefined_187']?.()
|
||||
__napiInstance.exports['__napi_register__validate_number_188']?.()
|
||||
__napiInstance.exports['__napi_register__validate_promise_189']?.()
|
||||
__napiInstance.exports['__napi_register__validate_string_190']?.()
|
||||
__napiInstance.exports['__napi_register__validate_symbol_191']?.()
|
||||
__napiInstance.exports['__napi_register__validate_optional_192']?.()
|
||||
__napiInstance.exports['__napi_register__KindInValidate_193']?.()
|
||||
__napiInstance.exports['__napi_register__validate_enum_194']?.()
|
||||
__napiInstance.exports['__napi_register__StatusInValidate_195']?.()
|
||||
__napiInstance.exports['__napi_register__validate_string_enum_196']?.()
|
||||
__napiInstance.exports['__napi_register__return_undefined_if_invalid_197']?.()
|
||||
__napiInstance.exports['__napi_register__return_undefined_if_invalid_promise_198']?.()
|
||||
__napiInstance.exports['__napi_register__ts_rename_199']?.()
|
||||
__napiInstance.exports['__napi_register__override_individual_arg_on_function_200']?.()
|
||||
__napiInstance.exports['__napi_register__override_individual_arg_on_function_with_cb_arg_201']?.()
|
||||
__napiInstance.exports['__napi_register__call0_202']?.()
|
||||
__napiInstance.exports['__napi_register__call1_203']?.()
|
||||
__napiInstance.exports['__napi_register__call2_204']?.()
|
||||
__napiInstance.exports['__napi_register__apply0_205']?.()
|
||||
__napiInstance.exports['__napi_register__apply1_206']?.()
|
||||
__napiInstance.exports['__napi_register__call_function_207']?.()
|
||||
__napiInstance.exports['__napi_register__call_function_with_arg_208']?.()
|
||||
__napiInstance.exports['__napi_register__create_reference_on_function_209']?.()
|
||||
__napiInstance.exports['__napi_register__call_function_with_arg_and_ctx_210']?.()
|
||||
__napiInstance.exports['__napi_register__reference_as_callback_211']?.()
|
||||
__napiInstance.exports['__napi_register__build_threadsafe_function_from_function_212']?.()
|
||||
__napiInstance.exports['__napi_register__build_threadsafe_function_from_function_callee_handle_213']?.()
|
||||
__napiInstance.exports['__napi_register__Fib_struct_214']?.()
|
||||
__napiInstance.exports['__napi_register__Fib_impl_215']?.()
|
||||
__napiInstance.exports['__napi_register__StructuredKind_struct_154']?.()
|
||||
__napiInstance.exports['__napi_register__validate_structured_enum_155']?.()
|
||||
__napiInstance.exports['__napi_register__run_script_156']?.()
|
||||
__napiInstance.exports['__napi_register__get_module_file_name_157']?.()
|
||||
__napiInstance.exports['__napi_register__throw_syntax_error_158']?.()
|
||||
__napiInstance.exports['__napi_register__throw_error_159']?.()
|
||||
__napiInstance.exports['__napi_register__panic_160']?.()
|
||||
__napiInstance.exports['__napi_register__receive_string_161']?.()
|
||||
__napiInstance.exports['__napi_register__custom_status_code_162']?.()
|
||||
__napiInstance.exports['__napi_register__throw_async_error_163']?.()
|
||||
__napiInstance.exports['__napi_register__CustomStruct_struct_164']?.()
|
||||
__napiInstance.exports['__napi_register__CustomStruct_impl_167']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_168']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_string_169']?.()
|
||||
__napiInstance.exports['__napi_register__get_external_170']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_external_171']?.()
|
||||
__napiInstance.exports['__napi_register__create_optional_external_172']?.()
|
||||
__napiInstance.exports['__napi_register__get_optional_external_173']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_optional_external_174']?.()
|
||||
__napiInstance.exports['__napi_register__validate_array_175']?.()
|
||||
__napiInstance.exports['__napi_register__validate_buffer_176']?.()
|
||||
__napiInstance.exports['__napi_register__validate_typed_array_177']?.()
|
||||
__napiInstance.exports['__napi_register__validate_typed_array_slice_178']?.()
|
||||
__napiInstance.exports['__napi_register__validate_uint8_clamped_slice_179']?.()
|
||||
__napiInstance.exports['__napi_register__validate_buffer_slice_180']?.()
|
||||
__napiInstance.exports['__napi_register__validate_bigint_181']?.()
|
||||
__napiInstance.exports['__napi_register__validate_boolean_182']?.()
|
||||
__napiInstance.exports['__napi_register__validate_date_183']?.()
|
||||
__napiInstance.exports['__napi_register__validate_date_time_184']?.()
|
||||
__napiInstance.exports['__napi_register__validate_external_185']?.()
|
||||
__napiInstance.exports['__napi_register__validate_function_186']?.()
|
||||
__napiInstance.exports['__napi_register__validate_hash_map_187']?.()
|
||||
__napiInstance.exports['__napi_register__validate_null_188']?.()
|
||||
__napiInstance.exports['__napi_register__validate_undefined_189']?.()
|
||||
__napiInstance.exports['__napi_register__validate_number_190']?.()
|
||||
__napiInstance.exports['__napi_register__validate_promise_191']?.()
|
||||
__napiInstance.exports['__napi_register__validate_string_192']?.()
|
||||
__napiInstance.exports['__napi_register__validate_symbol_193']?.()
|
||||
__napiInstance.exports['__napi_register__validate_optional_194']?.()
|
||||
__napiInstance.exports['__napi_register__KindInValidate_195']?.()
|
||||
__napiInstance.exports['__napi_register__validate_enum_196']?.()
|
||||
__napiInstance.exports['__napi_register__StatusInValidate_197']?.()
|
||||
__napiInstance.exports['__napi_register__validate_string_enum_198']?.()
|
||||
__napiInstance.exports['__napi_register__return_undefined_if_invalid_199']?.()
|
||||
__napiInstance.exports['__napi_register__return_undefined_if_invalid_promise_200']?.()
|
||||
__napiInstance.exports['__napi_register__ts_rename_201']?.()
|
||||
__napiInstance.exports['__napi_register__override_individual_arg_on_function_202']?.()
|
||||
__napiInstance.exports['__napi_register__override_individual_arg_on_function_with_cb_arg_203']?.()
|
||||
__napiInstance.exports['__napi_register__call0_204']?.()
|
||||
__napiInstance.exports['__napi_register__call1_205']?.()
|
||||
__napiInstance.exports['__napi_register__call2_206']?.()
|
||||
__napiInstance.exports['__napi_register__apply0_207']?.()
|
||||
__napiInstance.exports['__napi_register__apply1_208']?.()
|
||||
__napiInstance.exports['__napi_register__call_function_209']?.()
|
||||
__napiInstance.exports['__napi_register__call_function_with_arg_210']?.()
|
||||
__napiInstance.exports['__napi_register__create_reference_on_function_211']?.()
|
||||
__napiInstance.exports['__napi_register__call_function_with_arg_and_ctx_212']?.()
|
||||
__napiInstance.exports['__napi_register__reference_as_callback_213']?.()
|
||||
__napiInstance.exports['__napi_register__build_threadsafe_function_from_function_214']?.()
|
||||
__napiInstance.exports['__napi_register__build_threadsafe_function_from_function_callee_handle_215']?.()
|
||||
__napiInstance.exports['__napi_register__Fib_struct_216']?.()
|
||||
__napiInstance.exports['__napi_register__Fib_impl_217']?.()
|
||||
__napiInstance.exports['__napi_register__Fib2_struct_218']?.()
|
||||
__napiInstance.exports['__napi_register__Fib2_impl_219']?.()
|
||||
__napiInstance.exports['__napi_register__Fib_impl_219']?.()
|
||||
__napiInstance.exports['__napi_register__Fib2_struct_220']?.()
|
||||
__napiInstance.exports['__napi_register__Fib2_impl_221']?.()
|
||||
__napiInstance.exports['__napi_register__Fib3_struct_222']?.()
|
||||
__napiInstance.exports['__napi_register__Fib3_impl_223']?.()
|
||||
__napiInstance.exports['__napi_register__ALIGNMENT_224']?.()
|
||||
__napiInstance.exports['__napi_register__xxh64_225']?.()
|
||||
__napiInstance.exports['__napi_register__xxh128_226']?.()
|
||||
__napiInstance.exports['__napi_register__Xxh3_struct_227']?.()
|
||||
__napiInstance.exports['__napi_register__Xxh3_impl_231']?.()
|
||||
__napiInstance.exports['__napi_register__xxh2_plus_232']?.()
|
||||
__napiInstance.exports['__napi_register__xxh3_xxh64_alias_233']?.()
|
||||
__napiInstance.exports['__napi_register__xxh64_alias_234']?.()
|
||||
__napiInstance.exports['__napi_register__get_mapping_235']?.()
|
||||
__napiInstance.exports['__napi_register__sum_mapping_236']?.()
|
||||
__napiInstance.exports['__napi_register__get_btree_mapping_237']?.()
|
||||
__napiInstance.exports['__napi_register__sum_btree_mapping_238']?.()
|
||||
__napiInstance.exports['__napi_register__get_index_mapping_239']?.()
|
||||
__napiInstance.exports['__napi_register__sum_index_mapping_240']?.()
|
||||
__napiInstance.exports['__napi_register__indexmap_passthrough_241']?.()
|
||||
__napiInstance.exports['__napi_register__map_option_242']?.()
|
||||
__napiInstance.exports['__napi_register__return_null_243']?.()
|
||||
__napiInstance.exports['__napi_register__return_undefined_244']?.()
|
||||
__napiInstance.exports['__napi_register__UseNullableStruct_struct_245']?.()
|
||||
__napiInstance.exports['__napi_register__NotUseNullableStruct_struct_246']?.()
|
||||
__napiInstance.exports['__napi_register__DefaultUseNullableStruct_struct_247']?.()
|
||||
__napiInstance.exports['__napi_register__UseNullableClass_struct_248']?.()
|
||||
__napiInstance.exports['__napi_register__NotUseNullableClass_struct_249']?.()
|
||||
__napiInstance.exports['__napi_register__DefaultUseNullableClass_struct_250']?.()
|
||||
__napiInstance.exports['__napi_register__add_251']?.()
|
||||
__napiInstance.exports['__napi_register__fibonacci_252']?.()
|
||||
__napiInstance.exports['__napi_register__list_obj_keys_253']?.()
|
||||
__napiInstance.exports['__napi_register__create_obj_254']?.()
|
||||
__napiInstance.exports['__napi_register__get_global_255']?.()
|
||||
__napiInstance.exports['__napi_register__get_undefined_256']?.()
|
||||
__napiInstance.exports['__napi_register__get_null_257']?.()
|
||||
__napiInstance.exports['__napi_register__AllOptionalObject_struct_258']?.()
|
||||
__napiInstance.exports['__napi_register__receive_all_optional_object_259']?.()
|
||||
__napiInstance.exports['__napi_register__AliasedEnum_260']?.()
|
||||
__napiInstance.exports['__napi_register__StructContainsAliasedEnum_struct_261']?.()
|
||||
__napiInstance.exports['__napi_register__fn_received_aliased_262']?.()
|
||||
__napiInstance.exports['__napi_register__StrictObject_struct_263']?.()
|
||||
__napiInstance.exports['__napi_register__receive_strict_object_264']?.()
|
||||
__napiInstance.exports['__napi_register__get_str_from_object_265']?.()
|
||||
__napiInstance.exports['__napi_register__TsTypeChanged_struct_266']?.()
|
||||
__napiInstance.exports['__napi_register__create_obj_with_property_267']?.()
|
||||
__napiInstance.exports['__napi_register__getter_from_obj_268']?.()
|
||||
__napiInstance.exports['__napi_register__ObjectOnlyFromJs_struct_269']?.()
|
||||
__napiInstance.exports['__napi_register__receive_object_only_from_js_270']?.()
|
||||
__napiInstance.exports['__napi_register__object_get_named_property_should_perform_typecheck_271']?.()
|
||||
__napiInstance.exports['__napi_register__ObjectOnlyToJs_struct_272']?.()
|
||||
__napiInstance.exports['__napi_register__return_object_only_to_js_273']?.()
|
||||
__napiInstance.exports['__napi_register__async_plus_100_274']?.()
|
||||
__napiInstance.exports['__napi_register__call_then_on_promise_275']?.()
|
||||
__napiInstance.exports['__napi_register__call_catch_on_promise_276']?.()
|
||||
__napiInstance.exports['__napi_register__call_finally_on_promise_277']?.()
|
||||
__napiInstance.exports['__napi_register__JsRepo_struct_278']?.()
|
||||
__napiInstance.exports['__napi_register__JsRepo_impl_281']?.()
|
||||
__napiInstance.exports['__napi_register__JsRemote_struct_282']?.()
|
||||
__napiInstance.exports['__napi_register__JsRemote_impl_285']?.()
|
||||
__napiInstance.exports['__napi_register__CSSRuleList_struct_286']?.()
|
||||
__napiInstance.exports['__napi_register__CSSRuleList_impl_290']?.()
|
||||
__napiInstance.exports['__napi_register__CSSStyleSheet_struct_291']?.()
|
||||
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_struct_292']?.()
|
||||
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_impl_294']?.()
|
||||
__napiInstance.exports['__napi_register__CSSStyleSheet_impl_298']?.()
|
||||
__napiInstance.exports['__napi_register__PackageJson_struct_299']?.()
|
||||
__napiInstance.exports['__napi_register__read_package_json_300']?.()
|
||||
__napiInstance.exports['__napi_register__get_package_json_name_301']?.()
|
||||
__napiInstance.exports['__napi_register__test_serde_roundtrip_302']?.()
|
||||
__napiInstance.exports['__napi_register__test_serde_big_number_precision_303']?.()
|
||||
__napiInstance.exports['__napi_register__test_serde_buffer_bytes_304']?.()
|
||||
__napiInstance.exports['__napi_register__return_from_shared_crate_305']?.()
|
||||
__napiInstance.exports['__napi_register__contains_306']?.()
|
||||
__napiInstance.exports['__napi_register__concat_str_307']?.()
|
||||
__napiInstance.exports['__napi_register__concat_utf16_308']?.()
|
||||
__napiInstance.exports['__napi_register__concat_latin1_309']?.()
|
||||
__napiInstance.exports['__napi_register__roundtrip_str_310']?.()
|
||||
__napiInstance.exports['__napi_register__set_symbol_in_obj_311']?.()
|
||||
__napiInstance.exports['__napi_register__create_symbol_312']?.()
|
||||
__napiInstance.exports['__napi_register__create_symbol_for_313']?.()
|
||||
__napiInstance.exports['__napi_register__DelaySum_impl_314']?.()
|
||||
__napiInstance.exports['__napi_register__without_abort_controller_315']?.()
|
||||
__napiInstance.exports['__napi_register__with_abort_controller_316']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskVoidReturn_impl_317']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_void_return_318']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskOptionalReturn_impl_319']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_optional_return_320']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncTaskReadFile_impl_321']?.()
|
||||
__napiInstance.exports['__napi_register__async_task_read_file_322']?.()
|
||||
__napiInstance.exports['__napi_register__call_threadsafe_function_323']?.()
|
||||
__napiInstance.exports['__napi_register__call_long_threadsafe_function_324']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_throw_error_325']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_326']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_error_327']?.()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_closure_capture_328']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_call_with_callback_329']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_async_call_330']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_331']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_fatal_332']?.()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_tuple_args_333']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_334']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_timeout_335']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_throw_from_js_336']?.()
|
||||
__napiInstance.exports['__napi_register__spawn_thread_in_thread_337']?.()
|
||||
__napiInstance.exports['__napi_register__Pet_struct_338']?.()
|
||||
__napiInstance.exports['__napi_register__tsfn_in_either_339']?.()
|
||||
__napiInstance.exports['__napi_register__get_buffer_340']?.()
|
||||
__napiInstance.exports['__napi_register__append_buffer_341']?.()
|
||||
__napiInstance.exports['__napi_register__get_empty_buffer_342']?.()
|
||||
__napiInstance.exports['__napi_register__convert_u32_array_343']?.()
|
||||
__napiInstance.exports['__napi_register__create_external_typed_array_344']?.()
|
||||
__napiInstance.exports['__napi_register__mutate_typed_array_345']?.()
|
||||
__napiInstance.exports['__napi_register__deref_uint8_array_346']?.()
|
||||
__napiInstance.exports['__napi_register__buffer_pass_through_347']?.()
|
||||
__napiInstance.exports['__napi_register__array_buffer_pass_through_348']?.()
|
||||
__napiInstance.exports['__napi_register__accept_slice_349']?.()
|
||||
__napiInstance.exports['__napi_register__accept_arraybuffer_350']?.()
|
||||
__napiInstance.exports['__napi_register__u8_array_to_array_351']?.()
|
||||
__napiInstance.exports['__napi_register__i8_array_to_array_352']?.()
|
||||
__napiInstance.exports['__napi_register__u16_array_to_array_353']?.()
|
||||
__napiInstance.exports['__napi_register__i16_array_to_array_354']?.()
|
||||
__napiInstance.exports['__napi_register__u32_array_to_array_355']?.()
|
||||
__napiInstance.exports['__napi_register__i32_array_to_array_356']?.()
|
||||
__napiInstance.exports['__napi_register__f32_array_to_array_357']?.()
|
||||
__napiInstance.exports['__napi_register__f64_array_to_array_358']?.()
|
||||
__napiInstance.exports['__napi_register__u64_array_to_array_359']?.()
|
||||
__napiInstance.exports['__napi_register__i64_array_to_array_360']?.()
|
||||
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_361']?.()
|
||||
__napiInstance.exports['__napi_register__accept_uint8_clamped_slice_and_buffer_slice_362']?.()
|
||||
__napiInstance.exports['__napi_register__AsyncBuffer_impl_363']?.()
|
||||
__napiInstance.exports['__napi_register__async_reduce_buffer_364']?.()
|
||||
__napiInstance.exports['__napi_register__async_buffer_to_array_365']?.()
|
||||
__napiInstance.exports['__napi_register__u_init8_array_from_string_366']?.()
|
||||
__napiInstance.exports['__napi_register__Fib2_impl_223']?.()
|
||||
__napiInstance.exports['__napi_register__Fib3_struct_224']?.()
|
||||
__napiInstance.exports['__napi_register__Fib3_impl_225']?.()
|
||||
__napiInstance.exports['__napi_register__ALIGNMENT_226']?.()
|
||||
__napiInstance.exports['__napi_register__xxh64_227']?.()
|
||||
__napiInstance.exports['__napi_register__xxh128_228']?.()
|
||||
__napiInstance.exports['__napi_register__Xxh3_struct_229']?.()
|
||||
__napiInstance.exports['__napi_register__Xxh3_impl_233']?.()
|
||||
__napiInstance.exports['__napi_register__xxh2_plus_234']?.()
|
||||
__napiInstance.exports['__napi_register__xxh3_xxh64_alias_235']?.()
|
||||
__napiInstance.exports['__napi_register__xxh64_alias_236']?.()
|
||||
__napiInstance.exports['__napi_register__get_mapping_237']?.()
|
||||
__napiInstance.exports['__napi_register__sum_mapping_238']?.()
|
||||
__napiInstance.exports['__napi_register__get_btree_mapping_239']?.()
|
||||
__napiInstance.exports['__napi_register__sum_btree_mapping_240']?.()
|
||||
__napiInstance.exports['__napi_register__get_index_mapping_241']?.()
|
||||
__napiInstance.exports['__napi_register__sum_index_mapping_242']?.()
|
||||
__napiInstance.exports['__napi_register__indexmap_passthrough_243']?.()
|
||||
__napiInstance.exports['__napi_register__map_option_244']?.()
|
||||
__napiInstance.exports['__napi_register__return_null_245']?.()
|
||||
__napiInstance.exports['__napi_register__return_undefined_246']?.()
|
||||
__napiInstance.exports['__napi_register__UseNullableStruct_struct_247']?.()
|
||||
__napiInstance.exports['__napi_register__NotUseNullableStruct_struct_248']?.()
|
||||
__napiInstance.exports['__napi_register__DefaultUseNullableStruct_struct_249']?.()
|
||||
__napiInstance.exports['__napi_register__UseNullableClass_struct_250']?.()
|
||||
__napiInstance.exports['__napi_register__NotUseNullableClass_struct_251']?.()
|
||||
__napiInstance.exports['__napi_register__DefaultUseNullableClass_struct_252']?.()
|
||||
__napiInstance.exports['__napi_register__add_253']?.()
|
||||
__napiInstance.exports['__napi_register__fibonacci_254']?.()
|
||||
__napiInstance.exports['__napi_register__list_obj_keys_255']?.()
|
||||
__napiInstance.exports['__napi_register__create_obj_256']?.()
|
||||
__napiInstance.exports['__napi_register__get_global_257']?.()
|
||||
__napiInstance.exports['__napi_register__get_undefined_258']?.()
|
||||
__napiInstance.exports['__napi_register__get_null_259']?.()
|
||||
__napiInstance.exports['__napi_register__AllOptionalObject_struct_260']?.()
|
||||
__napiInstance.exports['__napi_register__receive_all_optional_object_261']?.()
|
||||
__napiInstance.exports['__napi_register__AliasedEnum_262']?.()
|
||||
__napiInstance.exports['__napi_register__StructContainsAliasedEnum_struct_263']?.()
|
||||
__napiInstance.exports['__napi_register__fn_received_aliased_264']?.()
|
||||
__napiInstance.exports['__napi_register__StrictObject_struct_265']?.()
|
||||
__napiInstance.exports['__napi_register__receive_strict_object_266']?.()
|
||||
__napiInstance.exports['__napi_register__get_str_from_object_267']?.()
|
||||
__napiInstance.exports['__napi_register__TsTypeChanged_struct_268']?.()
|
||||
__napiInstance.exports['__napi_register__create_obj_with_property_269']?.()
|
||||
__napiInstance.exports['__napi_register__getter_from_obj_270']?.()
|
||||
__napiInstance.exports['__napi_register__ObjectOnlyFromJs_struct_271']?.()
|
||||
__napiInstance.exports['__napi_register__receive_object_only_from_js_272']?.()
|
||||
__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']?.()
|
||||
}
|
||||
module.exports.Animal = __napiModule.exports.Animal
|
||||
module.exports.AnimalWithDefaultConstructor = __napiModule.exports.AnimalWithDefaultConstructor
|
||||
@ -629,6 +631,7 @@ module.exports.validateOptional = __napiModule.exports.validateOptional
|
||||
module.exports.validatePromise = __napiModule.exports.validatePromise
|
||||
module.exports.validateString = __napiModule.exports.validateString
|
||||
module.exports.validateStringEnum = __napiModule.exports.validateStringEnum
|
||||
module.exports.validateStructuredEnum = __napiModule.exports.validateStructuredEnum
|
||||
module.exports.validateSymbol = __napiModule.exports.validateSymbol
|
||||
module.exports.validateTypedArray = __napiModule.exports.validateTypedArray
|
||||
module.exports.validateTypedArraySlice = __napiModule.exports.validateTypedArraySlice
|
||||
|
||||
@ -603,6 +603,7 @@ module.exports.validateOptional = nativeBinding.validateOptional
|
||||
module.exports.validatePromise = nativeBinding.validatePromise
|
||||
module.exports.validateString = nativeBinding.validateString
|
||||
module.exports.validateStringEnum = nativeBinding.validateStringEnum
|
||||
module.exports.validateStructuredEnum = nativeBinding.validateStructuredEnum
|
||||
module.exports.validateSymbol = nativeBinding.validateSymbol
|
||||
module.exports.validateTypedArray = nativeBinding.validateTypedArray
|
||||
module.exports.validateTypedArraySlice = nativeBinding.validateTypedArraySlice
|
||||
|
||||
@ -690,6 +690,11 @@ export declare const enum StringEnum {
|
||||
VariantThree = 'variantthree'
|
||||
}
|
||||
|
||||
export type StructuredKind =
|
||||
| { type2: 'Hello' }
|
||||
| { type2: 'Greeting', name: string }
|
||||
| { type2: 'Birthday', name: string, age: number }
|
||||
|
||||
export declare function sumBtreeMapping(nums: Record<string, number>): number
|
||||
|
||||
export declare function sumIndexMapping(nums: Record<string, number>): number
|
||||
@ -795,6 +800,8 @@ export declare function validateString(s: string): string
|
||||
|
||||
export declare function validateStringEnum(input: StatusInValidate): string
|
||||
|
||||
export declare function validateStructuredEnum(kind: StructuredKind): StructuredKind
|
||||
|
||||
export declare function validateSymbol(s: symbol): boolean
|
||||
|
||||
export declare function validateTypedArray(input: Uint8Array): number
|
||||
|
||||
@ -60,3 +60,15 @@ pub enum CustomStringEnum {
|
||||
Bar,
|
||||
Baz,
|
||||
}
|
||||
|
||||
#[napi(discriminant = "type2")]
|
||||
pub enum StructuredKind {
|
||||
Hello,
|
||||
Greeting { name: String },
|
||||
Birthday { name: String, age: u8 },
|
||||
}
|
||||
|
||||
#[napi]
|
||||
pub fn validate_structured_enum(kind: StructuredKind) -> StructuredKind {
|
||||
kind
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user