Node-API

Introduction

Node-API (NAPI) provides APIs to encapsulate JavaScript (JS) capabilities as a native plug-in. It is independent of the underlying JS and is maintained as part of Node.js.

Supported Capabilities

NAPI eliminates the differences between underlying JS engines and provides a set of stable interfaces.

The OpenHarmony N-API component optimizes the Node-API interface implementation and provides connection to underlying engines such as ArkJS. Currently, some interfaces in the Node-API standard library are supported.

Symbols Exported from the N-API Component Standard Library

Type Symbol Description
FUNC napi_module_register Registers the NAPI native module.
FUNC napi_get_last_error_info Obtains the napi_extended_error_info structure, which contains the latest error information.
FUNC napi_throw Throws a JS value.
FUNC napi_throw_error Throws a JS Error with text information.
FUNC napi_throw_type_error Throws a JS TypeError with text information.
FUNC napi_throw_range_error Throws a JS RangeError with text information.
FUNC napi_is_error Checks whether napi_value indicates an error object.
FUNC napi_create_error Creates a JS Error with text information.
FUNC napi_create_type_error Creates a JS TypeError with text information.
FUNC napi_create_range_error Creates a JS RangeError with text information.
FUNC napi_get_and_clear_last_exception Obtains and clears the latest exception.
FUNC napi_is_exception_pending Checks whether an exception occurs.
FUNC napi_fatal_error Raises a fatal error to terminate the process immediately.
FUNC napi_open_handle_scope Creates a context environment.
FUNC napi_close_handle_scope Closes the context environment. After the context environment is closed, all references declared in it are closed.
FUNC napi_open_escapable_handle_scope Creates an escapable handle scope from which the declared values can be returned to the parent scope.
FUNC napi_close_escapable_handle_scope Closes the escapable handle scope passed in.
FUNC napi_escape_handle Promotes the handle to the input JS object so that it is valid for the lifespan of its parent scope.
FUNC napi_create_reference Creates a reference for an Object to extend its lifespan. The caller needs to manage the reference lifespan.
FUNC napi_delete_reference Deletes the reference passed in.
FUNC napi_reference_ref Increments the reference count for the reference passed in and returns the count.
FUNC napi_reference_unref Decrements the reference count for the reference passed in and returns the count.
FUNC napi_get_reference_value Obtains the JS Object associated with the reference.
FUNC napi_create_array Creates a JS Array.
FUNC napi_create_array_with_length Creates a JS Array of the specified length.
FUNC napi_create_arraybuffer Creates a JS ArrayBuffer of the specified size.
FUNC napi_create_external Allocates a JS value with external data.
FUNC napi_create_external_arraybuffer Allocates a JS ArrayBuffer with external data.
FUNC napi_create_object Creates a default JS Object.
FUNC napi_create_symbol Create a JS Symbol.
FUNC napi_create_typedarray Creates a JS TypeArray from an existing ArrayBuffer.
FUNC napi_create_dataview Creates a JS DataView from an existing ArrayBuffer.
FUNC napi_create_int32 Creates a JS Number from C int32_t data.
FUNC napi_create_uint32 Creates a JS Number from C uint32_t data.
FUNC napi_create_int64 Creates a JS Number from C int64_t data.
FUNC napi_create_double Creates a JS Number from C double data.
FUNC napi_create_string_latin1 Creates a JS String from an ISO-8859-1-encoded C string.
FUNC napi_create_string_utf8 Creates a JS String from a UTF8-encoded C string.
FUNC napi_create_string_utf16 Creates a JS String from a UTF16-encoded C string.
FUNC napi_get_array_length Obtains the length of an array.
FUNC napi_get_arraybuffer_info Obtains the underlying data buffer of the ArrayBuffer and its length.
FUNC napi_get_prototype Obtains the prototype of the specified JS Object.
FUNC napi_get_typedarray_info Obtains properties of the specified TypedArray.
FUNC napi_get_dataview_info Obtains properties of the specified DataView.
FUNC napi_get_value_bool Obtains the C Boolean equivalent of the given JS Boolean.
FUNC napi_get_value_double Obtains the C double equivalent of the given JS Number.
FUNC napi_get_value_external Obtains the external data pointer previously passed through napi_create_external().
FUNC napi_get_value_int32 Obtains the C int32 equivalent of the given JS Number.
FUNC napi_get_value_int64 Obtains the C int64 equivalent of the given JS Number.
FUNC napi_get_value_string_latin1 Obtains the ISO-8859-1-encoded string corresponding to the given JS value.
FUNC napi_get_value_string_utf8 Obtains the UTF8-encoded string corresponding to the given JS value.
FUNC napi_get_value_string_utf16 Obtains the UTF16-encoded string corresponding to the given JS value.
FUNC napi_get_value_uint32 Obtains the C uint32 equivalent of the given JS Number.
FUNC napi_get_boolean Obtains the JS Boolean object based on the given C Boolean value.
FUNC napi_get_global Obtains the global object.
FUNC napi_get_null Obtains the null object.
FUNC napi_get_undefined Obtains the undefined object.
FUNC napi_coerce_to_bool Forcibly converts the given JS value to a JS Boolean value.
FUNC napi_coerce_to_number Forcibly converts the given JS value to a JS number.
FUNC napi_coerce_to_object Forcibly converts the given JS value to a JS object.
FUNC napi_coerce_to_string Forcibly converts the given JS value to a JS string.
FUNC napi_typeof Obtains the JS type of the given JS value.
FUNC napi_instanceof Checks whether the given object is an instance of the specified constructor.
FUNC napi_is_array Checks whether the given JS value is an array.
FUNC napi_is_arraybuffer Checks whether the given JS value is a ArrayBuffer.
FUNC napi_is_typedarray Checks whether the given JS value is a TypedArray.
FUNC napi_is_dataview Checks whether the given JS value is a DataView.
FUNC napi_is_date Checks whether the given JS value is a JS Date object.
FUNC napi_strict_equals Checks whether two JS values are strictly equal.
FUNC napi_get_property_names Obtains the names of the enumerable properties of Object in an array of strings.
FUNC napi_set_property Sets a property for the given Object.
FUNC napi_get_property Obtains the requested property of the given Object.
FUNC napi_has_property Checks whether the given Object has the specified property.
FUNC napi_delete_property Deletes the key property from the given Object.
FUNC napi_has_own_property Checks whether the given Object has the own property named key.
FUNC napi_set_named_property Sets a property with the specified name for the given Object.
FUNC napi_get_named_property Obtains the property with the specified name in the given Object.
FUNC napi_has_named_property Checks whether the given Object has the property with the specified name.
FUNC napi_set_element Sets an element at the specified index of the given Object.
FUNC napi_get_element Obtains the element at the specified index of the given Object.
FUNC napi_has_element Obtains the element if the given Object has an element at the specified index.
FUNC napi_delete_element Deletes the element at the specified index of the given Object.
FUNC napi_define_properties Defines multiple properties for the given Object.
FUNC napi_type_tag_object Associates the value of the tag pointer with Object.
FUNC napi_check_object_type_tag Checks whether a tag pointer is associated with the JS Object.
FUNC napi_call_function Calls a JS function in a native method, that is, native call JS.
FUNC napi_create_function Creates a native method for JS to call.
FUNC napi_get_cb_info Obtains detailed information about the call, such as the parameters and this pointer, from the given callback info.
FUNC napi_get_new_target Obtains the new.target of the constructor call.
FUNC napi_new_instance Creates an instance based on the given constructor.
FUNC napi_define_class Defines a JS class corresponding to the C++ class.
FUNC napi_wrap Wraps a native instance in a JS object.
FUNC napi_unwrap Obtains the native instance that was previously wrapped in a JS object.
FUNC napi_remove_wrap Obtains the native instance that was previously wrapped in a JS object and removes the wrapping.
FUNC napi_create_async_work Creates a work object that executes logic asynchronously.
FUNC napi_delete_async_work Releases an asynchronous work object.
FUNC napi_queue_async_work Adds an asynchronous work object to the queue so that it can be scheduled for execution.
FUNC napi_cancel_async_work Cancels the queued asynchronous work if it has not been started.
FUNC napi_get_node_version Obtains the current Node-API version.
FUNC napi_get_version Obtains the latest Node-API version supported when the Node.js runtime.
FUNC napi_create_promise Creates a deferred object and a JS promise.
FUNC napi_resolve_deferred Resolves a deferred object that is associated with a JS promise.
FUNC napi_reject_deferred Rejects a deferred object that is associated with a JS promise.
FUNC napi_is_promise Checks whether the given JS value is a promise object.
FUNC napi_get_uv_event_loop Obtains the current libuv loop instance.
FUNC napi_create_threadsafe_function Creates a thread-safe function.
FUNC napi_get_threadsafe_function_context Obtains the context of a thread-safe function.
FUNC napi_call_threadsafe_function Calls a thread-safe function.
FUNC napi_acquire_threadsafe_function Indicates that a thread starts to use a thread-safe function.
FUNC napi_release_threadsafe_function Indicates that a thread releases a thread-safe function.
FUNC napi_ref_threadsafe_function Indicates that the event loop running on the main thread should not exit until the thread-safe function is destroyed.
FUNC napi_unref_threadsafe_function Indicates that the event loop running on the main thread may exit before the thread-safe function is destroyed.
FUNC napi_create_date Creates a JS Date from C double data.
FUNC napi_get_date_value Obtains the C double equivalent of the given JS Date.
FUNC napi_create_bigint_int64 Creates a JS BigInt from C int64 data.
FUNC napi_create_bigint_uint64 Creates a JS BigInt from C uint64 data.
FUNC napi_create_bigint_words Creates a single JS BigInt from a C uint64 array.
FUNC napi_get_value_bigint_int64 Obtains the C int64 equivalent of the given JS BigInt.
FUNC napi_get_value_bigint_uint64 Obtains the C uint64 equivalent of the given JS BigInt.
FUNC napi_get_value_bigint_words Obtains information from the given JS BigInt, including the sign bit, 64-bit little-endian array, and number of elements in the array.
FUNC napi_create_buffer Creates a JS Buffer instance of the specified size.
FUNC napi_create_buffer_copy Creates a JS Buffer instance of the specified size, and initializes it with data copied from the passed-in buffer.
FUNC napi_create_external_buffer Creates a JS Buffer instance of the specified size, and initializes it with the given data. The Buffer instance created can include extra.
FUNC napi_get_buffer_info Obtains the underlying data of Buffer and its length.
FUNC napi_is_buffer Checks whether the given JS value is a Buffer object.
FUNC napi_object_freeze Freezes the given object.
FUNC napi_object_seal Seals the given object.
FUNC napi_get_all_property_names Obtains an array containing the names of all the available properties of this object.
FUNC napi_detach_arraybuffer Detaches the underlying data of the given ArrayBuffer.
FUNC napi_is_detached_arraybuffer Checks whether the given ArrayBuffer has been detached.

Extended Symbols of the N-API Component

Type Symbol Description
FUNC napi_queue_async_work_with_qos Adds asynchronously working objects to the queue and schedules them based on the QoS priority.
FUNC napi_run_script_path Runs an ABC file.