8
8
// Use INT_MAX, this should only be consumed by the pre-processor anyway.
9
9
#define NAPI_VERSION_EXPERIMENTAL 2147483647
10
10
#ifndef NAPI_VERSION
11
+ #ifdef NAPI_EXPERIMENTAL
12
+ #define NAPI_VERSION NAPI_VERSION_EXPERIMENTAL
13
+ #else
11
14
// The baseline version for N-API.
12
15
// The NAPI_VERSION controls which version will be used by default when
13
- // compilling a native addon. If the addon developer specifically wants to use
16
+ // compiling a native addon. If the addon developer specifically wants to use
14
17
// functions available in a new version of N-API that is not yet ported in all
15
18
// LTS versions, they can set NAPI_VERSION knowing that they have specifically
16
19
// depended on that version.
17
20
#define NAPI_VERSION 8
18
21
#endif
22
+ #endif
19
23
20
24
#include "js_native_api_types.h"
21
25
24
28
#ifndef NAPI_EXTERN
25
29
#ifdef _WIN32
26
30
#define NAPI_EXTERN __declspec(dllexport)
27
- #elif defined(__wasm32__ )
31
+ #elif defined(__wasm__ )
28
32
#define NAPI_EXTERN \
29
33
__attribute__((visibility("default"))) \
30
34
__attribute__((__import_module__("napi")))
45
49
46
50
EXTERN_C_START
47
51
48
- NAPI_EXTERN napi_status NAPI_CDECL
49
- napi_get_last_error_info ( napi_env env , const napi_extended_error_info * * result );
52
+ NAPI_EXTERN napi_status NAPI_CDECL napi_get_last_error_info (
53
+ node_api_nogc_env env , const napi_extended_error_info * * result );
50
54
51
55
// Getters for defined singletons
52
56
NAPI_EXTERN napi_status NAPI_CDECL napi_get_undefined (napi_env env ,
@@ -88,9 +92,42 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_create_string_utf16(napi_env env,
88
92
const char16_t * str ,
89
93
size_t length ,
90
94
napi_value * result );
95
+ #ifdef NAPI_EXPERIMENTAL
96
+ #define NODE_API_EXPERIMENTAL_HAS_EXTERNAL_STRINGS
97
+ NAPI_EXTERN napi_status NAPI_CDECL
98
+ node_api_create_external_string_latin1 (napi_env env ,
99
+ char * str ,
100
+ size_t length ,
101
+ node_api_nogc_finalize finalize_callback ,
102
+ void * finalize_hint ,
103
+ napi_value * result ,
104
+ bool * copied );
105
+ NAPI_EXTERN napi_status NAPI_CDECL
106
+ node_api_create_external_string_utf16 (napi_env env ,
107
+ char16_t * str ,
108
+ size_t length ,
109
+ node_api_nogc_finalize finalize_callback ,
110
+ void * finalize_hint ,
111
+ napi_value * result ,
112
+ bool * copied );
113
+ #endif // NAPI_EXPERIMENTAL
114
+
115
+ #ifdef NAPI_EXPERIMENTAL
116
+ #define NODE_API_EXPERIMENTAL_HAS_PROPERTY_KEYS
117
+ NAPI_EXTERN napi_status NAPI_CDECL node_api_create_property_key_utf16 (
118
+ napi_env env , const char16_t * str , size_t length , napi_value * result );
119
+ #endif // NAPI_EXPERIMENTAL
120
+
91
121
NAPI_EXTERN napi_status NAPI_CDECL napi_create_symbol (napi_env env ,
92
122
napi_value description ,
93
123
napi_value * result );
124
+ #if NAPI_VERSION >= 9
125
+ NAPI_EXTERN napi_status NAPI_CDECL
126
+ node_api_symbol_for (napi_env env ,
127
+ const char * utf8description ,
128
+ size_t length ,
129
+ napi_value * result );
130
+ #endif // NAPI_VERSION >= 9
94
131
NAPI_EXTERN napi_status NAPI_CDECL napi_create_function (napi_env env ,
95
132
const char * utf8name ,
96
133
size_t length ,
@@ -109,6 +146,10 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_create_range_error(napi_env env,
109
146
napi_value code ,
110
147
napi_value msg ,
111
148
napi_value * result );
149
+ #if NAPI_VERSION >= 9
150
+ NAPI_EXTERN napi_status NAPI_CDECL node_api_create_syntax_error (
151
+ napi_env env , napi_value code , napi_value msg , napi_value * result );
152
+ #endif // NAPI_VERSION >= 9
112
153
113
154
// Methods to get the native napi_value from Primitive type
114
155
NAPI_EXTERN napi_status NAPI_CDECL napi_typeof (napi_env env ,
@@ -256,7 +297,7 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_instanceof(napi_env env,
256
297
257
298
// Gets all callback info in a single call. (Ugly, but faster.)
258
299
NAPI_EXTERN napi_status NAPI_CDECL napi_get_cb_info (
259
- napi_env env , // [in] NAPI environment handle
300
+ napi_env env , // [in] Node-API environment handle
260
301
napi_callback_info cbinfo , // [in] Opaque callback-info handle
261
302
size_t * argc , // [in-out] Specifies the size of the provided argv array
262
303
// and receives the actual count of args.
@@ -280,7 +321,7 @@ napi_define_class(napi_env env,
280
321
NAPI_EXTERN napi_status NAPI_CDECL napi_wrap (napi_env env ,
281
322
napi_value js_object ,
282
323
void * native_object ,
283
- napi_finalize finalize_cb ,
324
+ node_api_nogc_finalize finalize_cb ,
284
325
void * finalize_hint ,
285
326
napi_ref * result );
286
327
NAPI_EXTERN napi_status NAPI_CDECL napi_unwrap (napi_env env ,
@@ -292,7 +333,7 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_remove_wrap(napi_env env,
292
333
NAPI_EXTERN napi_status NAPI_CDECL
293
334
napi_create_external (napi_env env ,
294
335
void * data ,
295
- napi_finalize finalize_cb ,
336
+ node_api_nogc_finalize finalize_cb ,
296
337
void * finalize_hint ,
297
338
napi_value * result );
298
339
NAPI_EXTERN napi_status NAPI_CDECL napi_get_value_external (napi_env env ,
@@ -363,6 +404,11 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_throw_type_error(napi_env env,
363
404
NAPI_EXTERN napi_status NAPI_CDECL napi_throw_range_error (napi_env env ,
364
405
const char * code ,
365
406
const char * msg );
407
+ #if NAPI_VERSION >= 9
408
+ NAPI_EXTERN napi_status NAPI_CDECL node_api_throw_syntax_error (napi_env env ,
409
+ const char * code ,
410
+ const char * msg );
411
+ #endif // NAPI_VERSION >= 9
366
412
NAPI_EXTERN napi_status NAPI_CDECL napi_is_error (napi_env env ,
367
413
napi_value value ,
368
414
bool * result );
@@ -386,7 +432,7 @@ NAPI_EXTERN napi_status NAPI_CDECL
386
432
napi_create_external_arraybuffer (napi_env env ,
387
433
void * external_data ,
388
434
size_t byte_length ,
389
- napi_finalize finalize_cb ,
435
+ node_api_nogc_finalize finalize_cb ,
390
436
void * finalize_hint ,
391
437
napi_value * result );
392
438
#endif // NODE_API_NO_EXTERNAL_BUFFERS_ALLOWED
@@ -428,7 +474,7 @@ napi_get_dataview_info(napi_env env,
428
474
size_t * byte_offset );
429
475
430
476
// version management
431
- NAPI_EXTERN napi_status NAPI_CDECL napi_get_version (napi_env env ,
477
+ NAPI_EXTERN napi_status NAPI_CDECL napi_get_version (node_api_nogc_env env ,
432
478
uint32_t * result );
433
479
434
480
// Promises
@@ -452,7 +498,7 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_run_script(napi_env env,
452
498
453
499
// Memory management
454
500
NAPI_EXTERN napi_status NAPI_CDECL napi_adjust_external_memory (
455
- napi_env env , int64_t change_in_bytes , int64_t * adjusted_value );
501
+ node_api_nogc_env env , int64_t change_in_bytes , int64_t * adjusted_value );
456
502
457
503
#if NAPI_VERSION >= 5
458
504
@@ -470,15 +516,27 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_get_date_value(napi_env env,
470
516
double * result );
471
517
472
518
// Add finalizer for pointer
473
- NAPI_EXTERN napi_status NAPI_CDECL napi_add_finalizer (napi_env env ,
474
- napi_value js_object ,
475
- void * finalize_data ,
476
- napi_finalize finalize_cb ,
477
- void * finalize_hint ,
478
- napi_ref * result );
519
+ NAPI_EXTERN napi_status NAPI_CDECL
520
+ napi_add_finalizer (napi_env env ,
521
+ napi_value js_object ,
522
+ void * finalize_data ,
523
+ node_api_nogc_finalize finalize_cb ,
524
+ void * finalize_hint ,
525
+ napi_ref * result );
479
526
480
527
#endif // NAPI_VERSION >= 5
481
528
529
+ #ifdef NAPI_EXPERIMENTAL
530
+ #define NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER
531
+
532
+ NAPI_EXTERN napi_status NAPI_CDECL
533
+ node_api_post_finalizer (node_api_nogc_env env ,
534
+ napi_finalize finalize_cb ,
535
+ void * finalize_data ,
536
+ void * finalize_hint );
537
+
538
+ #endif // NAPI_EXPERIMENTAL
539
+
482
540
#if NAPI_VERSION >= 6
483
541
484
542
// BigInt
@@ -516,10 +574,13 @@ napi_get_all_property_names(napi_env env,
516
574
napi_value * result );
517
575
518
576
// Instance data
519
- NAPI_EXTERN napi_status NAPI_CDECL napi_set_instance_data (
520
- napi_env env , void * data , napi_finalize finalize_cb , void * finalize_hint );
577
+ NAPI_EXTERN napi_status NAPI_CDECL
578
+ napi_set_instance_data (node_api_nogc_env env ,
579
+ void * data ,
580
+ napi_finalize finalize_cb ,
581
+ void * finalize_hint );
521
582
522
- NAPI_EXTERN napi_status NAPI_CDECL napi_get_instance_data (napi_env env ,
583
+ NAPI_EXTERN napi_status NAPI_CDECL napi_get_instance_data (node_api_nogc_env env ,
523
584
void * * data );
524
585
#endif // NAPI_VERSION >= 6
525
586
@@ -550,4 +611,4 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_object_seal(napi_env env,
550
611
551
612
EXTERN_C_END
552
613
553
- #endif // SRC_JS_NATIVE_API_H_
614
+ #endif // SRC_JS_NATIVE_API_H_
0 commit comments