Where Online Learning is simpler!
The C and C++ Include Header Files
cat -n /usr/include/node/js_native_api.h
1 #ifndef SRC_JS_NATIVE_API_H_ 2 #define SRC_JS_NATIVE_API_H_ 3 4 // This file needs to be compatible with C compilers. 5 #include <stdbool.h> // NOLINT(modernize-deprecated-headers) 6 #include <stddef.h> // NOLINT(modernize-deprecated-headers) 7 8 #include "js_native_api_types.h" 9 10 // If you need __declspec(dllimport), either include <node_api.h> instead, or 11 // define NAPI_EXTERN as __declspec(dllimport) on the compiler's command line. 12 #ifndef NAPI_EXTERN 13 #ifdef _WIN32 14 #define NAPI_EXTERN __declspec(dllexport) 15 #elif defined(__wasm__) 16 #define NAPI_EXTERN \ 17 __attribute__((visibility("default"))) \ 18 __attribute__((__import_module__("napi"))) 19 #else 20 #define NAPI_EXTERN __attribute__((visibility("default"))) 21 #endif 22 #endif 23 24 #define NAPI_AUTO_LENGTH SIZE_MAX 25 26 #ifdef __cplusplus 27 #define EXTERN_C_START extern "C" { 28 #define EXTERN_C_END } 29 #else 30 #define EXTERN_C_START 31 #define EXTERN_C_END 32 #endif 33 34 EXTERN_C_START 35 36 NAPI_EXTERN napi_status NAPI_CDECL napi_get_last_error_info( 37 node_api_basic_env env, const napi_extended_error_info** result); 38 39 // Getters for defined singletons 40 NAPI_EXTERN napi_status NAPI_CDECL napi_get_undefined(napi_env env, 41 napi_value* result); 42 NAPI_EXTERN napi_status NAPI_CDECL napi_get_null(napi_env env, 43 napi_value* result); 44 NAPI_EXTERN napi_status NAPI_CDECL napi_get_global(napi_env env, 45 napi_value* result); 46 NAPI_EXTERN napi_status NAPI_CDECL napi_get_boolean(napi_env env, 47 bool value, 48 napi_value* result); 49 50 // Methods to create Primitive types/Objects 51 NAPI_EXTERN napi_status NAPI_CDECL napi_create_object(napi_env env, 52 napi_value* result); 53 NAPI_EXTERN napi_status NAPI_CDECL napi_create_array(napi_env env, 54 napi_value* result); 55 NAPI_EXTERN napi_status NAPI_CDECL 56 napi_create_array_with_length(napi_env env, size_t length, napi_value* result); 57 NAPI_EXTERN napi_status NAPI_CDECL napi_create_double(napi_env env, 58 double value, 59 napi_value* result); 60 NAPI_EXTERN napi_status NAPI_CDECL napi_create_int32(napi_env env, 61 int32_t value, 62 napi_value* result); 63 NAPI_EXTERN napi_status NAPI_CDECL napi_create_uint32(napi_env env, 64 uint32_t value, 65 napi_value* result); 66 NAPI_EXTERN napi_status NAPI_CDECL napi_create_int64(napi_env env, 67 int64_t value, 68 napi_value* result); 69 NAPI_EXTERN napi_status NAPI_CDECL napi_create_string_latin1( 70 napi_env env, const char* str, size_t length, napi_value* result); 71 NAPI_EXTERN napi_status NAPI_CDECL napi_create_string_utf8(napi_env env, 72 const char* str, 73 size_t length, 74 napi_value* result); 75 NAPI_EXTERN napi_status NAPI_CDECL napi_create_string_utf16(napi_env env, 76 const char16_t* str, 77 size_t length, 78 napi_value* result); 79 #if NAPI_VERSION >= 10 80 NAPI_EXTERN napi_status NAPI_CDECL node_api_create_external_string_latin1( 81 napi_env env, 82 char* str, 83 size_t length, 84 node_api_basic_finalize finalize_callback, 85 void* finalize_hint, 86 napi_value* result, 87 bool* copied); 88 NAPI_EXTERN napi_status NAPI_CDECL 89 node_api_create_external_string_utf16(napi_env env, 90 char16_t* str, 91 size_t length, 92 node_api_basic_finalize finalize_callback, 93 void* finalize_hint, 94 napi_value* result, 95 bool* copied); 96 97 NAPI_EXTERN napi_status NAPI_CDECL node_api_create_property_key_latin1( 98 napi_env env, const char* str, size_t length, napi_value* result); 99 NAPI_EXTERN napi_status NAPI_CDECL node_api_create_property_key_utf8( 100 napi_env env, const char* str, size_t length, napi_value* result); 101 NAPI_EXTERN napi_status NAPI_CDECL node_api_create_property_key_utf16( 102 napi_env env, const char16_t* str, size_t length, napi_value* result); 103 #endif // NAPI_VERSION >= 10 104 105 NAPI_EXTERN napi_status NAPI_CDECL napi_create_symbol(napi_env env, 106 napi_value description, 107 napi_value* result); 108 #if NAPI_VERSION >= 9 109 NAPI_EXTERN napi_status NAPI_CDECL 110 node_api_symbol_for(napi_env env, 111 const char* utf8description, 112 size_t length, 113 napi_value* result); 114 #endif // NAPI_VERSION >= 9 115 NAPI_EXTERN napi_status NAPI_CDECL napi_create_function(napi_env env, 116 const char* utf8name, 117 size_t length, 118 napi_callback cb, 119 void* data, 120 napi_value* result); 121 NAPI_EXTERN napi_status NAPI_CDECL napi_create_error(napi_env env, 122 napi_value code, 123 napi_value msg, 124 napi_value* result); 125 NAPI_EXTERN napi_status NAPI_CDECL napi_create_type_error(napi_env env, 126 napi_value code, 127 napi_value msg, 128 napi_value* result); 129 NAPI_EXTERN napi_status NAPI_CDECL napi_create_range_error(napi_env env, 130 napi_value code, 131 napi_value msg, 132 napi_value* result); 133 #if NAPI_VERSION >= 9 134 NAPI_EXTERN napi_status NAPI_CDECL node_api_create_syntax_error( 135 napi_env env, napi_value code, napi_value msg, napi_value* result); 136 #endif // NAPI_VERSION >= 9 137 138 // Methods to get the native napi_value from Primitive type 139 NAPI_EXTERN napi_status NAPI_CDECL napi_typeof(napi_env env, 140 napi_value value, 141 napi_valuetype* result); 142 NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_double(napi_env env, 143 napi_value value, 144 double* result); 145 NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_int32(napi_env env, 146 napi_value value, 147 int32_t* result); 148 NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_uint32(napi_env env, 149 napi_value value, 150 uint32_t* result); 151 NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_int64(napi_env env, 152 napi_value value, 153 int64_t* result); 154 NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_bool(napi_env env, 155 napi_value value, 156 bool* result); 157 158 // Copies LATIN-1 encoded bytes from a string into a buffer. 159 NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_string_latin1( 160 napi_env env, napi_value value, char* buf, size_t bufsize, size_t* result); 161 162 // Copies UTF-8 encoded bytes from a string into a buffer. 163 NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_string_utf8( 164 napi_env env, napi_value value, char* buf, size_t bufsize, size_t* result); 165 166 // Copies UTF-16 encoded bytes from a string into a buffer. 167 NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_string_utf16(napi_env env, 168 napi_value value, 169 char16_t* buf, 170 size_t bufsize, 171 size_t* result); 172 173 // Methods to coerce values 174 // These APIs may execute user scripts 175 NAPI_EXTERN napi_status NAPI_CDECL napi_coerce_to_bool(napi_env env, 176 napi_value value, 177 napi_value* result); 178 NAPI_EXTERN napi_status NAPI_CDECL napi_coerce_to_number(napi_env env, 179 napi_value value, 180 napi_value* result); 181 NAPI_EXTERN napi_status NAPI_CDECL napi_coerce_to_object(napi_env env, 182 napi_value value, 183 napi_value* result); 184 NAPI_EXTERN napi_status NAPI_CDECL napi_coerce_to_string(napi_env env, 185 napi_value value, 186 napi_value* result); 187 188 // Methods to work with Objects 189 NAPI_EXTERN napi_status NAPI_CDECL napi_get_prototype(napi_env env, 190 napi_value object, 191 napi_value* result); 192 NAPI_EXTERN napi_status NAPI_CDECL napi_get_property_names(napi_env env, 193 napi_value object, 194 napi_value* result); 195 NAPI_EXTERN napi_status NAPI_CDECL napi_set_property(napi_env env, 196 napi_value object, 197 napi_value key, 198 napi_value value); 199 NAPI_EXTERN napi_status NAPI_CDECL napi_has_property(napi_env env, 200 napi_value object, 201 napi_value key, 202 bool* result); 203 NAPI_EXTERN napi_status NAPI_CDECL napi_get_property(napi_env env, 204 napi_value object, 205 napi_value key, 206 napi_value* result); 207 NAPI_EXTERN napi_status NAPI_CDECL napi_delete_property(napi_env env, 208 napi_value object, 209 napi_value key, 210 bool* result); 211 NAPI_EXTERN napi_status NAPI_CDECL napi_has_own_property(napi_env env, 212 napi_value object, 213 napi_value key, 214 bool* result); 215 NAPI_EXTERN napi_status NAPI_CDECL napi_set_named_property(napi_env env, 216 napi_value object, 217 const char* utf8name, 218 napi_value value); 219 NAPI_EXTERN napi_status NAPI_CDECL napi_has_named_property(napi_env env, 220 napi_value object, 221 const char* utf8name, 222 bool* result); 223 NAPI_EXTERN napi_status NAPI_CDECL napi_get_named_property(napi_env env, 224 napi_value object, 225 const char* utf8name, 226 napi_value* result); 227 NAPI_EXTERN napi_status NAPI_CDECL napi_set_element(napi_env env, 228 napi_value object, 229 uint32_t index, 230 napi_value value); 231 NAPI_EXTERN napi_status NAPI_CDECL napi_has_element(napi_env env, 232 napi_value object, 233 uint32_t index, 234 bool* result); 235 NAPI_EXTERN napi_status NAPI_CDECL napi_get_element(napi_env env, 236 napi_value object, 237 uint32_t index, 238 napi_value* result); 239 NAPI_EXTERN napi_status NAPI_CDECL napi_delete_element(napi_env env, 240 napi_value object, 241 uint32_t index, 242 bool* result); 243 NAPI_EXTERN napi_status NAPI_CDECL 244 napi_define_properties(napi_env env, 245 napi_value object, 246 size_t property_count, 247 const napi_property_descriptor* properties); 248 249 // Methods to work with Arrays 250 NAPI_EXTERN napi_status NAPI_CDECL napi_is_array(napi_env env, 251 napi_value value, 252 bool* result); 253 NAPI_EXTERN napi_status NAPI_CDECL napi_get_array_length(napi_env env, 254 napi_value value, 255 uint32_t* result); 256 257 // Methods to compare values 258 NAPI_EXTERN napi_status NAPI_CDECL napi_strict_equals(napi_env env, 259 napi_value lhs, 260 napi_value rhs, 261 bool* result); 262 263 // Methods to work with Functions 264 NAPI_EXTERN napi_status NAPI_CDECL napi_call_function(napi_env env, 265 napi_value recv, 266 napi_value func, 267 size_t argc, 268 const napi_value* argv, 269 napi_value* result); 270 NAPI_EXTERN napi_status NAPI_CDECL napi_new_instance(napi_env env, 271 napi_value constructor, 272 size_t argc, 273 const napi_value* argv, 274 napi_value* result); 275 NAPI_EXTERN napi_status NAPI_CDECL napi_instanceof(napi_env env, 276 napi_value object, 277 napi_value constructor, 278 bool* result); 279 280 // Methods to work with napi_callbacks 281 282 // Gets all callback info in a single call. (Ugly, but faster.) 283 NAPI_EXTERN napi_status NAPI_CDECL napi_get_cb_info( 284 napi_env env, // [in] Node-API environment handle 285 napi_callback_info cbinfo, // [in] Opaque callback-info handle 286 size_t* argc, // [in-out] Specifies the size of the provided argv array 287 // and receives the actual count of args. 288 napi_value* argv, // [out] Array of values 289 napi_value* this_arg, // [out] Receives the JS 'this' arg for the call 290 void** data); // [out] Receives the data pointer for the callback. 291 292 NAPI_EXTERN napi_status NAPI_CDECL napi_get_new_target( 293 napi_env env, napi_callback_info cbinfo, napi_value* result); 294 NAPI_EXTERN napi_status NAPI_CDECL 295 napi_define_class(napi_env env, 296 const char* utf8name, 297 size_t length, 298 napi_callback constructor, 299 void* data, 300 size_t property_count, 301 const napi_property_descriptor* properties, 302 napi_value* result); 303 304 // Methods to work with external data objects 305 NAPI_EXTERN napi_status NAPI_CDECL 306 napi_wrap(napi_env env, 307 napi_value js_object, 308 void* native_object, 309 node_api_basic_finalize finalize_cb, 310 void* finalize_hint, 311 napi_ref* result); 312 NAPI_EXTERN napi_status NAPI_CDECL napi_unwrap(napi_env env, 313 napi_value js_object, 314 void** result); 315 NAPI_EXTERN napi_status NAPI_CDECL napi_remove_wrap(napi_env env, 316 napi_value js_object, 317 void** result); 318 NAPI_EXTERN napi_status NAPI_CDECL 319 napi_create_external(napi_env env, 320 void* data, 321 node_api_basic_finalize finalize_cb, 322 void* finalize_hint, 323 napi_value* result); 324 NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_external(napi_env env, 325 napi_value value, 326 void** result); 327 328 // Methods to control object lifespan 329 330 // Set initial_refcount to 0 for a weak reference, >0 for a strong reference. 331 NAPI_EXTERN napi_status NAPI_CDECL 332 napi_create_reference(napi_env env, 333 napi_value value, 334 uint32_t initial_refcount, 335 napi_ref* result); 336 337 // Deletes a reference. The referenced value is released, and may 338 // be GC'd unless there are other references to it. 339 NAPI_EXTERN napi_status NAPI_CDECL napi_delete_reference(node_api_basic_env env, 340 napi_ref ref); 341 342 // Increments the reference count, optionally returning the resulting count. 343 // After this call the reference will be a strong reference because its 344 // refcount is >0, and the referenced object is effectively "pinned". 345 // Calling this when the refcount is 0 and the object is unavailable 346 // results in an error. 347 NAPI_EXTERN napi_status NAPI_CDECL napi_reference_ref(napi_env env, 348 napi_ref ref, 349 uint32_t* result); 350 351 // Decrements the reference count, optionally returning the resulting count. 352 // If the result is 0 the reference is now weak and the object may be GC'd 353 // at any time if there are no other references. Calling this when the 354 // refcount is already 0 results in an error. 355 NAPI_EXTERN napi_status NAPI_CDECL napi_reference_unref(napi_env env, 356 napi_ref ref, 357 uint32_t* result); 358 359 // Attempts to get a referenced value. If the reference is weak, 360 // the value might no longer be available, in that case the call 361 // is still successful but the result is NULL. 362 NAPI_EXTERN napi_status NAPI_CDECL napi_get_reference_value(napi_env env, 363 napi_ref ref, 364 napi_value* result); 365 366 NAPI_EXTERN napi_status NAPI_CDECL 367 napi_open_handle_scope(napi_env env, napi_handle_scope* result); 368 NAPI_EXTERN napi_status NAPI_CDECL 369 napi_close_handle_scope(napi_env env, napi_handle_scope scope); 370 NAPI_EXTERN napi_status NAPI_CDECL napi_open_escapable_handle_scope( 371 napi_env env, napi_escapable_handle_scope* result); 372 NAPI_EXTERN napi_status NAPI_CDECL napi_close_escapable_handle_scope( 373 napi_env env, napi_escapable_handle_scope scope); 374 375 NAPI_EXTERN napi_status NAPI_CDECL 376 napi_escape_handle(napi_env env, 377 napi_escapable_handle_scope scope, 378 napi_value escapee, 379 napi_value* result); 380 381 // Methods to support error handling 382 NAPI_EXTERN napi_status NAPI_CDECL napi_throw(napi_env env, napi_value error); 383 NAPI_EXTERN napi_status NAPI_CDECL napi_throw_error(napi_env env, 384 const char* code, 385 const char* msg); 386 NAPI_EXTERN napi_status NAPI_CDECL napi_throw_type_error(napi_env env, 387 const char* code, 388 const char* msg); 389 NAPI_EXTERN napi_status NAPI_CDECL napi_throw_range_error(napi_env env, 390 const char* code, 391 const char* msg); 392 #if NAPI_VERSION >= 9 393 NAPI_EXTERN napi_status NAPI_CDECL node_api_throw_syntax_error(napi_env env, 394 const char* code, 395 const char* msg); 396 #endif // NAPI_VERSION >= 9 397 NAPI_EXTERN napi_status NAPI_CDECL napi_is_error(napi_env env, 398 napi_value value, 399 bool* result); 400 401 // Methods to support catching exceptions 402 NAPI_EXTERN napi_status NAPI_CDECL napi_is_exception_pending(napi_env env, 403 bool* result); 404 NAPI_EXTERN napi_status NAPI_CDECL 405 napi_get_and_clear_last_exception(napi_env env, napi_value* result); 406 407 // Methods to work with array buffers and typed arrays 408 NAPI_EXTERN napi_status NAPI_CDECL napi_is_arraybuffer(napi_env env, 409 napi_value value, 410 bool* result); 411 NAPI_EXTERN napi_status NAPI_CDECL napi_create_arraybuffer(napi_env env, 412 size_t byte_length, 413 void** data, 414 napi_value* result); 415 #ifndef NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED 416 NAPI_EXTERN napi_status NAPI_CDECL 417 napi_create_external_arraybuffer(napi_env env, 418 void* external_data, 419 size_t byte_length, 420 node_api_basic_finalize finalize_cb, 421 void* finalize_hint, 422 napi_value* result); 423 #endif // NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED 424 NAPI_EXTERN napi_status NAPI_CDECL napi_get_arraybuffer_info( 425 napi_env env, napi_value arraybuffer, void** data, size_t* byte_length); 426 NAPI_EXTERN napi_status NAPI_CDECL napi_is_typedarray(napi_env env, 427 napi_value value, 428 bool* result); 429 NAPI_EXTERN napi_status NAPI_CDECL 430 napi_create_typedarray(napi_env env, 431 napi_typedarray_type type, 432 size_t length, 433 napi_value arraybuffer, 434 size_t byte_offset, 435 napi_value* result); 436 NAPI_EXTERN napi_status NAPI_CDECL 437 napi_get_typedarray_info(napi_env env, 438 napi_value typedarray, 439 napi_typedarray_type* type, 440 size_t* length, 441 void** data, 442 napi_value* arraybuffer, 443 size_t* byte_offset); 444 445 NAPI_EXTERN napi_status NAPI_CDECL napi_create_dataview(napi_env env, 446 size_t length, 447 napi_value arraybuffer, 448 size_t byte_offset, 449 napi_value* result); 450 NAPI_EXTERN napi_status NAPI_CDECL napi_is_dataview(napi_env env, 451 napi_value value, 452 bool* result); 453 NAPI_EXTERN napi_status NAPI_CDECL 454 napi_get_dataview_info(napi_env env, 455 napi_value dataview, 456 size_t* bytelength, 457 void** data, 458 napi_value* arraybuffer, 459 size_t* byte_offset); 460 461 #ifdef NAPI_EXPERIMENTAL 462 #define NODE_API_EXPERIMENTAL_HAS_SHAREDARRAYBUFFER 463 NAPI_EXTERN napi_status NAPI_CDECL 464 node_api_is_sharedarraybuffer(napi_env env, napi_value value, bool* result); 465 NAPI_EXTERN napi_status NAPI_CDECL node_api_create_sharedarraybuffer( 466 napi_env env, size_t byte_length, void** data, napi_value* result); 467 #endif // NAPI_EXPERIMENTAL 468 469 // version management 470 NAPI_EXTERN napi_status NAPI_CDECL napi_get_version(node_api_basic_env env, 471 uint32_t* result); 472 473 // Promises 474 NAPI_EXTERN napi_status NAPI_CDECL napi_create_promise(napi_env env, 475 napi_deferred* deferred, 476 napi_value* promise); 477 NAPI_EXTERN napi_status NAPI_CDECL napi_resolve_deferred(napi_env env, 478 napi_deferred deferred, 479 napi_value resolution); 480 NAPI_EXTERN napi_status NAPI_CDECL napi_reject_deferred(napi_env env, 481 napi_deferred deferred, 482 napi_value rejection); 483 NAPI_EXTERN napi_status NAPI_CDECL napi_is_promise(napi_env env, 484 napi_value value, 485 bool* is_promise); 486 487 // Running a script 488 NAPI_EXTERN napi_status NAPI_CDECL napi_run_script(napi_env env, 489 napi_value script, 490 napi_value* result); 491 492 // Memory management 493 NAPI_EXTERN napi_status NAPI_CDECL napi_adjust_external_memory( 494 node_api_basic_env env, int64_t change_in_bytes, int64_t* adjusted_value); 495 496 #if NAPI_VERSION >= 5 497 498 // Dates 499 NAPI_EXTERN napi_status NAPI_CDECL napi_create_date(napi_env env, 500 double time, 501 napi_value* result); 502 503 NAPI_EXTERN napi_status NAPI_CDECL napi_is_date(napi_env env, 504 napi_value value, 505 bool* is_date); 506 507 NAPI_EXTERN napi_status NAPI_CDECL napi_get_date_value(napi_env env, 508 napi_value value, 509 double* result); 510 511 // Add finalizer for pointer 512 NAPI_EXTERN napi_status NAPI_CDECL 513 napi_add_finalizer(napi_env env, 514 napi_value js_object, 515 void* finalize_data, 516 node_api_basic_finalize finalize_cb, 517 void* finalize_hint, 518 napi_ref* result); 519 520 #endif // NAPI_VERSION >= 5 521 522 #ifdef NAPI_EXPERIMENTAL 523 #define NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER 524 525 NAPI_EXTERN napi_status NAPI_CDECL 526 node_api_post_finalizer(node_api_basic_env env, 527 napi_finalize finalize_cb, 528 void* finalize_data, 529 void* finalize_hint); 530 531 #endif // NAPI_EXPERIMENTAL 532 533 #if NAPI_VERSION >= 6 534 535 // BigInt 536 NAPI_EXTERN napi_status NAPI_CDECL napi_create_bigint_int64(napi_env env, 537 int64_t value, 538 napi_value* result); 539 NAPI_EXTERN napi_status NAPI_CDECL 540 napi_create_bigint_uint64(napi_env env, uint64_t value, napi_value* result); 541 NAPI_EXTERN napi_status NAPI_CDECL 542 napi_create_bigint_words(napi_env env, 543 int sign_bit, 544 size_t word_count, 545 const uint64_t* words, 546 napi_value* result); 547 NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_bigint_int64(napi_env env, 548 napi_value value, 549 int64_t* result, 550 bool* lossless); 551 NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_bigint_uint64( 552 napi_env env, napi_value value, uint64_t* result, bool* lossless); 553 NAPI_EXTERN napi_status NAPI_CDECL 554 napi_get_value_bigint_words(napi_env env, 555 napi_value value, 556 int* sign_bit, 557 size_t* word_count, 558 uint64_t* words); 559 560 // Object 561 NAPI_EXTERN napi_status NAPI_CDECL 562 napi_get_all_property_names(napi_env env, 563 napi_value object, 564 napi_key_collection_mode key_mode, 565 napi_key_filter key_filter, 566 napi_key_conversion key_conversion, 567 napi_value* result); 568 569 // Instance data 570 NAPI_EXTERN napi_status NAPI_CDECL 571 napi_set_instance_data(node_api_basic_env env, 572 void* data, 573 napi_finalize finalize_cb, 574 void* finalize_hint); 575 576 NAPI_EXTERN napi_status NAPI_CDECL 577 napi_get_instance_data(node_api_basic_env env, void** data); 578 #endif // NAPI_VERSION >= 6 579 580 #if NAPI_VERSION >= 7 581 // ArrayBuffer detaching 582 NAPI_EXTERN napi_status NAPI_CDECL 583 napi_detach_arraybuffer(napi_env env, napi_value arraybuffer); 584 585 NAPI_EXTERN napi_status NAPI_CDECL 586 napi_is_detached_arraybuffer(napi_env env, napi_value value, bool* result); 587 #endif // NAPI_VERSION >= 7 588 589 #if NAPI_VERSION >= 8 590 // Type tagging 591 NAPI_EXTERN napi_status NAPI_CDECL napi_type_tag_object( 592 napi_env env, napi_value value, const napi_type_tag* type_tag); 593 594 NAPI_EXTERN napi_status NAPI_CDECL 595 napi_check_object_type_tag(napi_env env, 596 napi_value value, 597 const napi_type_tag* type_tag, 598 bool* result); 599 NAPI_EXTERN napi_status NAPI_CDECL napi_object_freeze(napi_env env, 600 napi_value object); 601 NAPI_EXTERN napi_status NAPI_CDECL napi_object_seal(napi_env env, 602 napi_value object); 603 #endif // NAPI_VERSION >= 8 604 605 EXTERN_C_END 606 607 #endif // SRC_JS_NATIVE_API_H_