emnapi 0.38.2 → 0.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -101,13 +101,13 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_create_string_utf16(napi_env env,
101
101
  NAPI_EXTERN napi_status NAPI_CDECL napi_create_symbol(napi_env env,
102
102
  napi_value description,
103
103
  napi_value* result);
104
- #ifdef NAPI_EXPERIMENTAL
104
+ #if NAPI_VERSION >= 9
105
105
  NAPI_EXTERN napi_status NAPI_CDECL
106
106
  node_api_symbol_for(napi_env env,
107
107
  const char* utf8description,
108
108
  size_t length,
109
109
  napi_value* result);
110
- #endif // NAPI_EXPERIMENTAL
110
+ #endif // NAPI_VERSION >= 9
111
111
  NAPI_EXTERN napi_status NAPI_CDECL napi_create_function(napi_env env,
112
112
  const char* utf8name,
113
113
  size_t length,
@@ -126,10 +126,10 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_create_range_error(napi_env env,
126
126
  napi_value code,
127
127
  napi_value msg,
128
128
  napi_value* result);
129
- #ifdef NAPI_EXPERIMENTAL
129
+ #if NAPI_VERSION >= 9
130
130
  NAPI_EXTERN napi_status NAPI_CDECL node_api_create_syntax_error(
131
131
  napi_env env, napi_value code, napi_value msg, napi_value* result);
132
- #endif // NAPI_EXPERIMENTAL
132
+ #endif // NAPI_VERSION >= 9
133
133
 
134
134
  // Methods to get the native napi_value from Primitive type
135
135
  NAPI_EXTERN napi_status NAPI_CDECL napi_typeof(napi_env env,
@@ -384,11 +384,11 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_throw_type_error(napi_env env,
384
384
  NAPI_EXTERN napi_status NAPI_CDECL napi_throw_range_error(napi_env env,
385
385
  const char* code,
386
386
  const char* msg);
387
- #ifdef NAPI_EXPERIMENTAL
387
+ #if NAPI_VERSION >= 9
388
388
  NAPI_EXTERN napi_status NAPI_CDECL node_api_throw_syntax_error(napi_env env,
389
389
  const char* code,
390
390
  const char* msg);
391
- #endif // NAPI_EXPERIMENTAL
391
+ #endif // NAPI_VERSION >= 9
392
392
  NAPI_EXTERN napi_status NAPI_CDECL napi_is_error(napi_env env,
393
393
  napi_value value,
394
394
  bool* result);
@@ -99,7 +99,8 @@ typedef enum {
99
99
  napi_arraybuffer_expected,
100
100
  napi_detachable_arraybuffer_expected,
101
101
  napi_would_deadlock, // unused
102
- napi_no_external_buffers_allowed
102
+ napi_no_external_buffers_allowed,
103
+ napi_cannot_run_js,
103
104
  } napi_status;
104
105
  // Note: when adding a new enum value to `napi_status`, please also update
105
106
  // * `const int last_status` in the definition of `napi_get_last_error_info()'
@@ -40,6 +40,7 @@ struct uv_loop_s; // Forward declaration.
40
40
 
41
41
  typedef napi_value(NAPI_CDECL* napi_addon_register_func)(napi_env env,
42
42
  napi_value exports);
43
+ typedef int32_t(NAPI_CDECL* node_api_addon_get_api_version_func)();
43
44
 
44
45
  // Used by deprecated registration method napi_module_register.
45
46
  typedef struct napi_module {
@@ -72,11 +73,20 @@ typedef struct napi_module {
72
73
  #endif
73
74
  #endif
74
75
 
76
+ #define NODE_API_MODULE_GET_API_VERSION_BASE node_api_module_get_api_version_v
77
+
75
78
  #define NAPI_MODULE_INITIALIZER \
76
79
  NAPI_MODULE_INITIALIZER_X(NAPI_MODULE_INITIALIZER_BASE, NAPI_MODULE_VERSION)
77
80
 
81
+ #define NODE_API_MODULE_GET_API_VERSION \
82
+ NAPI_MODULE_INITIALIZER_X(NODE_API_MODULE_GET_API_VERSION_BASE, \
83
+ NAPI_MODULE_VERSION)
84
+
78
85
  #define NAPI_MODULE_INIT() \
79
86
  EXTERN_C_START \
87
+ NAPI_MODULE_EXPORT int32_t NODE_API_MODULE_GET_API_VERSION() { \
88
+ return NAPI_VERSION; \
89
+ } \
80
90
  NAPI_MODULE_EXPORT napi_value NAPI_MODULE_INITIALIZER(napi_env env, \
81
91
  napi_value exports); \
82
92
  EXTERN_C_END \
@@ -255,12 +265,12 @@ napi_remove_async_cleanup_hook(napi_async_cleanup_hook_handle remove_handle);
255
265
 
256
266
  #endif // NAPI_VERSION >= 8
257
267
 
258
- #ifdef NAPI_EXPERIMENTAL
268
+ #if NAPI_VERSION >= 9
259
269
 
260
270
  NAPI_EXTERN napi_status NAPI_CDECL
261
271
  node_api_get_module_file_name(napi_env env, const char** result);
262
272
 
263
- #endif // NAPI_EXPERIMENTAL
273
+ #endif // NAPI_VERSION >= 9
264
274
 
265
275
  EXTERN_C_END
266
276
 
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "emnapi",
3
- "version": "0.38.2",
3
+ "version": "0.39.0",
4
4
  "description": "Node-API implementation for Emscripten",
5
5
  "main": "index.js",
6
6
  "peerDependencies": {
package/src/async_work.c CHANGED
@@ -77,7 +77,7 @@ static napi_value async_work_after_cb(napi_env env, napi_callback_info info) {
77
77
  void* data = NULL;
78
78
  EMNAPI_ASSERT_CALL(napi_get_cb_info(env, info, NULL, NULL, NULL, &data));
79
79
  complete_wrap_t* wrap = (complete_wrap_t*) data;
80
- _emnapi_call_into_module(env, async_work_on_complete, wrap, 1);
80
+ _emnapi_callback_into_module(1, env, async_work_on_complete, wrap, 1);
81
81
  return NULL;
82
82
  }
83
83
 
@@ -103,7 +103,7 @@ static void async_work_after_thread_pool_work(napi_async_work work, int status)
103
103
  work->async_context_.trigger_async_id,
104
104
  NULL);
105
105
  } else {
106
- _emnapi_call_into_module(env, async_work_on_complete, wrap, 1);
106
+ _emnapi_callback_into_module(1, env, async_work_on_complete, wrap, 1);
107
107
  }
108
108
  EMNAPI_ASSERT_CALL(napi_close_handle_scope(env, scope));
109
109
  }
@@ -110,10 +110,11 @@ EMNAPI_INTERNAL_EXTERN void _emnapi_ctx_decrease_waiting_request_counter();
110
110
 
111
111
  typedef void (*_emnapi_call_into_module_callback)(napi_env env, void* args);
112
112
  EMNAPI_INTERNAL_EXTERN
113
- void _emnapi_call_into_module(napi_env env,
114
- _emnapi_call_into_module_callback callback,
115
- void* args,
116
- int close_scope_if_throw);
113
+ void _emnapi_callback_into_module(int force_uncaught,
114
+ napi_env env,
115
+ _emnapi_call_into_module_callback callback,
116
+ void* args,
117
+ int close_scope_if_throw);
117
118
 
118
119
  #endif
119
120
 
@@ -29,7 +29,8 @@ static const char* emnapi_error_messages[] = {
29
29
  "An arraybuffer was expected",
30
30
  "A detachable arraybuffer was expected",
31
31
  "Main thread would deadlock",
32
- "External buffers are not allowed"
32
+ "External buffers are not allowed",
33
+ "Cannot run JavaScript",
33
34
  };
34
35
 
35
36
  EMNAPI_INTERNAL_EXTERN void _emnapi_get_last_error_info(napi_env env,
@@ -43,9 +44,9 @@ napi_status napi_get_last_error_info(
43
44
  CHECK_ENV(env);
44
45
  CHECK_ARG(env, result);
45
46
 
46
- const int last_status = napi_no_external_buffers_allowed;
47
+ const int last_status = napi_cannot_run_js;
47
48
 
48
- static_assert((sizeof(emnapi_error_messages) / sizeof(const char*)) == napi_no_external_buffers_allowed + 1,
49
+ static_assert((sizeof(emnapi_error_messages) / sizeof(const char*)) == napi_cannot_run_js + 1,
49
50
  "Count of error messages must match count of error values");
50
51
 
51
52
  _emnapi_get_last_error_info(env,
@@ -96,11 +97,4 @@ napi_status napi_adjust_external_memory(napi_env env,
96
97
  return napi_clear_last_error(env);
97
98
  }
98
99
 
99
- napi_status napi_get_version(napi_env env, uint32_t* result) {
100
- CHECK_ENV(env);
101
- CHECK_ARG(env, result);
102
- *result = NAPI_VERSION;
103
- return napi_clear_last_error(env);
104
- }
105
-
106
100
  EXTERN_C_END
package/src/node_api.c CHANGED
@@ -42,7 +42,7 @@ napi_status napi_get_uv_event_loop(napi_env env,
42
42
  #endif
43
43
  }
44
44
 
45
- EMNAPI_INTERNAL_EXTERN int _emnapi_get_filename(char* buf, int len);
45
+ EMNAPI_INTERNAL_EXTERN int _emnapi_get_filename(napi_env env, char* buf, int len);
46
46
 
47
47
  napi_status node_api_get_module_file_name(napi_env env,
48
48
  const char** result) {
@@ -57,12 +57,12 @@ napi_status node_api_get_module_file_name(napi_env env,
57
57
  filename = NULL;
58
58
  }
59
59
 
60
- int len = _emnapi_get_filename(NULL, 0);
60
+ int len = _emnapi_get_filename(env, NULL, 0);
61
61
  if (len == 0) {
62
62
  *result = empty_string;
63
63
  } else {
64
64
  filename = (char*) malloc(len + 1);
65
- len = _emnapi_get_filename(filename, len + 1);
65
+ len = _emnapi_get_filename(env, filename, len + 1);
66
66
  *(filename + len) = '\0';
67
67
  *result = filename;
68
68
  }
@@ -11,7 +11,7 @@
11
11
 
12
12
  EXTERN_C_START
13
13
 
14
- EMNAPI_INTERNAL_EXTERN void _emnapi_call_finalizer(napi_env env, napi_finalize cb, void* data, void* hint);
14
+ EMNAPI_INTERNAL_EXTERN void _emnapi_call_finalizer(int force_uncaught, napi_env env, napi_finalize cb, void* data, void* hint);
15
15
 
16
16
  static const unsigned char kDispatchIdle = 0;
17
17
  static const unsigned char kDispatchRunning = 1 << 0;
@@ -205,7 +205,7 @@ static napi_value _emnapi_tsfn_finalize_in_callback_scope(napi_env env, napi_cal
205
205
  void* data = NULL;
206
206
  EMNAPI_ASSERT_CALL(napi_get_cb_info(env, info, NULL, NULL, NULL, &data));
207
207
  napi_threadsafe_function func = (napi_threadsafe_function) data;
208
- _emnapi_call_finalizer(func->env, func->finalize_cb, func->finalize_data, func->context);
208
+ _emnapi_call_finalizer(0, func->env, func->finalize_cb, func->finalize_data, func->context);
209
209
  return NULL;
210
210
  }
211
211
 
@@ -226,7 +226,7 @@ static void _emnapi_tsfn_finalize(napi_threadsafe_function func) {
226
226
  func->async_context_.trigger_async_id,
227
227
  NULL);
228
228
  } else {
229
- _emnapi_call_finalizer(func->env, func->finalize_cb, func->finalize_data, func->context);
229
+ _emnapi_call_finalizer(0, func->env, func->finalize_cb, func->finalize_data, func->context);
230
230
  }
231
231
  }
232
232
  _emnapi_tsfn_empty_queue_and_delete(func);
@@ -275,7 +275,7 @@ static void _emnapi_tsfn_call_js_cb(napi_env env, void* arg) {
275
275
  static napi_value _emnapi_tsfn_call_js_cb_in_callback_scope(napi_env env, napi_callback_info info) {
276
276
  void* data = NULL;
277
277
  EMNAPI_ASSERT_CALL(napi_get_cb_info(env, info, NULL, NULL, NULL, &data));
278
- _emnapi_call_into_module(env, _emnapi_tsfn_call_js_cb, data, 1);
278
+ _emnapi_callback_into_module(0, env, _emnapi_tsfn_call_js_cb, data, 1);
279
279
  return NULL;
280
280
  }
281
281
 
@@ -347,7 +347,7 @@ static bool _emnapi_tsfn_dispatch_one(napi_threadsafe_function func) {
347
347
  func->async_context_.trigger_async_id,
348
348
  NULL);
349
349
  } else {
350
- _emnapi_call_into_module(func->env, _emnapi_tsfn_call_js_cb, jscb_data, 1);
350
+ _emnapi_callback_into_module(0, func->env, _emnapi_tsfn_call_js_cb, jscb_data, 1);
351
351
  }
352
352
  EMNAPI_ASSERT_CALL(napi_close_handle_scope(func->env, scope));
353
353
  }