1#![allow(non_camel_case_types, improper_ctypes)]
2
3use std::os::raw::{c_char, c_int, c_uint, c_void};
4type size_t = usize;
5type char16_t = u16;
6
7#[derive(Debug, Copy, Clone)]
8pub struct napi_env__ {
9 _unused: [u8; 0],
10}
11
12pub type napi_env = *mut napi_env__;
13
14#[repr(C)]
15#[derive(Debug, Copy, Clone)]
16pub struct napi_value__ {
17 _unused: [u8; 0],
18}
19
20pub type napi_value = *mut napi_value__;
21
22#[repr(C)]
23#[derive(Debug, Copy, Clone)]
24pub struct napi_ref__ {
25 _unused: [u8; 0],
26}
27
28pub type napi_ref = *mut napi_ref__;
29
30#[repr(C)]
31#[derive(Debug, Copy, Clone)]
32pub struct napi_handle_scope__ {
33 _unused: [u8; 0],
34}
35
36pub type napi_handle_scope = *mut napi_handle_scope__;
37
38#[repr(C)]
39#[derive(Debug, Copy, Clone)]
40pub struct napi_escapable_handle_scope__ {
41 _unused: [u8; 0],
42}
43
44pub type napi_escapable_handle_scope = *mut napi_escapable_handle_scope__;
45
46#[repr(C)]
47#[derive(Debug, Copy, Clone)]
48pub struct napi_callback_scope__ {
49 _unused: [u8; 0],
50}
51
52pub type napi_callback_scope = *mut napi_callback_scope__;
53
54#[repr(C)]
55#[derive(Debug, Copy, Clone)]
56pub struct napi_callback_info__ {
57 _unused: [u8; 0],
58}
59
60pub type napi_callback_info = *mut napi_callback_info__;
61
62#[repr(C)]
63#[derive(Debug, Copy, Clone)]
64pub struct napi_async_context__ {
65 _unused: [u8; 0],
66}
67
68pub type napi_async_context = *mut napi_async_context__;
69
70#[repr(C)]
71#[derive(Debug, Copy, Clone)]
72pub struct napi_async_work__ {
73 _unused: [u8; 0],
74}
75
76pub type napi_async_work = *mut napi_async_work__;
77
78#[repr(C)]
79#[derive(Debug, Copy, Clone)]
80pub struct napi_deferred__ {
81 _unused: [u8; 0],
82}
83
84pub type napi_deferred = *mut napi_deferred__;
85
86#[repr(C)]
87#[derive(Debug, Copy, Clone)]
88pub struct napi_threadsafe_function__ {
89 _unused: [u8; 0],
90}
91
92pub type napi_threadsafe_function = *mut napi_threadsafe_function__;
93
94#[repr(u32)]
95#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
96pub enum napi_property_attributes {
97 napi_default = 0,
98 napi_writable = 1,
99 napi_enumerable = 2,
100 napi_configurable = 4,
101 napi_static = 1024,
102}
103
104#[repr(u32)]
105#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
106pub enum napi_valuetype {
107 napi_undefined = 0,
108 napi_null = 1,
109 napi_boolean = 2,
110 napi_number = 3,
111 napi_string = 4,
112 napi_symbol = 5,
113 napi_object = 6,
114 napi_function = 7,
115 napi_external = 8,
116 napi_bigint = 9,
117}
118
119#[repr(u32)]
120#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
121pub enum napi_typedarray_type {
122 napi_int8_array = 0,
123 napi_uint8_array = 1,
124 napi_uint8_clamped_array = 2,
125 napi_int16_array = 3,
126 napi_uint16_array = 4,
127 napi_int32_array = 5,
128 napi_uint32_array = 6,
129 napi_float32_array = 7,
130 napi_float64_array = 8,
131 napi_bigint64_array = 9,
132 napi_biguint64_array = 10,
133}
134
135#[repr(u32)]
136#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
137pub enum napi_status {
138 napi_ok = 0,
139 napi_invalid_arg = 1,
140 napi_object_expected = 2,
141 napi_string_expected = 3,
142 napi_name_expected = 4,
143 napi_function_expected = 5,
144 napi_number_expected = 6,
145 napi_boolean_expected = 7,
146 napi_array_expected = 8,
147 napi_generic_failure = 9,
148 napi_pending_exception = 10,
149 napi_cancelled = 11,
150 napi_escape_called_twice = 12,
151 napi_handle_scope_mismatch = 13,
152 napi_callback_scope_mismatch = 14,
153 napi_queue_full = 15,
154 napi_closing = 16,
155 napi_bigint_expected = 17,
156 napi_date_expected = 18,
157 napi_arraybuffer_expected = 19,
158 napi_detachable_arraybuffer_expected = 20,
159}
160
161#[repr(u32)]
162#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
163pub enum napi_threadsafe_function_release_mode {
164 napi_tsfn_release = 0,
165 napi_tsfn_abort = 1,
166}
167
168#[repr(u32)]
169#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
170pub enum napi_threadsafe_function_call_mode {
171 napi_tsfn_nonblocking = 0,
172 napi_tsfn_blocking = 1,
173}
174
175pub type napi_callback =
176 Option<unsafe extern "C" fn(env: napi_env, info: napi_callback_info) -> napi_value>;
177
178pub type napi_finalize = Option<
179 unsafe extern "C" fn(env: napi_env, finalize_data: *mut c_void, finalize_hint: *mut c_void),
180>;
181
182pub type napi_async_execute_callback =
183 Option<unsafe extern "C" fn(env: napi_env, data: *mut c_void)>;
184
185pub type napi_async_complete_callback =
186 Option<unsafe extern "C" fn(env: napi_env, status: napi_status, data: *mut c_void)>;
187
188pub type napi_threadsafe_function_call_js = Option<
189 unsafe extern "C" fn(
190 env: napi_env,
191 js_callback: napi_value,
192 context: *mut c_void,
193 data: *mut c_void,
194 ),
195>;
196
197#[repr(C)]
198#[derive(Debug, Copy, Clone)]
199pub struct napi_property_descriptor {
200 pub utf8name: *const c_char,
201 pub name: napi_value,
202 pub method: napi_callback,
203 pub getter: napi_callback,
204 pub setter: napi_callback,
205 pub value: napi_value,
206 pub attributes: napi_property_attributes,
207 pub data: *mut c_void,
208}
209
210#[repr(C)]
211#[derive(Debug, Copy, Clone)]
212pub struct napi_extended_error_info {
213 pub error_message: *const c_char,
214 pub engine_reserved: *mut c_void,
215 pub engine_error_code: u32,
216 pub error_code: napi_status,
217}
218
219#[repr(C)]
220#[derive(Debug, Copy, Clone)]
221pub struct napi_node_version {
222 pub major: u32,
223 pub minor: u32,
224 pub patch: u32,
225 pub release: *const c_char,
226}
227
228#[repr(u32)]
229#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
230pub enum napi_key_collection_mode {
231 napi_key_include_prototypes = 0,
232 napi_key_own_only = 1,
233}
234
235#[repr(u32)]
236#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
237pub enum napi_key_filter {
238 napi_key_all_properties = 0,
239 napi_key_writable = 1,
240 napi_key_enumerable = 2,
241 napi_key_configurable = 4,
242 napi_key_skip_strings = 8,
243 napi_key_skip_symbols = 16,
244}
245
246#[repr(u32)]
247#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
248pub enum napi_key_conversion {
249 napi_key_keep_numbers = 0,
250 napi_key_numbers_to_strings = 1,
251}
252
253#[repr(C)]
254#[derive(Debug, Copy, Clone)]
255pub struct uv_loop_s {
256 _unused: [u8; 0],
257}
258
259pub type napi_addon_register_func =
260 Option<unsafe extern "C" fn(env: napi_env, exports: napi_value) -> napi_value>;
261
262#[repr(C)]
263#[derive(Debug, Copy, Clone)]
264pub struct napi_module {
265 pub nm_version: c_int,
266 pub nm_flags: c_uint,
267 pub nm_filename: *const c_char,
268 pub nm_register_func: napi_addon_register_func,
269 pub nm_modname: *const c_char,
270 pub nm_priv: *mut c_void,
271 pub reserved: [*mut c_void; 4usize],
272}
273
274#[cfg(feature = "v1")]
275extern "C" {
276 pub fn napi_module_register(mod_: *mut napi_module);
277 pub fn napi_get_last_error_info(
278 env: napi_env,
279 result: *mut *const napi_extended_error_info,
280 ) -> napi_status;
281 pub fn napi_fatal_error(
282 location: *const c_char,
283 location_len: size_t,
284 message: *const c_char,
285 message_len: size_t,
286 );
287 pub fn napi_get_undefined(env: napi_env, result: *mut napi_value) -> napi_status;
288 pub fn napi_get_null(env: napi_env, result: *mut napi_value) -> napi_status;
289 pub fn napi_get_global(env: napi_env, result: *mut napi_value) -> napi_status;
290 pub fn napi_get_boolean(env: napi_env, value: bool, result: *mut napi_value) -> napi_status;
291 pub fn napi_create_object(env: napi_env, result: *mut napi_value) -> napi_status;
292 pub fn napi_create_array(env: napi_env, result: *mut napi_value) -> napi_status;
293 pub fn napi_create_array_with_length(
294 env: napi_env,
295 length: size_t,
296 result: *mut napi_value,
297 ) -> napi_status;
298 pub fn napi_create_double(env: napi_env, value: f64, result: *mut napi_value) -> napi_status;
299 pub fn napi_create_int32(env: napi_env, value: i32, result: *mut napi_value) -> napi_status;
300 pub fn napi_create_uint32(env: napi_env, value: u32, result: *mut napi_value) -> napi_status;
301 pub fn napi_create_int64(env: napi_env, value: i64, result: *mut napi_value) -> napi_status;
302 pub fn napi_create_string_latin1(
303 env: napi_env,
304 str_: *const c_char,
305 length: size_t,
306 result: *mut napi_value,
307 ) -> napi_status;
308 pub fn napi_create_string_utf8(
309 env: napi_env,
310 str_: *const c_char,
311 length: size_t,
312 result: *mut napi_value,
313 ) -> napi_status;
314 pub fn napi_create_string_utf16(
315 env: napi_env,
316 str_: *const char16_t,
317 length: size_t,
318 result: *mut napi_value,
319 ) -> napi_status;
320 pub fn napi_create_symbol(
321 env: napi_env,
322 description: napi_value,
323 result: *mut napi_value,
324 ) -> napi_status;
325 pub fn napi_create_function(
326 env: napi_env,
327 utf8name: *const c_char,
328 length: size_t,
329 cb: napi_callback,
330 data: *mut c_void,
331 result: *mut napi_value,
332 ) -> napi_status;
333 pub fn napi_create_error(
334 env: napi_env,
335 code: napi_value,
336 msg: napi_value,
337 result: *mut napi_value,
338 ) -> napi_status;
339 pub fn napi_create_type_error(
340 env: napi_env,
341 code: napi_value,
342 msg: napi_value,
343 result: *mut napi_value,
344 ) -> napi_status;
345 pub fn napi_create_range_error(
346 env: napi_env,
347 code: napi_value,
348 msg: napi_value,
349 result: *mut napi_value,
350 ) -> napi_status;
351 pub fn napi_typeof(
352 env: napi_env,
353 value: napi_value,
354 result: *mut napi_valuetype,
355 ) -> napi_status;
356 pub fn napi_get_value_double(env: napi_env, value: napi_value, result: *mut f64)
357 -> napi_status;
358 pub fn napi_get_value_int32(env: napi_env, value: napi_value, result: *mut i32) -> napi_status;
359 pub fn napi_get_value_uint32(env: napi_env, value: napi_value, result: *mut u32)
360 -> napi_status;
361 pub fn napi_get_value_int64(env: napi_env, value: napi_value, result: *mut i64) -> napi_status;
362 pub fn napi_get_value_bool(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
363 pub fn napi_get_value_string_latin1(
364 env: napi_env,
365 value: napi_value,
366 buf: *mut c_char,
367 bufsize: size_t,
368 result: *mut size_t,
369 ) -> napi_status;
370 pub fn napi_get_value_string_utf8(
371 env: napi_env,
372 value: napi_value,
373 buf: *mut c_char,
374 bufsize: size_t,
375 result: *mut size_t,
376 ) -> napi_status;
377 pub fn napi_get_value_string_utf16(
378 env: napi_env,
379 value: napi_value,
380 buf: *mut char16_t,
381 bufsize: size_t,
382 result: *mut size_t,
383 ) -> napi_status;
384 pub fn napi_coerce_to_bool(
385 env: napi_env,
386 value: napi_value,
387 result: *mut napi_value,
388 ) -> napi_status;
389 pub fn napi_coerce_to_number(
390 env: napi_env,
391 value: napi_value,
392 result: *mut napi_value,
393 ) -> napi_status;
394 pub fn napi_coerce_to_object(
395 env: napi_env,
396 value: napi_value,
397 result: *mut napi_value,
398 ) -> napi_status;
399 pub fn napi_coerce_to_string(
400 env: napi_env,
401 value: napi_value,
402 result: *mut napi_value,
403 ) -> napi_status;
404 pub fn napi_get_prototype(
405 env: napi_env,
406 object: napi_value,
407 result: *mut napi_value,
408 ) -> napi_status;
409 pub fn napi_get_property_names(
410 env: napi_env,
411 object: napi_value,
412 result: *mut napi_value,
413 ) -> napi_status;
414 pub fn napi_set_property(
415 env: napi_env,
416 object: napi_value,
417 key: napi_value,
418 value: napi_value,
419 ) -> napi_status;
420 pub fn napi_has_property(
421 env: napi_env,
422 object: napi_value,
423 key: napi_value,
424 result: *mut bool,
425 ) -> napi_status;
426 pub fn napi_get_property(
427 env: napi_env,
428 object: napi_value,
429 key: napi_value,
430 result: *mut napi_value,
431 ) -> napi_status;
432 pub fn napi_delete_property(
433 env: napi_env,
434 object: napi_value,
435 key: napi_value,
436 result: *mut bool,
437 ) -> napi_status;
438 pub fn napi_has_own_property(
439 env: napi_env,
440 object: napi_value,
441 key: napi_value,
442 result: *mut bool,
443 ) -> napi_status;
444 pub fn napi_set_named_property(
445 env: napi_env,
446 object: napi_value,
447 utf8name: *const c_char,
448 value: napi_value,
449 ) -> napi_status;
450 pub fn napi_has_named_property(
451 env: napi_env,
452 object: napi_value,
453 utf8name: *const c_char,
454 result: *mut bool,
455 ) -> napi_status;
456 pub fn napi_get_named_property(
457 env: napi_env,
458 object: napi_value,
459 utf8name: *const c_char,
460 result: *mut napi_value,
461 ) -> napi_status;
462 pub fn napi_set_element(
463 env: napi_env,
464 object: napi_value,
465 index: u32,
466 value: napi_value,
467 ) -> napi_status;
468 pub fn napi_has_element(
469 env: napi_env,
470 object: napi_value,
471 index: u32,
472 result: *mut bool,
473 ) -> napi_status;
474 pub fn napi_get_element(
475 env: napi_env,
476 object: napi_value,
477 index: u32,
478 result: *mut napi_value,
479 ) -> napi_status;
480 pub fn napi_delete_element(
481 env: napi_env,
482 object: napi_value,
483 index: u32,
484 result: *mut bool,
485 ) -> napi_status;
486 pub fn napi_define_properties(
487 env: napi_env,
488 object: napi_value,
489 property_count: size_t,
490 properties: *const napi_property_descriptor,
491 ) -> napi_status;
492 pub fn napi_is_array(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
493 pub fn napi_get_array_length(env: napi_env, value: napi_value, result: *mut u32)
494 -> napi_status;
495 pub fn napi_strict_equals(
496 env: napi_env,
497 lhs: napi_value,
498 rhs: napi_value,
499 result: *mut bool,
500 ) -> napi_status;
501 pub fn napi_call_function(
502 env: napi_env,
503 recv: napi_value,
504 func: napi_value,
505 argc: size_t,
506 argv: *const napi_value,
507 result: *mut napi_value,
508 ) -> napi_status;
509 pub fn napi_new_instance(
510 env: napi_env,
511 constructor: napi_value,
512 argc: size_t,
513 argv: *const napi_value,
514 result: *mut napi_value,
515 ) -> napi_status;
516 pub fn napi_instanceof(
517 env: napi_env,
518 object: napi_value,
519 constructor: napi_value,
520 result: *mut bool,
521 ) -> napi_status;
522 pub fn napi_get_cb_info(
523 env: napi_env,
524 cbinfo: napi_callback_info,
525 argc: *mut size_t,
526 argv: *mut napi_value,
527 this_arg: *mut napi_value,
528 data: *mut *mut c_void,
529 ) -> napi_status;
530 pub fn napi_get_new_target(
531 env: napi_env,
532 cbinfo: napi_callback_info,
533 result: *mut napi_value,
534 ) -> napi_status;
535 pub fn napi_define_class(
536 env: napi_env,
537 utf8name: *const c_char,
538 length: size_t,
539 constructor: napi_callback,
540 data: *mut c_void,
541 property_count: size_t,
542 properties: *const napi_property_descriptor,
543 result: *mut napi_value,
544 ) -> napi_status;
545 pub fn napi_wrap(
546 env: napi_env,
547 js_object: napi_value,
548 native_object: *mut c_void,
549 finalize_cb: napi_finalize,
550 finalize_hint: *mut c_void,
551 result: *mut napi_ref,
552 ) -> napi_status;
553 pub fn napi_unwrap(
554 env: napi_env,
555 js_object: napi_value,
556 result: *mut *mut c_void,
557 ) -> napi_status;
558 pub fn napi_remove_wrap(
559 env: napi_env,
560 js_object: napi_value,
561 result: *mut *mut c_void,
562 ) -> napi_status;
563 pub fn napi_create_external(
564 env: napi_env,
565 data: *mut c_void,
566 finalize_cb: napi_finalize,
567 finalize_hint: *mut c_void,
568 result: *mut napi_value,
569 ) -> napi_status;
570 pub fn napi_get_value_external(
571 env: napi_env,
572 value: napi_value,
573 result: *mut *mut c_void,
574 ) -> napi_status;
575 pub fn napi_create_reference(
576 env: napi_env,
577 value: napi_value,
578 initial_refcount: u32,
579 result: *mut napi_ref,
580 ) -> napi_status;
581 pub fn napi_delete_reference(env: napi_env, ref_: napi_ref) -> napi_status;
582 pub fn napi_reference_ref(env: napi_env, ref_: napi_ref, result: *mut u32) -> napi_status;
583 pub fn napi_reference_unref(env: napi_env, ref_: napi_ref, result: *mut u32) -> napi_status;
584 pub fn napi_get_reference_value(
585 env: napi_env,
586 ref_: napi_ref,
587 result: *mut napi_value,
588 ) -> napi_status;
589 pub fn napi_open_handle_scope(env: napi_env, result: *mut napi_handle_scope) -> napi_status;
590 pub fn napi_close_handle_scope(env: napi_env, scope: napi_handle_scope) -> napi_status;
591 pub fn napi_open_escapable_handle_scope(
592 env: napi_env,
593 result: *mut napi_escapable_handle_scope,
594 ) -> napi_status;
595 pub fn napi_close_escapable_handle_scope(
596 env: napi_env,
597 scope: napi_escapable_handle_scope,
598 ) -> napi_status;
599 pub fn napi_escape_handle(
600 env: napi_env,
601 scope: napi_escapable_handle_scope,
602 escapee: napi_value,
603 result: *mut napi_value,
604 ) -> napi_status;
605 pub fn napi_throw(env: napi_env, error: napi_value) -> napi_status;
606 pub fn napi_throw_error(env: napi_env, code: *const c_char, msg: *const c_char) -> napi_status;
607 pub fn napi_throw_type_error(
608 env: napi_env,
609 code: *const c_char,
610 msg: *const c_char,
611 ) -> napi_status;
612 pub fn napi_throw_range_error(
613 env: napi_env,
614 code: *const c_char,
615 msg: *const c_char,
616 ) -> napi_status;
617 pub fn napi_is_error(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
618 pub fn napi_is_exception_pending(env: napi_env, result: *mut bool) -> napi_status;
619 pub fn napi_get_and_clear_last_exception(env: napi_env, result: *mut napi_value)
620 -> napi_status;
621 pub fn napi_create_buffer(
622 env: napi_env,
623 length: size_t,
624 data: *mut *mut c_void,
625 result: *mut napi_value,
626 ) -> napi_status;
627 pub fn napi_create_external_buffer(
628 env: napi_env,
629 length: size_t,
630 data: *mut c_void,
631 finalize_cb: napi_finalize,
632 finalize_hint: *mut c_void,
633 result: *mut napi_value,
634 ) -> napi_status;
635 pub fn napi_create_buffer_copy(
636 env: napi_env,
637 length: size_t,
638 data: *const c_void,
639 result_data: *mut *mut c_void,
640 result: *mut napi_value,
641 ) -> napi_status;
642 pub fn napi_is_buffer(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
643 pub fn napi_get_buffer_info(
644 env: napi_env,
645 value: napi_value,
646 data: *mut *mut c_void,
647 length: *mut size_t,
648 ) -> napi_status;
649 pub fn napi_is_arraybuffer(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
650 pub fn napi_create_arraybuffer(
651 env: napi_env,
652 byte_length: size_t,
653 data: *mut *mut c_void,
654 result: *mut napi_value,
655 ) -> napi_status;
656 pub fn napi_create_external_arraybuffer(
657 env: napi_env,
658 external_data: *mut c_void,
659 byte_length: size_t,
660 finalize_cb: napi_finalize,
661 finalize_hint: *mut c_void,
662 result: *mut napi_value,
663 ) -> napi_status;
664 pub fn napi_get_arraybuffer_info(
665 env: napi_env,
666 arraybuffer: napi_value,
667 data: *mut *mut c_void,
668 byte_length: *mut size_t,
669 ) -> napi_status;
670 pub fn napi_is_typedarray(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
671 pub fn napi_create_typedarray(
672 env: napi_env,
673 type_: napi_typedarray_type,
674 length: size_t,
675 arraybuffer: napi_value,
676 byte_offset: size_t,
677 result: *mut napi_value,
678 ) -> napi_status;
679 pub fn napi_get_typedarray_info(
680 env: napi_env,
681 typedarray: napi_value,
682 type_: *mut napi_typedarray_type,
683 length: *mut size_t,
684 data: *mut *mut c_void,
685 arraybuffer: *mut napi_value,
686 byte_offset: *mut size_t,
687 ) -> napi_status;
688 pub fn napi_create_dataview(
689 env: napi_env,
690 length: size_t,
691 arraybuffer: napi_value,
692 byte_offset: size_t,
693 result: *mut napi_value,
694 ) -> napi_status;
695 pub fn napi_is_dataview(env: napi_env, value: napi_value, result: *mut bool) -> napi_status;
696 pub fn napi_get_dataview_info(
697 env: napi_env,
698 dataview: napi_value,
699 bytelength: *mut size_t,
700 data: *mut *mut c_void,
701 arraybuffer: *mut napi_value,
702 byte_offset: *mut size_t,
703 ) -> napi_status;
704 pub fn napi_create_async_work(
705 env: napi_env,
706 async_resource: napi_value,
707 async_resource_name: napi_value,
708 execute: napi_async_execute_callback,
709 complete: napi_async_complete_callback,
710 data: *mut c_void,
711 result: *mut napi_async_work,
712 ) -> napi_status;
713 pub fn napi_delete_async_work(env: napi_env, work: napi_async_work) -> napi_status;
714 pub fn napi_queue_async_work(env: napi_env, work: napi_async_work) -> napi_status;
715 pub fn napi_cancel_async_work(env: napi_env, work: napi_async_work) -> napi_status;
716 pub fn napi_async_init(
717 env: napi_env,
718 async_resource: napi_value,
719 async_resource_name: napi_value,
720 result: *mut napi_async_context,
721 ) -> napi_status;
722 pub fn napi_async_destroy(env: napi_env, async_context: napi_async_context) -> napi_status;
723 pub fn napi_make_callback(
724 env: napi_env,
725 async_context: napi_async_context,
726 recv: napi_value,
727 func: napi_value,
728 argc: size_t,
729 argv: *const napi_value,
730 result: *mut napi_value,
731 ) -> napi_status;
732 pub fn napi_get_version(env: napi_env, result: *mut u32) -> napi_status;
733 pub fn napi_get_node_version(
734 env: napi_env,
735 version: *mut *const napi_node_version,
736 ) -> napi_status;
737 pub fn napi_create_promise(
738 env: napi_env,
739 deferred: *mut napi_deferred,
740 promise: *mut napi_value,
741 ) -> napi_status;
742 pub fn napi_resolve_deferred(
743 env: napi_env,
744 deferred: napi_deferred,
745 resolution: napi_value,
746 ) -> napi_status;
747 pub fn napi_reject_deferred(
748 env: napi_env,
749 deferred: napi_deferred,
750 rejection: napi_value,
751 ) -> napi_status;
752 pub fn napi_is_promise(
753 env: napi_env,
754 promise: napi_value,
755 is_promise: *mut bool,
756 ) -> napi_status;
757 pub fn napi_adjust_external_memory(
758 env: napi_env,
759 change_in_bytes: i64,
760 adjusted_value: *mut i64,
761 ) -> napi_status;
762 pub fn napi_run_script(
763 env: napi_env,
764 script: napi_value,
765 result: *mut napi_value,
766 ) -> napi_status;
767}
768
769#[cfg(feature = "v2")]
770extern "C" {
771 pub fn napi_get_uv_event_loop(env: napi_env, loop_: *mut *mut uv_loop_s) -> napi_status;
772}
773
774#[cfg(feature = "v3")]
775extern "C" {
776 pub fn napi_open_callback_scope(
777 env: napi_env,
778 resource_object: napi_value,
779 context: napi_async_context,
780 result: *mut napi_callback_scope,
781 ) -> napi_status;
782 pub fn napi_close_callback_scope(env: napi_env, scope: napi_callback_scope) -> napi_status;
783 pub fn napi_fatal_exception(env: napi_env, err: napi_value) -> napi_status;
784 pub fn napi_add_env_cleanup_hook(
785 env: napi_env,
786 fun: Option<unsafe extern "C" fn(arg: *mut c_void)>,
787 arg: *mut c_void,
788 ) -> napi_status;
789 pub fn napi_remove_env_cleanup_hook(
790 env: napi_env,
791 fun: Option<unsafe extern "C" fn(arg: *mut c_void)>,
792 arg: *mut c_void,
793 ) -> napi_status;
794}
795
796#[cfg(feature = "v4")]
797extern "C" {
798 pub fn napi_create_threadsafe_function(
799 env: napi_env,
800 func: napi_value,
801 async_resource: napi_value,
802 async_resource_name: napi_value,
803 max_queue_size: size_t,
804 initial_thread_count: size_t,
805 thread_finalize_data: *mut c_void,
806 thread_finalize_cb: napi_finalize,
807 context: *mut c_void,
808 call_js_cb: napi_threadsafe_function_call_js,
809 result: *mut napi_threadsafe_function,
810 ) -> napi_status;
811 pub fn napi_get_threadsafe_function_context(
812 func: napi_threadsafe_function,
813 result: *mut *mut c_void,
814 ) -> napi_status;
815 pub fn napi_call_threadsafe_function(
816 func: napi_threadsafe_function,
817 data: *mut c_void,
818 is_blocking: napi_threadsafe_function_call_mode,
819 ) -> napi_status;
820 pub fn napi_acquire_threadsafe_function(func: napi_threadsafe_function) -> napi_status;
821 pub fn napi_release_threadsafe_function(
822 func: napi_threadsafe_function,
823 mode: napi_threadsafe_function_release_mode,
824 ) -> napi_status;
825 pub fn napi_unref_threadsafe_function(
826 env: napi_env,
827 func: napi_threadsafe_function,
828 ) -> napi_status;
829 pub fn napi_ref_threadsafe_function(
830 env: napi_env,
831 func: napi_threadsafe_function,
832 ) -> napi_status;
833}
834
835#[cfg(feature = "v5")]
836extern "C" {
837 pub fn napi_create_date(env: napi_env, time: f64, result: *mut napi_value) -> napi_status;
838 pub fn napi_is_date(env: napi_env, value: napi_value, is_date: *mut bool) -> napi_status;
839 pub fn napi_get_date_value(env: napi_env, value: napi_value, result: *mut f64) -> napi_status;
840 pub fn napi_add_finalizer(
841 env: napi_env,
842 js_object: napi_value,
843 native_object: *mut c_void,
844 finalize_cb: napi_finalize,
845 finalize_hint: *mut c_void,
846 result: *mut napi_ref,
847 ) -> napi_status;
848}
849
850#[cfg(feature = "v6")]
851extern "C" {
852 pub fn napi_create_bigint_int64(
853 env: napi_env,
854 value: i64,
855 result: *mut napi_value,
856 ) -> napi_status;
857 pub fn napi_create_bigint_uint64(
858 env: napi_env,
859 value: u64,
860 result: *mut napi_value,
861 ) -> napi_status;
862 pub fn napi_create_bigint_words(
863 env: napi_env,
864 sign_bit: c_int,
865 word_count: size_t,
866 words: *const u64,
867 result: *mut napi_value,
868 ) -> napi_status;
869 pub fn napi_get_value_bigint_int64(
870 env: napi_env,
871 value: napi_value,
872 result: *mut i64,
873 lossless: *mut bool,
874 ) -> napi_status;
875 pub fn napi_get_value_bigint_uint64(
876 env: napi_env,
877 value: napi_value,
878 result: *mut u64,
879 lossless: *mut bool,
880 ) -> napi_status;
881 pub fn napi_get_value_bigint_words(
882 env: napi_env,
883 value: napi_value,
884 sign_bit: *mut c_int,
885 word_count: *mut size_t,
886 words: *mut u64,
887 ) -> napi_status;
888 pub fn napi_set_instance_data(
889 env: napi_env,
890 data: *mut c_void,
891 finalize_cb: napi_finalize,
892 finalize_hint: *mut c_void,
893 ) -> napi_status;
894 pub fn napi_get_instance_data(env: napi_env, data: *mut *mut c_void) -> napi_status;
895 pub fn napi_get_all_property_names(
896 env: napi_env,
897 object: napi_value,
898 key_mode: napi_key_collection_mode,
899 key_filter: napi_key_filter,
900 key_conversion: napi_key_conversion,
901 result: *mut napi_value,
902 ) -> napi_status;
903}
904
905#[cfg(feature = "v7")]
906extern "C" {
907 pub fn napi_detach_arraybuffer(env: napi_env, arraybuffer: napi_value) -> napi_status;
908 pub fn napi_is_detached_arraybuffer(
909 env: napi_env,
910 value: napi_value,
911 result: *mut bool,
912 ) -> napi_status;
913}