Home

Awesome

Node.js API (Node-API)

This repository is the home for ABI Stable Node API project Node-API which was previously known as N-API.

The goal of this project is to provide a stable Node API for native module developers. Node-API aims to provide ABI compatibility guarantees across different Node versions and also across different Node VMs - allowing Node-API enabled native modules to just work across different versions and flavors of Node.js without recompilations.

It is introduced by this Node enhancement proposal: 005-ABI-Stable-Module-API.md.

Node-API is part of Node.js core. Documentation is available here: https://nodejs.org/docs/latest/api/n-api.html.

Node.js versions 8.12.0 and above provide Node-API as a stable feature.

Branches

Currently this repo is being used only for meta issue management and future planning by the Node-API team.

API Design & Shape

The current shape of the API can be found in header file node_api.h. Full documentation is available as part of the standard Node.js API docs here: https://nodejs.org/docs/latest/api/n-api.html.

There is also a header-only C++ API, which simplifies development while still using the same ABI-stable Node API underneath. It is distributed as a separate npm package: https://www.npmjs.com/package/node-addon-api.

Node-API enabled modules

ModuleConverted ByLocationConversion StatusPerformance Assessment
leveldownn-api teamhttps://github.com/sampsongao/leveldown/tree/napiCompleted#55
nanomsgn-api teamhttps://github.com/sampsongao/node-nanomsg/tree/napiCompleted#57
canvasn-api teamhttps://github.com/jasongin/node-canvas/tree/napiCompleted#77
node-sassn-api teamhttps://github.com/boingoing/node-sass/tree/napiCompleted#82
iotivitygabrielschulhofhttps://github.com/gabrielschulhof/iotivity-node/tree/abi-stableCompletedN/A
node-sqlite3n-api teamhttps://github.com/mhdawson/node-sqlite3/tree/node-addon-apiCompleted

Testing

In addition to running the tests in the converted modules we also have a converted version of the NAN examples node-addon-examples

How to get involved

Badges

The use of badges is recommended to indicate the minimum version of Node-API required for the module. This helps to determine which Node.js major versions are supported. Addon maintainers can consult the Node-API support matrix to determine which Node.js versions provide a given Node-API version. The following badges are available:

Node-API v1 Badge Node-API v2 Badge Node-API v3 Badge Node-API v4 Badge Node-API v5 Badge Node-API v6 Badge Node-API v7 Badge Node-API v8 Badge Node-API v9 Badge Node-API Experimental Version Badge

Meeting

The team meets once a week on zoom. See the Node.js Calendar for the current time/day of the week. The link to participate to the meeting is: https://zoom.us/j/363665824 .

Project Participants

Active

NameGitHub Link
Chengzhong Wulegendecas
Gabriel Schulhofgabrielschulhof
Jack XiaJckXia
Kevin EadyKevinEady
Michael Dawsonmhdawson
Nicola Del GobboNickNaso
Vladimir Morozovvmoroz

Emeritus

NameGitHub Link
Anisha Rohraanisha-rohra
Arunesh Chandraaruneshchandra
Cory Mickelsoncorymickelson
Hitesh Kanwathirthadigitalinfinity
Ian Hallidayianwjhalliday
Jason Ginchereaujasongin
Jim Schlightjschlight
Kyle Farnungkfarnung
Sampson Gaosampsongao
Taylor Wollboingoing