Skip to content

Commit 44609d1

Browse files
kfarnungBethGriggs
authored andcommittedMar 19, 2019
n-api: restrict exports by version
* Move `napi_get_uv_event_loop` into the `NAPI_VERSION >= 2` section * Move `napi_open_callback_scope`, `napi_close_callback_scope`, `napi_fatal_exception`, `napi_add_env_cleanup_hook`, and `napi_remove_env_cleanup_hook` into the `NAPI_VERSION >= 3` section * Added a missing `added` property to `napi_get_uv_event_loop` in the docs * Added a `napiVersion` property to the docs and updated the parser and generator to use it. * Added usage documentation PR-URL: #19962 Backport-PR-URL: #25648 Reviewed-By: Gabriel Schulhof <gabriel.schulhof@intel.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
1 parent b4c5435 commit 44609d1

File tree

4 files changed

+204
-17
lines changed

4 files changed

+204
-17
lines changed
 

‎doc/api/n-api.md

+158
Large diffs are not rendered by default.

‎src/node_api.h

+38-17
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@
77

88
struct uv_loop_s; // Forward declaration.
99

10+
#ifndef NAPI_VERSION
11+
#ifdef NAPI_EXPERIMENTAL
12+
// Use INT_MAX, this should only be consumed by the pre-processor anyway.
13+
#define NAPI_VERSION 2147483647
14+
#else
15+
// The baseline version for N-API
16+
#define NAPI_VERSION 3
17+
#endif
18+
#endif
19+
1020
#ifdef _WIN32
1121
#ifdef BUILDING_NODE_EXTENSION
1222
#ifdef EXTERNAL_NAPI
@@ -99,19 +109,10 @@ EXTERN_C_START
99109

100110
NAPI_EXTERN void napi_module_register(napi_module* mod);
101111

102-
NAPI_EXTERN napi_status napi_add_env_cleanup_hook(napi_env env,
103-
void (*fun)(void* arg),
104-
void* arg);
105-
NAPI_EXTERN napi_status napi_remove_env_cleanup_hook(napi_env env,
106-
void (*fun)(void* arg),
107-
void* arg);
108-
109112
NAPI_EXTERN napi_status
110113
napi_get_last_error_info(napi_env env,
111114
const napi_extended_error_info** result);
112115

113-
NAPI_EXTERN napi_status napi_fatal_exception(napi_env env, napi_value err);
114-
115116
NAPI_EXTERN NAPI_NO_RETURN void napi_fatal_error(const char* location,
116117
size_t location_len,
117118
const char* message,
@@ -424,14 +425,6 @@ NAPI_EXTERN napi_status napi_escape_handle(napi_env env,
424425
napi_value escapee,
425426
napi_value* result);
426427

427-
NAPI_EXTERN napi_status napi_open_callback_scope(napi_env env,
428-
napi_value resource_object,
429-
napi_async_context context,
430-
napi_callback_scope* result);
431-
432-
NAPI_EXTERN napi_status napi_close_callback_scope(napi_env env,
433-
napi_callback_scope scope);
434-
435428
// Methods to support error handling
436429
NAPI_EXTERN napi_status napi_throw(napi_env env, napi_value error);
437430
NAPI_EXTERN napi_status napi_throw_error(napi_env env,
@@ -591,11 +584,38 @@ NAPI_EXTERN napi_status napi_run_script(napi_env env,
591584
napi_value script,
592585
napi_value* result);
593586

587+
#if NAPI_VERSION >= 2
588+
594589
// Return the current libuv event loop for a given environment
595590
NAPI_EXTERN napi_status napi_get_uv_event_loop(napi_env env,
596591
struct uv_loop_s** loop);
597592

593+
#endif // NAPI_VERSION >= 2
594+
595+
#if NAPI_VERSION >= 3
596+
597+
NAPI_EXTERN napi_status napi_open_callback_scope(napi_env env,
598+
napi_value resource_object,
599+
napi_async_context context,
600+
napi_callback_scope* result);
601+
602+
NAPI_EXTERN napi_status napi_close_callback_scope(napi_env env,
603+
napi_callback_scope scope);
604+
605+
NAPI_EXTERN napi_status napi_fatal_exception(napi_env env, napi_value err);
606+
607+
NAPI_EXTERN napi_status napi_add_env_cleanup_hook(napi_env env,
608+
void (*fun)(void* arg),
609+
void* arg);
610+
611+
NAPI_EXTERN napi_status napi_remove_env_cleanup_hook(napi_env env,
612+
void (*fun)(void* arg),
613+
void* arg);
614+
615+
#endif // NAPI_VERSION >= 3
616+
598617
#ifdef NAPI_EXPERIMENTAL
618+
599619
// Calling into JS from other threads
600620
NAPI_EXTERN napi_status
601621
napi_create_threadsafe_function(napi_env env,
@@ -633,6 +653,7 @@ NAPI_EXTERN napi_status
633653
napi_ref_threadsafe_function(napi_env env, napi_threadsafe_function func);
634654

635655
#endif // NAPI_EXPERIMENTAL
656+
636657
EXTERN_C_END
637658

638659
#endif // SRC_NODE_API_H_

‎tools/doc/common.js

+4
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ function extractAndParseYAML(text) {
2424
meta.added = arrify(meta.added);
2525
}
2626

27+
if (meta.napiVersion) {
28+
meta.napiVersion = arrify(meta.napiVersion);
29+
}
30+
2731
if (meta.deprecated) {
2832
// Treat deprecated like added for consistency.
2933
meta.deprecated = arrify(meta.deprecated);

‎tools/doc/html.js

+4
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,10 @@ function parseYAML(text) {
365365
html.push(`${added.description}${deprecated.description}`);
366366
}
367367

368+
if (meta.napiVersion) {
369+
html.push(`<span>N-API version: ${meta.napiVersion.join(', ')}</span>\n`);
370+
}
371+
368372
html.push('</div>');
369373
return html.join('\n');
370374
}

0 commit comments

Comments
 (0)
Please sign in to comment.