test(napi): add tests for napi9 features (#1784)
This commit is contained in:
parent
4e4d891ad8
commit
feabcd7f16
10 changed files with 191 additions and 156 deletions
2
.github/workflows/test-release.yaml
vendored
2
.github/workflows/test-release.yaml
vendored
|
@ -523,7 +523,6 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
name: Test latest bun
|
||||
timeout-minutes: 10
|
||||
continue-on-error: true
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: oven-sh/setup-bun@v1
|
||||
|
@ -554,6 +553,7 @@ jobs:
|
|||
bun run build
|
||||
bun run build:test
|
||||
- name: Test
|
||||
continue-on-error: true
|
||||
run: bun run test:bun
|
||||
|
||||
release-npm:
|
||||
|
|
|
@ -37,7 +37,7 @@ napi5 = ["napi4", "napi-sys/napi5"]
|
|||
napi6 = ["napi5", "napi-sys/napi6"]
|
||||
napi7 = ["napi6", "napi-sys/napi7"]
|
||||
napi8 = ["napi7", "napi-sys/napi8"]
|
||||
napi9 = ["napi8", "napi-sys/napi9", "byteorder"]
|
||||
napi9 = ["napi8", "napi-sys/napi9"]
|
||||
noop = []
|
||||
serde-json = ["serde", "serde_json"]
|
||||
tokio_fs = ["tokio/fs"]
|
||||
|
@ -75,10 +75,6 @@ version = "0.8"
|
|||
optional = true
|
||||
version = "0.4"
|
||||
|
||||
[dependencies.byteorder]
|
||||
optional = true
|
||||
version = "1.5"
|
||||
|
||||
[target.'cfg(target_os = "wasi")'.dependencies]
|
||||
napi-derive = { path = "../macro", version = "2.10.1", default-features = false }
|
||||
tokio = { version = "1", optional = true, features = ["rt", "sync"] }
|
||||
|
|
|
@ -673,16 +673,19 @@ impl Env {
|
|||
|
||||
/// This API throws a JavaScript SyntaxError with the text provided.
|
||||
#[cfg(feature = "napi9")]
|
||||
pub fn throw_syntax_error(&self, msg: &str, code: Option<&str>) -> Result<()> {
|
||||
let code = code.and_then(|s| CString::new(s).ok());
|
||||
let msg = CString::new(msg)?;
|
||||
check_status!(unsafe {
|
||||
sys::node_api_throw_syntax_error(
|
||||
pub fn throw_syntax_error<S: AsRef<str>, C: AsRef<str>>(&self, msg: S, code: Option<C>) {
|
||||
use crate::check_status_or_throw;
|
||||
|
||||
let code = code.as_ref().map(|c| c.as_ref()).unwrap_or("");
|
||||
let c_code = CString::new(code).expect("code must be a valid utf-8 string");
|
||||
let code_ptr = c_code.as_ptr();
|
||||
let msg: CString = CString::new(msg.as_ref()).expect("msg must be a valid utf-8 string");
|
||||
let msg_ptr = msg.as_ptr();
|
||||
check_status_or_throw!(
|
||||
self.0,
|
||||
code.map(|s| s.as_ptr()).unwrap_or(ptr::null_mut()),
|
||||
msg.as_ptr(),
|
||||
)
|
||||
})
|
||||
unsafe { sys::node_api_throw_syntax_error(self.0, code_ptr, msg_ptr,) },
|
||||
"Throw syntax error failed"
|
||||
);
|
||||
}
|
||||
|
||||
#[allow(clippy::expect_fun_call)]
|
||||
|
@ -1286,18 +1289,9 @@ impl Env {
|
|||
// SAFETY: This is safe because `char_ptr` is guaranteed to not be `null`, and point to
|
||||
// null-terminated string data.
|
||||
let module_filename = unsafe { std::ffi::CStr::from_ptr(char_ptr) };
|
||||
#[cfg(windows)]
|
||||
{
|
||||
let byte_len = module_filename.to_bytes().len();
|
||||
let mut utf16_buf = vec![0u16; byte_len / 2];
|
||||
byteorder::LittleEndian::read_u16_into(module_filename.to_bytes(), &mut utf16_buf);
|
||||
Ok(String::from_utf16_lossy(utf16_buf))
|
||||
}
|
||||
#[cfg(not(windows))]
|
||||
{
|
||||
|
||||
Ok(module_filename.to_string_lossy().into_owned())
|
||||
}
|
||||
}
|
||||
|
||||
/// ### Serialize `Rust Struct` into `JavaScript Value`
|
||||
///
|
||||
|
|
|
@ -372,6 +372,8 @@ Generated by [AVA](https://avajs.dev).
|
|||
␊
|
||||
export function getMapping(): Record<string, number>␊
|
||||
␊
|
||||
export function getModuleFileName(): string␊
|
||||
␊
|
||||
export function getNestedNumArr(): number[][][]␊
|
||||
␊
|
||||
export function getNull(): null␊
|
||||
|
@ -528,6 +530,8 @@ Generated by [AVA](https://avajs.dev).
|
|||
␊
|
||||
export function throwError(): void␊
|
||||
␊
|
||||
export function throwSyntaxError(error: string, code?: string | undefined | null): void␊
|
||||
␊
|
||||
export function toJsObj(): object␊
|
||||
␊
|
||||
export function tsfnAsyncCall(func: (...args: any[]) => any): Promise<void>␊
|
||||
|
|
Binary file not shown.
|
@ -139,6 +139,8 @@ const {
|
|||
chronoNativeDateTime,
|
||||
chronoNativeDateTimeReturn,
|
||||
throwAsyncError,
|
||||
getModuleFileName,
|
||||
throwSyntaxError,
|
||||
} = (await import('../index.js')).default
|
||||
|
||||
const Napi4Test = Number(process.versions.napi) >= 4 ? test : test.skip
|
||||
|
@ -1069,3 +1071,25 @@ const Napi9Test = Number(process.versions.napi) >= 9 ? test : test.skip
|
|||
Napi9Test('create symbol for', (t) => {
|
||||
t.is(createSymbolFor('foo'), Symbol.for('foo'))
|
||||
})
|
||||
|
||||
Napi9Test('get module file name', (t) => {
|
||||
if (isWasiTest) {
|
||||
t.pass()
|
||||
return
|
||||
}
|
||||
console.info(getModuleFileName())
|
||||
t.true(getModuleFileName().includes('examples/napi/index.node'))
|
||||
})
|
||||
|
||||
test('throw syntax error', (t) => {
|
||||
const message = `Syntax Error: Unexpected token '}'`
|
||||
const code = 'InvalidCharacterError'
|
||||
t.throws(
|
||||
() => throwSyntaxError(message, code),
|
||||
{
|
||||
code,
|
||||
instanceOf: SyntaxError,
|
||||
},
|
||||
message,
|
||||
)
|
||||
})
|
||||
|
|
4
examples/napi/index.d.ts
vendored
4
examples/napi/index.d.ts
vendored
|
@ -362,6 +362,8 @@ export function getGlobal(): typeof global
|
|||
|
||||
export function getMapping(): Record<string, number>
|
||||
|
||||
export function getModuleFileName(): string
|
||||
|
||||
export function getNestedNumArr(): number[][][]
|
||||
|
||||
export function getNull(): null
|
||||
|
@ -518,6 +520,8 @@ export function throwAsyncError(): Promise<void>
|
|||
|
||||
export function throwError(): void
|
||||
|
||||
export function throwSyntaxError(error: string, code?: string | undefined | null): void
|
||||
|
||||
export function toJsObj(): object
|
||||
|
||||
export function tsfnAsyncCall(func: (...args: any[]) => any): Promise<void>
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
|
||||
|
@ -140,130 +139,132 @@ function __napi_rs_initialize_modules(__napiInstance) {
|
|||
__napiInstance.exports['__napi_register__CustomNumEnum_83']()
|
||||
__napiInstance.exports['__napi_register__enum_to_i32_84']()
|
||||
__napiInstance.exports['__napi_register__SkippedEnums_85']()
|
||||
__napiInstance.exports['__napi_register__throw_error_86']()
|
||||
__napiInstance.exports['__napi_register__panic_87']()
|
||||
__napiInstance.exports['__napi_register__receive_string_88']()
|
||||
__napiInstance.exports['__napi_register__custom_status_code_89']()
|
||||
__napiInstance.exports['__napi_register__throw_async_error_90']()
|
||||
__napiInstance.exports['__napi_register__create_external_91']()
|
||||
__napiInstance.exports['__napi_register__create_external_string_92']()
|
||||
__napiInstance.exports['__napi_register__get_external_93']()
|
||||
__napiInstance.exports['__napi_register__mutate_external_94']()
|
||||
__napiInstance.exports['__napi_register__validate_array_95']()
|
||||
__napiInstance.exports['__napi_register__validate_buffer_96']()
|
||||
__napiInstance.exports['__napi_register__validate_typed_array_97']()
|
||||
__napiInstance.exports['__napi_register__validate_bigint_98']()
|
||||
__napiInstance.exports['__napi_register__validate_boolean_99']()
|
||||
__napiInstance.exports['__napi_register__validate_date_100']()
|
||||
__napiInstance.exports['__napi_register__validate_date_time_101']()
|
||||
__napiInstance.exports['__napi_register__validate_external_102']()
|
||||
__napiInstance.exports['__napi_register__validate_function_103']()
|
||||
__napiInstance.exports['__napi_register__validate_hash_map_104']()
|
||||
__napiInstance.exports['__napi_register__validate_null_105']()
|
||||
__napiInstance.exports['__napi_register__validate_undefined_106']()
|
||||
__napiInstance.exports['__napi_register__validate_number_107']()
|
||||
__napiInstance.exports['__napi_register__validate_promise_108']()
|
||||
__napiInstance.exports['__napi_register__validate_string_109']()
|
||||
__napiInstance.exports['__napi_register__validate_symbol_110']()
|
||||
__napiInstance.exports['__napi_register__validate_optional_111']()
|
||||
__napiInstance.exports['__napi_register__return_undefined_if_invalid_112']()
|
||||
__napiInstance.exports['__napi_register__return_undefined_if_invalid_promise_113']()
|
||||
__napiInstance.exports['__napi_register__ts_rename_114']()
|
||||
__napiInstance.exports['__napi_register__override_individual_arg_on_function_115']()
|
||||
__napiInstance.exports['__napi_register__override_individual_arg_on_function_with_cb_arg_116']()
|
||||
__napiInstance.exports['__napi_register__Fib_struct_117']()
|
||||
__napiInstance.exports['__napi_register__Fib_impl_118']()
|
||||
__napiInstance.exports['__napi_register__Fib_impl_119']()
|
||||
__napiInstance.exports['__napi_register__Fib2_struct_120']()
|
||||
__napiInstance.exports['__napi_register__Fib2_impl_121']()
|
||||
__napiInstance.exports['__napi_register__Fib2_impl_122']()
|
||||
__napiInstance.exports['__napi_register__Fib3_struct_123']()
|
||||
__napiInstance.exports['__napi_register__Fib3_impl_124']()
|
||||
__napiInstance.exports['__napi_register__ALIGNMENT_125']()
|
||||
__napiInstance.exports['__napi_register__xxh64_126']()
|
||||
__napiInstance.exports['__napi_register__xxh128_127']()
|
||||
__napiInstance.exports['__napi_register__Xxh3_struct_128']()
|
||||
__napiInstance.exports['__napi_register__Xxh3_impl_129']()
|
||||
__napiInstance.exports['__napi_register__xxh2_plus_130']()
|
||||
__napiInstance.exports['__napi_register__xxh3_xxh64_alias_131']()
|
||||
__napiInstance.exports['__napi_register__xxh64_alias_132']()
|
||||
__napiInstance.exports['__napi_register__get_mapping_133']()
|
||||
__napiInstance.exports['__napi_register__sum_mapping_134']()
|
||||
__napiInstance.exports['__napi_register__map_option_135']()
|
||||
__napiInstance.exports['__napi_register__return_null_136']()
|
||||
__napiInstance.exports['__napi_register__return_undefined_137']()
|
||||
__napiInstance.exports['__napi_register__add_138']()
|
||||
__napiInstance.exports['__napi_register__fibonacci_139']()
|
||||
__napiInstance.exports['__napi_register__list_obj_keys_140']()
|
||||
__napiInstance.exports['__napi_register__create_obj_141']()
|
||||
__napiInstance.exports['__napi_register__get_global_142']()
|
||||
__napiInstance.exports['__napi_register__get_undefined_143']()
|
||||
__napiInstance.exports['__napi_register__get_null_144']()
|
||||
__napiInstance.exports['__napi_register__receive_all_optional_object_145']()
|
||||
__napiInstance.exports['__napi_register__AliasedEnum_146']()
|
||||
__napiInstance.exports['__napi_register__fn_received_aliased_147']()
|
||||
__napiInstance.exports['__napi_register__receive_strict_object_148']()
|
||||
__napiInstance.exports['__napi_register__get_str_from_object_149']()
|
||||
__napiInstance.exports['__napi_register__create_obj_with_property_150']()
|
||||
__napiInstance.exports['__napi_register__getter_from_obj_151']()
|
||||
__napiInstance.exports['__napi_register__receive_object_only_from_js_152']()
|
||||
__napiInstance.exports['__napi_register__async_plus_100_153']()
|
||||
__napiInstance.exports['__napi_register__JsRepo_struct_154']()
|
||||
__napiInstance.exports['__napi_register__JsRepo_impl_155']()
|
||||
__napiInstance.exports['__napi_register__JsRemote_struct_156']()
|
||||
__napiInstance.exports['__napi_register__JsRemote_impl_157']()
|
||||
__napiInstance.exports['__napi_register__CSSRuleList_struct_158']()
|
||||
__napiInstance.exports['__napi_register__CSSRuleList_impl_159']()
|
||||
__napiInstance.exports['__napi_register__CSSStyleSheet_struct_160']()
|
||||
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_struct_161']()
|
||||
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_impl_162']()
|
||||
__napiInstance.exports['__napi_register__CSSStyleSheet_impl_163']()
|
||||
__napiInstance.exports['__napi_register__read_package_json_164']()
|
||||
__napiInstance.exports['__napi_register__get_package_json_name_165']()
|
||||
__napiInstance.exports['__napi_register__test_serde_roundtrip_166']()
|
||||
__napiInstance.exports['__napi_register__test_serde_big_number_precision_167']()
|
||||
__napiInstance.exports['__napi_register__return_from_shared_crate_168']()
|
||||
__napiInstance.exports['__napi_register__contains_169']()
|
||||
__napiInstance.exports['__napi_register__concat_str_170']()
|
||||
__napiInstance.exports['__napi_register__concat_utf16_171']()
|
||||
__napiInstance.exports['__napi_register__concat_latin1_172']()
|
||||
__napiInstance.exports['__napi_register__roundtrip_str_173']()
|
||||
__napiInstance.exports['__napi_register__set_symbol_in_obj_174']()
|
||||
__napiInstance.exports['__napi_register__create_symbol_175']()
|
||||
__napiInstance.exports['__napi_register__create_symbol_for_176']()
|
||||
__napiInstance.exports['__napi_register__DelaySum_impl_177']()
|
||||
__napiInstance.exports['__napi_register__without_abort_controller_178']()
|
||||
__napiInstance.exports['__napi_register__with_abort_controller_179']()
|
||||
__napiInstance.exports['__napi_register__call_threadsafe_function_180']()
|
||||
__napiInstance.exports['__napi_register__call_long_threadsafe_function_181']()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_throw_error_182']()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_183']()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_error_184']()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_closure_capture_185']()
|
||||
__napiInstance.exports['__napi_register__tsfn_call_with_callback_186']()
|
||||
__napiInstance.exports['__napi_register__tsfn_async_call_187']()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_188']()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_fatal_189']()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_tuple_args_190']()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_191']()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_timeout_192']()
|
||||
__napiInstance.exports['__napi_register__tsfn_throw_from_js_193']()
|
||||
__napiInstance.exports['__napi_register__get_buffer_194']()
|
||||
__napiInstance.exports['__napi_register__append_buffer_195']()
|
||||
__napiInstance.exports['__napi_register__get_empty_buffer_196']()
|
||||
__napiInstance.exports['__napi_register__convert_u32_array_197']()
|
||||
__napiInstance.exports['__napi_register__create_external_typed_array_198']()
|
||||
__napiInstance.exports['__napi_register__mutate_typed_array_199']()
|
||||
__napiInstance.exports['__napi_register__deref_uint8_array_200']()
|
||||
__napiInstance.exports['__napi_register__buffer_pass_through_201']()
|
||||
__napiInstance.exports['__napi_register__array_buffer_pass_through_202']()
|
||||
__napiInstance.exports['__napi_register__AsyncBuffer_impl_203']()
|
||||
__napiInstance.exports['__napi_register__async_reduce_buffer_204']()
|
||||
__napiInstance.exports['__napi_register__run_script_205']()
|
||||
__napiInstance.exports['__napi_register__run_script_86']()
|
||||
__napiInstance.exports['__napi_register__get_module_file_name_87']()
|
||||
__napiInstance.exports['__napi_register__throw_syntax_error_88']()
|
||||
__napiInstance.exports['__napi_register__throw_error_89']()
|
||||
__napiInstance.exports['__napi_register__panic_90']()
|
||||
__napiInstance.exports['__napi_register__receive_string_91']()
|
||||
__napiInstance.exports['__napi_register__custom_status_code_92']()
|
||||
__napiInstance.exports['__napi_register__throw_async_error_93']()
|
||||
__napiInstance.exports['__napi_register__create_external_94']()
|
||||
__napiInstance.exports['__napi_register__create_external_string_95']()
|
||||
__napiInstance.exports['__napi_register__get_external_96']()
|
||||
__napiInstance.exports['__napi_register__mutate_external_97']()
|
||||
__napiInstance.exports['__napi_register__validate_array_98']()
|
||||
__napiInstance.exports['__napi_register__validate_buffer_99']()
|
||||
__napiInstance.exports['__napi_register__validate_typed_array_100']()
|
||||
__napiInstance.exports['__napi_register__validate_bigint_101']()
|
||||
__napiInstance.exports['__napi_register__validate_boolean_102']()
|
||||
__napiInstance.exports['__napi_register__validate_date_103']()
|
||||
__napiInstance.exports['__napi_register__validate_date_time_104']()
|
||||
__napiInstance.exports['__napi_register__validate_external_105']()
|
||||
__napiInstance.exports['__napi_register__validate_function_106']()
|
||||
__napiInstance.exports['__napi_register__validate_hash_map_107']()
|
||||
__napiInstance.exports['__napi_register__validate_null_108']()
|
||||
__napiInstance.exports['__napi_register__validate_undefined_109']()
|
||||
__napiInstance.exports['__napi_register__validate_number_110']()
|
||||
__napiInstance.exports['__napi_register__validate_promise_111']()
|
||||
__napiInstance.exports['__napi_register__validate_string_112']()
|
||||
__napiInstance.exports['__napi_register__validate_symbol_113']()
|
||||
__napiInstance.exports['__napi_register__validate_optional_114']()
|
||||
__napiInstance.exports['__napi_register__return_undefined_if_invalid_115']()
|
||||
__napiInstance.exports['__napi_register__return_undefined_if_invalid_promise_116']()
|
||||
__napiInstance.exports['__napi_register__ts_rename_117']()
|
||||
__napiInstance.exports['__napi_register__override_individual_arg_on_function_118']()
|
||||
__napiInstance.exports['__napi_register__override_individual_arg_on_function_with_cb_arg_119']()
|
||||
__napiInstance.exports['__napi_register__Fib_struct_120']()
|
||||
__napiInstance.exports['__napi_register__Fib_impl_121']()
|
||||
__napiInstance.exports['__napi_register__Fib_impl_122']()
|
||||
__napiInstance.exports['__napi_register__Fib2_struct_123']()
|
||||
__napiInstance.exports['__napi_register__Fib2_impl_124']()
|
||||
__napiInstance.exports['__napi_register__Fib2_impl_125']()
|
||||
__napiInstance.exports['__napi_register__Fib3_struct_126']()
|
||||
__napiInstance.exports['__napi_register__Fib3_impl_127']()
|
||||
__napiInstance.exports['__napi_register__ALIGNMENT_128']()
|
||||
__napiInstance.exports['__napi_register__xxh64_129']()
|
||||
__napiInstance.exports['__napi_register__xxh128_130']()
|
||||
__napiInstance.exports['__napi_register__Xxh3_struct_131']()
|
||||
__napiInstance.exports['__napi_register__Xxh3_impl_132']()
|
||||
__napiInstance.exports['__napi_register__xxh2_plus_133']()
|
||||
__napiInstance.exports['__napi_register__xxh3_xxh64_alias_134']()
|
||||
__napiInstance.exports['__napi_register__xxh64_alias_135']()
|
||||
__napiInstance.exports['__napi_register__get_mapping_136']()
|
||||
__napiInstance.exports['__napi_register__sum_mapping_137']()
|
||||
__napiInstance.exports['__napi_register__map_option_138']()
|
||||
__napiInstance.exports['__napi_register__return_null_139']()
|
||||
__napiInstance.exports['__napi_register__return_undefined_140']()
|
||||
__napiInstance.exports['__napi_register__add_141']()
|
||||
__napiInstance.exports['__napi_register__fibonacci_142']()
|
||||
__napiInstance.exports['__napi_register__list_obj_keys_143']()
|
||||
__napiInstance.exports['__napi_register__create_obj_144']()
|
||||
__napiInstance.exports['__napi_register__get_global_145']()
|
||||
__napiInstance.exports['__napi_register__get_undefined_146']()
|
||||
__napiInstance.exports['__napi_register__get_null_147']()
|
||||
__napiInstance.exports['__napi_register__receive_all_optional_object_148']()
|
||||
__napiInstance.exports['__napi_register__AliasedEnum_149']()
|
||||
__napiInstance.exports['__napi_register__fn_received_aliased_150']()
|
||||
__napiInstance.exports['__napi_register__receive_strict_object_151']()
|
||||
__napiInstance.exports['__napi_register__get_str_from_object_152']()
|
||||
__napiInstance.exports['__napi_register__create_obj_with_property_153']()
|
||||
__napiInstance.exports['__napi_register__getter_from_obj_154']()
|
||||
__napiInstance.exports['__napi_register__receive_object_only_from_js_155']()
|
||||
__napiInstance.exports['__napi_register__async_plus_100_156']()
|
||||
__napiInstance.exports['__napi_register__JsRepo_struct_157']()
|
||||
__napiInstance.exports['__napi_register__JsRepo_impl_158']()
|
||||
__napiInstance.exports['__napi_register__JsRemote_struct_159']()
|
||||
__napiInstance.exports['__napi_register__JsRemote_impl_160']()
|
||||
__napiInstance.exports['__napi_register__CSSRuleList_struct_161']()
|
||||
__napiInstance.exports['__napi_register__CSSRuleList_impl_162']()
|
||||
__napiInstance.exports['__napi_register__CSSStyleSheet_struct_163']()
|
||||
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_struct_164']()
|
||||
__napiInstance.exports['__napi_register__AnotherCSSStyleSheet_impl_165']()
|
||||
__napiInstance.exports['__napi_register__CSSStyleSheet_impl_166']()
|
||||
__napiInstance.exports['__napi_register__read_package_json_167']()
|
||||
__napiInstance.exports['__napi_register__get_package_json_name_168']()
|
||||
__napiInstance.exports['__napi_register__test_serde_roundtrip_169']()
|
||||
__napiInstance.exports['__napi_register__test_serde_big_number_precision_170']()
|
||||
__napiInstance.exports['__napi_register__return_from_shared_crate_171']()
|
||||
__napiInstance.exports['__napi_register__contains_172']()
|
||||
__napiInstance.exports['__napi_register__concat_str_173']()
|
||||
__napiInstance.exports['__napi_register__concat_utf16_174']()
|
||||
__napiInstance.exports['__napi_register__concat_latin1_175']()
|
||||
__napiInstance.exports['__napi_register__roundtrip_str_176']()
|
||||
__napiInstance.exports['__napi_register__set_symbol_in_obj_177']()
|
||||
__napiInstance.exports['__napi_register__create_symbol_178']()
|
||||
__napiInstance.exports['__napi_register__create_symbol_for_179']()
|
||||
__napiInstance.exports['__napi_register__DelaySum_impl_180']()
|
||||
__napiInstance.exports['__napi_register__without_abort_controller_181']()
|
||||
__napiInstance.exports['__napi_register__with_abort_controller_182']()
|
||||
__napiInstance.exports['__napi_register__call_threadsafe_function_183']()
|
||||
__napiInstance.exports['__napi_register__call_long_threadsafe_function_184']()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_throw_error_185']()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_186']()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_fatal_mode_error_187']()
|
||||
__napiInstance.exports['__napi_register__threadsafe_function_closure_capture_188']()
|
||||
__napiInstance.exports['__napi_register__tsfn_call_with_callback_189']()
|
||||
__napiInstance.exports['__napi_register__tsfn_async_call_190']()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_191']()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_fatal_192']()
|
||||
__napiInstance.exports['__napi_register__accept_threadsafe_function_tuple_args_193']()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_194']()
|
||||
__napiInstance.exports['__napi_register__tsfn_return_promise_timeout_195']()
|
||||
__napiInstance.exports['__napi_register__tsfn_throw_from_js_196']()
|
||||
__napiInstance.exports['__napi_register__get_buffer_197']()
|
||||
__napiInstance.exports['__napi_register__append_buffer_198']()
|
||||
__napiInstance.exports['__napi_register__get_empty_buffer_199']()
|
||||
__napiInstance.exports['__napi_register__convert_u32_array_200']()
|
||||
__napiInstance.exports['__napi_register__create_external_typed_array_201']()
|
||||
__napiInstance.exports['__napi_register__mutate_typed_array_202']()
|
||||
__napiInstance.exports['__napi_register__deref_uint8_array_203']()
|
||||
__napiInstance.exports['__napi_register__buffer_pass_through_204']()
|
||||
__napiInstance.exports['__napi_register__array_buffer_pass_through_205']()
|
||||
__napiInstance.exports['__napi_register__AsyncBuffer_impl_206']()
|
||||
__napiInstance.exports['__napi_register__async_reduce_buffer_207']()
|
||||
}
|
||||
|
||||
const binding = __napiModule.exports
|
||||
const { Animal, AnimalWithDefaultConstructor, AnotherClassForEither, AnotherCssStyleSheet, AnotherCSSStyleSheet, Asset, JsAsset, Assets, JsAssets, Bird, Blake2BHasher, Blake2bHasher, Blake2BKey, Blake2bKey, ClassWithFactory, Context, CssRuleList, CSSRuleList, CssStyleSheet, CSSStyleSheet, CustomFinalize, Dog, Fib, Fib2, Fib3, GetterSetterWithClosures, JsClassForEither, JsRemote, JsRepo, NinjaTurtle, NotWritableClass, Optional, Selector, Width, acceptThreadsafeFunction, acceptThreadsafeFunctionFatal, acceptThreadsafeFunctionTupleArgs, add, ALIAS, AliasedEnum, appendBuffer, arrayBufferPassThrough, asyncMultiTwo, asyncPlus100, asyncReduceBuffer, bigintAdd, bigintFromI128, bigintFromI64, bigintGetU64AsString, bufferPassThrough, callbackReturnPromise, callbackReturnPromiseAndSpawn, callLongThreadsafeFunction, callThreadsafeFunction, captureErrorInCallback, chronoDateAdd1Minute, chronoDateToMillis, chronoNativeDateTime, chronoNativeDateTimeReturn, concatLatin1, concatStr, concatUtf16, contains, convertU32Array, createBigInt, createBigIntI64, createExternal, createExternalString, createExternalTypedArray, createObj, createObjectWithClassField, createObjWithProperty, createSymbol, createSymbolFor, CustomNumEnum, customStatusCode, dateToNumber, DEFAULT_COST, derefUint8Array, either3, either4, eitherBoolOrFunction, eitherFromObjects, eitherFromOption, eitherStringOrNumber, Empty, enumToI32, fibonacci, fnReceivedAliased, getBuffer, getCwd, getEmptyBuffer, getExternal, getGlobal, getMapping, getNestedNumArr, getNull, getNumArr, getNums, getPackageJsonName, getStrFromObject, getterFromObj, getUndefined, getWords, Kind, listObjKeys, mapOption, mutateExternal, mutateTypedArray, optionEnd, optionOnly, optionStart, optionStartEnd, overrideIndividualArgOnFunction, overrideIndividualArgOnFunctionWithCbArg, panic, plusOne, promiseInEither, readFile, readFileAsync, readPackageJson, receiveAllOptionalObject, receiveClassOrNumber, receiveDifferentClass, receiveMutClassOrNumber, receiveObjectOnlyFromJs, receiveObjectWithClassField, receiveStrictObject, receiveString, returnEither, returnEitherClass, returnFromSharedCrate, returnJsFunction, returnNull, returnUndefined, returnUndefinedIfInvalid, returnUndefinedIfInvalidPromise, roundtripStr, runScript, setSymbolInObj, Status, sumMapping, sumNums, testSerdeBigNumberPrecision, testSerdeRoundtrip, threadsafeFunctionClosureCapture, threadsafeFunctionFatalMode, threadsafeFunctionFatalModeError, threadsafeFunctionThrowError, throwAsyncError, throwError, toJsObj, tsfnAsyncCall, tsfnCallWithCallback, tsfnReturnPromise, tsfnReturnPromiseTimeout, tsfnThrowFromJs, tsRename, validateArray, validateBigint, validateBoolean, validateBuffer, validateDate, validateDateTime, validateExternal, validateFunction, validateHashMap, validateNull, validateNumber, validateOptional, validatePromise, validateString, validateSymbol, validateTypedArray, validateUndefined, withAbortController, withoutAbortController, xxh64Alias, xxh2, xxh3 } = binding
|
||||
const { Animal, AnimalWithDefaultConstructor, AnotherClassForEither, AnotherCssStyleSheet, AnotherCSSStyleSheet, Asset, JsAsset, Assets, JsAssets, Bird, Blake2BHasher, Blake2bHasher, Blake2BKey, Blake2bKey, ClassWithFactory, Context, CssRuleList, CSSRuleList, CssStyleSheet, CSSStyleSheet, CustomFinalize, Dog, Fib, Fib2, Fib3, GetterSetterWithClosures, JsClassForEither, JsRemote, JsRepo, NinjaTurtle, NotWritableClass, Optional, Selector, Width, acceptThreadsafeFunction, acceptThreadsafeFunctionFatal, acceptThreadsafeFunctionTupleArgs, add, ALIAS, AliasedEnum, appendBuffer, arrayBufferPassThrough, asyncMultiTwo, asyncPlus100, asyncReduceBuffer, bigintAdd, bigintFromI128, bigintFromI64, bigintGetU64AsString, bufferPassThrough, callbackReturnPromise, callbackReturnPromiseAndSpawn, callLongThreadsafeFunction, callThreadsafeFunction, captureErrorInCallback, chronoDateAdd1Minute, chronoDateToMillis, chronoNativeDateTime, chronoNativeDateTimeReturn, concatLatin1, concatStr, concatUtf16, contains, convertU32Array, createBigInt, createBigIntI64, createExternal, createExternalString, createExternalTypedArray, createObj, createObjectWithClassField, createObjWithProperty, createSymbol, createSymbolFor, CustomNumEnum, customStatusCode, dateToNumber, DEFAULT_COST, derefUint8Array, either3, either4, eitherBoolOrFunction, eitherFromObjects, eitherFromOption, eitherStringOrNumber, Empty, enumToI32, fibonacci, fnReceivedAliased, getBuffer, getCwd, getEmptyBuffer, getExternal, getGlobal, getMapping, getModuleFileName, getNestedNumArr, getNull, getNumArr, getNums, getPackageJsonName, getStrFromObject, getterFromObj, getUndefined, getWords, Kind, listObjKeys, mapOption, mutateExternal, mutateTypedArray, optionEnd, optionOnly, optionStart, optionStartEnd, overrideIndividualArgOnFunction, overrideIndividualArgOnFunctionWithCbArg, panic, plusOne, promiseInEither, readFile, readFileAsync, readPackageJson, receiveAllOptionalObject, receiveClassOrNumber, receiveDifferentClass, receiveMutClassOrNumber, receiveObjectOnlyFromJs, receiveObjectWithClassField, receiveStrictObject, receiveString, returnEither, returnEitherClass, returnFromSharedCrate, returnJsFunction, returnNull, returnUndefined, returnUndefinedIfInvalid, returnUndefinedIfInvalidPromise, roundtripStr, runScript, setSymbolInObj, Status, sumMapping, sumNums, testSerdeBigNumberPrecision, testSerdeRoundtrip, threadsafeFunctionClosureCapture, threadsafeFunctionFatalMode, threadsafeFunctionFatalModeError, threadsafeFunctionThrowError, throwAsyncError, throwError, throwSyntaxError, toJsObj, tsfnAsyncCall, tsfnCallWithCallback, tsfnReturnPromise, tsfnReturnPromiseTimeout, tsfnThrowFromJs, tsRename, validateArray, validateBigint, validateBoolean, validateBuffer, validateDate, validateDateTime, validateExternal, validateFunction, validateHashMap, validateNull, validateNumber, validateOptional, validatePromise, validateString, validateSymbol, validateTypedArray, validateUndefined, withAbortController, withoutAbortController, xxh64Alias, xxh2, xxh3 } = binding
|
||||
export {
|
||||
Animal,
|
||||
AnimalWithDefaultConstructor,
|
||||
|
@ -360,6 +361,7 @@ export {
|
|||
getExternal,
|
||||
getGlobal,
|
||||
getMapping,
|
||||
getModuleFileName,
|
||||
getNestedNumArr,
|
||||
getNull,
|
||||
getNumArr,
|
||||
|
@ -416,6 +418,7 @@ export {
|
|||
threadsafeFunctionThrowError,
|
||||
throwAsyncError,
|
||||
throwError,
|
||||
throwSyntaxError,
|
||||
toJsObj,
|
||||
tsfnAsyncCall,
|
||||
tsfnCallWithCallback,
|
||||
|
|
16
examples/napi/src/env.rs
Normal file
16
examples/napi/src/env.rs
Normal file
|
@ -0,0 +1,16 @@
|
|||
use napi::{bindgen_prelude::*, Env};
|
||||
|
||||
#[napi]
|
||||
pub fn run_script(env: Env, script: String) -> Result<Unknown> {
|
||||
env.run_script(script)
|
||||
}
|
||||
|
||||
#[napi]
|
||||
pub fn get_module_file_name(env: Env) -> Result<String> {
|
||||
env.get_module_file_name()
|
||||
}
|
||||
|
||||
#[napi]
|
||||
pub fn throw_syntax_error(env: Env, error: String, code: Option<String>) {
|
||||
env.throw_syntax_error(error, code);
|
||||
}
|
|
@ -3,8 +3,6 @@
|
|||
#![allow(clippy::disallowed_names)]
|
||||
#![allow(clippy::uninlined_format_args)]
|
||||
|
||||
use napi::{Env, JsUnknown};
|
||||
|
||||
#[macro_use]
|
||||
extern crate napi_derive;
|
||||
#[macro_use]
|
||||
|
@ -31,6 +29,7 @@ mod constructor;
|
|||
mod date;
|
||||
mod either;
|
||||
mod r#enum;
|
||||
mod env;
|
||||
mod error;
|
||||
mod external;
|
||||
mod fn_strict;
|
||||
|
@ -50,8 +49,3 @@ mod symbol;
|
|||
mod task;
|
||||
mod threadsafe_function;
|
||||
mod typed_array;
|
||||
|
||||
#[napi]
|
||||
pub fn run_script(env: Env, script: String) -> napi::Result<JsUnknown> {
|
||||
env.run_script(script)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue