# node-addon-api Documents

* [Setup](#setup)
* [API Documentation](#api)
* [Examples](#examples)
* [ABI Stability Guideline](#abi-stability-guideline)
* [More resource and info about native Addons](#resources)

Node-API is an ABI stable C interface provided by Node.js for building native
addons. It is independent of the underlying JavaScript runtime (e.g. V8 or ChakraCore)
and is maintained as part of Node.js itself. It is intended to insulate
native addons from changes in the underlying JavaScript engine and allow
modules compiled for one version to run on later versions of Node.js without
recompilation.

The `node-addon-api` module, which is not part of Node.js, preserves the benefits
of the Node-API as it consists only of inline code that depends only on the stable API
provided by Node-API. As such, modules built against one version of Node.js
using node-addon-api should run without having to be rebuilt with newer versions
of Node.js.

## Setup
  - [Installation and usage](setup.md)
  - [node-gyp](node-gyp.md)
  - [cmake-js](cmake-js.md)
  - [Conversion tool](conversion-tool.md)
  - [Checker tool](checker-tool.md)
  - [Generator](generator.md)
  - [Prebuild tools](prebuild_tools.md)

<a name="api"></a>

## API Documentation

The following is the documentation for node-addon-api.

 - [Full Class Hierarchy](hierarchy.md)
 - [Addon Structure](addon.md)
 - Data Types:
    - [BasicEnv](basic_env.md)
    - [Env](env.md)
    - [CallbackInfo](callbackinfo.md)
    - [Reference](reference.md)
    - [Value](value.md)
        - [Name](name.md)
            - [Symbol](symbol.md)
            - [String](string.md)
        - [Number](number.md)
        - [Date](date.md)
        - [BigInt](bigint.md)
        - [Boolean](boolean.md)
        - [External](external.md)
        - [Object](object.md)
            - [Array](array.md)
            - [ObjectReference](object_reference.md)
    - [PropertyDescriptor](property_descriptor.md)
    - [Function](function.md)
        - [FunctionReference](function_reference.md)
    - [ObjectWrap](object_wrap.md)
        - [ClassPropertyDescriptor](class_property_descriptor.md)
    - [Buffer](buffer.md)
    - [ArrayBuffer](array_buffer.md)
    - [SharedArrayBuffer](shared_array_buffer.md)
    - [TypedArray](typed_array.md)
      - [TypedArrayOf](typed_array_of.md)
    - [DataView](dataview.md)
 - [Error Handling](error_handling.md)
    - [Error](error.md)
      - [TypeError](type_error.md)
      - [RangeError](range_error.md)
      - [SyntaxError](syntax_error.md)
 - [Object Lifetime Management](object_lifetime_management.md)
    - [HandleScope](handle_scope.md)
    - [EscapableHandleScope](escapable_handle_scope.md)
    - [Finalization](finalization.md)
 - [Memory Management](memory_management.md)
 - [Async Operations](async_operations.md)
    - [AsyncWorker](async_worker.md)
    - [AsyncContext](async_context.md)
    - [AsyncWorker Variants](async_worker_variants.md)
 - [Thread-safe Functions](threadsafe.md)
    - [ThreadSafeFunction](threadsafe_function.md)
    - [TypedThreadSafeFunction](typed_threadsafe_function.md)
 - [Promises](promises.md)
 - [Version management](version_management.md)

<a name="examples"></a>

## Examples

Are you new to **node-addon-api**? Take a look at our **[examples](https://github.com/nodejs/node-addon-examples)**

- [Hello World](https://github.com/nodejs/node-addon-examples/tree/main/src/1-getting-started/1_hello_world)
- [Pass arguments to a function](https://github.com/nodejs/node-addon-examples/tree/main/src/1-getting-started/2_function_arguments/node-addon-api)
- [Callbacks](https://github.com/nodejs/node-addon-examples/tree/main/src/1-getting-started/3_callbacks/node-addon-api)
- [Object factory](https://github.com/nodejs/node-addon-examples/tree/main/src/1-getting-started/4_object_factory/node-addon-api)
- [Function factory](https://github.com/nodejs/node-addon-examples/tree/main/src/1-getting-started/5_function_factory/node-addon-api)
- [Wrapping C++ Object](https://github.com/nodejs/node-addon-examples/tree/main/src/1-getting-started/6_object_wrap/node-addon-api)
- [Factory of wrapped object](https://github.com/nodejs/node-addon-examples/tree/main/src/1-getting-started/7_factory_wrap/node-addon-api)
- [Passing wrapped object around](https://github.com/nodejs/node-addon-examples/tree/main/src/2-js-to-native-conversion/8_passing_wrapped/node-addon-api)

<a name="abi-stability-guideline"></a>

## ABI Stability Guideline

It is important to remember that *other* Node.js interfaces such as
`libuv` (included in a project via `#include <uv.h>`) are not ABI-stable across
Node.js major versions. Thus, an addon must use Node-API and/or `node-addon-api`
exclusively and build against a version of Node.js that includes an
implementation of Node-API (meaning an active LTS version of Node.js) in
order to benefit from ABI stability across Node.js major versions. Node.js
provides an [ABI stability guide][] containing a detailed explanation of ABI
stability in general, and the Node-API ABI stability guarantee in particular.

<a name="resources"></a>

## More resource and info about native Addons

There are three options for implementing addons: Node-API, nan, or direct
use of internal V8, libuv, and Node.js libraries. Unless there is a need for
direct access to functionality that is not exposed by Node-API as outlined
in [C/C++ addons](https://nodejs.org/dist/latest/docs/api/addons.html)
in Node.js core, use Node-API. Refer to
[C/C++ addons with Node-API](https://nodejs.org/dist/latest/docs/api/n-api.html)
for more information on Node-API.

- [C++ Addons](https://nodejs.org/dist/latest/docs/api/addons.html)
- [Node-API](https://nodejs.org/dist/latest/docs/api/n-api.html)
- [Node-API - Next Generation Node API for Native Modules](https://youtu.be/-Oniup60Afs)
- [How We Migrated Realm JavaScript From NAN to Node-API](https://developer.mongodb.com/article/realm-javascript-nan-to-n-api)

As node-addon-api's core mission is to expose the plain C Node-API as C++
wrappers, tools that facilitate n-api/node-addon-api providing more
convenient patterns for developing a Node.js add-on with n-api/node-addon-api
can be published to NPM as standalone packages. It is also recommended to tag
such packages with `node-addon-api` to provide more visibility to the community.

Quick links to NPM searches: [keywords:node-addon-api](https://www.npmjs.com/search?q=keywords%3Anode-addon-api).

<a name="other-bindings"></a>

## Other bindings

- [napi-rs](https://napi.rs) - (`Rust`)

[ABI stability guide]: https://nodejs.org/en/docs/guides/abi-stability/
