emnapi 0.43.1 → 0.44.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.
package/CMakeLists.txt CHANGED
@@ -29,7 +29,6 @@ set(UV_SRC
29
29
  set(ENAPI_BASIC_SRC
30
30
  "${CMAKE_CURRENT_SOURCE_DIR}/src/js_native_api.c"
31
31
  "${CMAKE_CURRENT_SOURCE_DIR}/src/node_api.c"
32
- "${CMAKE_CURRENT_SOURCE_DIR}/src/emnapi.c"
33
32
  "${CMAKE_CURRENT_SOURCE_DIR}/src/async_cleanup_hook.c"
34
33
  "${CMAKE_CURRENT_SOURCE_DIR}/src/async_context.c"
35
34
  )
@@ -40,11 +39,16 @@ set(EMNAPI_THREADS_SRC
40
39
  set(EMNAPI_SRC ${ENAPI_BASIC_SRC} ${EMNAPI_THREADS_SRC})
41
40
 
42
41
  set(EMNAPI_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/include")
42
+ set(EMNAPI_DEFINES "BUILDING_NODE_EXTENSION")
43
43
 
44
44
  set(EMNAPI_JS_LIB "${CMAKE_CURRENT_SOURCE_DIR}/dist/library_napi.js")
45
45
 
46
46
  if(IS_EMSCRIPTEN)
47
47
  set(EMNAPI_MT_CFLAGS "-pthread" "-sWASM_WORKERS=1")
48
+
49
+ # https://github.com/emscripten-core/emscripten/issues/20035
50
+ # https://github.com/emscripten-core/emscripten/pull/20130
51
+ list(APPEND EMNAPI_DEFINES "NAPI_EXTERN=__attribute__((__import_module__(\"env\")))")
48
52
  else()
49
53
  set(EMNAPI_MT_CFLAGS "-pthread")
50
54
  endif()
@@ -115,12 +119,14 @@ endif()
115
119
 
116
120
  add_library(${EMNAPI_TARGET_NAME} STATIC ${EMNAPI_SRC} ${UV_SRC})
117
121
  target_include_directories(${EMNAPI_TARGET_NAME} PUBLIC ${EMNAPI_INCLUDE})
122
+ target_compile_definitions(${EMNAPI_TARGET_NAME} PUBLIC ${EMNAPI_DEFINES})
118
123
  if(IS_EMSCRIPTEN)
119
124
  target_link_options(${EMNAPI_TARGET_NAME} INTERFACE "--js-library=${EMNAPI_JS_LIB}")
120
125
  endif()
121
126
 
122
127
  add_library(${EMNAPI_BASIC_TARGET_NAME} STATIC ${ENAPI_BASIC_SRC})
123
128
  target_include_directories(${EMNAPI_BASIC_TARGET_NAME} PUBLIC ${EMNAPI_INCLUDE})
129
+ target_compile_definitions(${EMNAPI_BASIC_TARGET_NAME} PUBLIC ${EMNAPI_DEFINES})
124
130
  if(IS_EMSCRIPTEN)
125
131
  target_link_options(${EMNAPI_BASIC_TARGET_NAME} INTERFACE "--js-library=${EMNAPI_JS_LIB}")
126
132
  endif()
@@ -139,6 +145,7 @@ if(EMNAPI_BUILD_BASIC_MT)
139
145
  )
140
146
  target_compile_options(${EMNAPI_BASIC_MT_TARGET_NAME} PUBLIC "-matomics" "-mbulk-memory")
141
147
  target_include_directories(${EMNAPI_BASIC_MT_TARGET_NAME} PUBLIC ${EMNAPI_INCLUDE})
148
+ target_compile_definitions(${EMNAPI_BASIC_MT_TARGET_NAME} PUBLIC ${EMNAPI_DEFINES})
142
149
  endif()
143
150
 
144
151
  if(IS_EMSCRIPTEN OR (CMAKE_C_COMPILER_TARGET STREQUAL "wasm32-wasi-threads"))
@@ -151,6 +158,7 @@ if(EMNAPI_BUILD_MT)
151
158
  add_library(${EMNAPI_MT_TARGET_NAME} STATIC ${EMNAPI_SRC} ${UV_SRC})
152
159
  target_compile_options(${EMNAPI_MT_TARGET_NAME} PRIVATE ${EMNAPI_MT_CFLAGS})
153
160
  target_include_directories(${EMNAPI_MT_TARGET_NAME} PUBLIC ${EMNAPI_INCLUDE})
161
+ target_compile_definitions(${EMNAPI_MT_TARGET_NAME} PUBLIC ${EMNAPI_DEFINES})
154
162
  if(IS_EMSCRIPTEN)
155
163
  target_link_options(${EMNAPI_MT_TARGET_NAME} INTERFACE "--js-library=${EMNAPI_JS_LIB}")
156
164
  endif()
package/README.md CHANGED
@@ -165,6 +165,8 @@ module.exports = (function (exports) {
165
165
 
166
166
  ```bash
167
167
  emcc -O3 \
168
+ -DBUILDING_NODE_EXTENSION \
169
+ "-DNAPI_EXTERN=__attribute__((__import_module__(\"env\")))" \
168
170
  -I./node_modules/emnapi/include \
169
171
  -L./node_modules/emnapi/lib/wasm32-emscripten \
170
172
  --js-library=./node_modules/emnapi/dist/library_napi.js \
@@ -181,6 +183,7 @@ emcc -O3 \
181
183
 
182
184
  ```bash
183
185
  clang -O3 \
186
+ -DBUILDING_NODE_EXTENSION \
184
187
  -I./node_modules/emnapi/include \
185
188
  -L./node_modules/emnapi/lib/wasm32-wasi \
186
189
  --target=wasm32-wasi \
@@ -208,6 +211,7 @@ Choose `libdlmalloc.a` or `libemmalloc.a` for `malloc` and `free`.
208
211
 
209
212
  ```bash
210
213
  clang -O3 \
214
+ -DBUILDING_NODE_EXTENSION \
211
215
  -I./node_modules/emnapi/include \
212
216
  -L./node_modules/emnapi/lib/wasm32 \
213
217
  --target=wasm32 \
@@ -448,6 +452,8 @@ Compile `hello.cpp` using `em++`. C++ exception is disabled by Emscripten defaul
448
452
 
449
453
  ```bash
450
454
  em++ -O3 \
455
+ -DBUILDING_NODE_EXTENSION \
456
+ "-DNAPI_EXTERN=__attribute__((__import_module__(\"env\")))" \
451
457
  -DNAPI_DISABLE_CPP_EXCEPTIONS \
452
458
  -DNODE_ADDON_API_ENABLE_MAYBE \
453
459
  -I./node_modules/emnapi/include \
@@ -467,6 +473,7 @@ em++ -O3 \
467
473
 
468
474
  ```bash
469
475
  clang++ -O3 \
476
+ -DBUILDING_NODE_EXTENSION \
470
477
  -DNAPI_DISABLE_CPP_EXCEPTIONS \
471
478
  -DNODE_ADDON_API_ENABLE_MAYBE \
472
479
  -I./node_modules/emnapi/include \
@@ -500,6 +507,7 @@ You can still use `wasm32-unknown-unknown` target if you use Node-API C API only
500
507
 
501
508
  ```bash
502
509
  clang++ -O3 \
510
+ -DBUILDING_NODE_EXTENSION \
503
511
  -I./node_modules/emnapi/include \
504
512
  -L./node_modules/emnapi/lib/wasm32 \
505
513
  --target=wasm32 \
@@ -407,6 +407,28 @@ function emnapi_get_memory_address(env, arraybuffer_or_view, address, ownership,
407
407
  return envObject.setLastError(10 /* napi_status.napi_pending_exception */);
408
408
  }
409
409
  }
410
+ function emnapi_get_runtime_version(env, version) {
411
+ if (!env)
412
+ return 1 /* napi_status.napi_invalid_arg */;
413
+ var envObject = emnapiCtx.envStore.get(env);
414
+ if (!version)
415
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
416
+ var runtimeVersion;
417
+ try {
418
+ runtimeVersion = emnapiCtx.getRuntimeVersions().version;
419
+ }
420
+ catch (_) {
421
+ return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
422
+ }
423
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
424
+ var versions = runtimeVersion.split('.')
425
+ .map(function (n) { return Number(n); });
426
+ {{{ from64('version') }}};
427
+ {{{ makeSetValue('version', 0, 'versions[0]', 'u32') }}};
428
+ {{{ makeSetValue('version', 4, 'versions[1]', 'u32') }}};
429
+ {{{ makeSetValue('version', 8, 'versions[2]', 'u32') }}};
430
+ return envObject.clearLastError();
431
+ }
410
432
  emnapiImplementHelper('$emnapiSyncMemory', undefined, emnapiSyncMemory, ['$emnapiExternalMemory'], 'syncMemory');
411
433
  emnapiImplementHelper('$emnapiGetMemoryAddress', undefined, emnapiGetMemoryAddress, ['$emnapiExternalMemory'], 'getMemoryAddress');
412
434
  emnapiImplement2('emnapi_is_support_weakref', 'i', emnapi_is_support_weakref);
@@ -415,6 +437,7 @@ emnapiImplement2('emnapi_is_node_binding_available', 'i', emnapi_is_node_binding
415
437
  emnapiImplement2('emnapi_create_memory_view', 'ipippppp', _emnapi_create_memory_view, ['napi_add_finalizer', '$emnapiExternalMemory']);
416
438
  emnapiImplement2('emnapi_sync_memory', 'ipippp', emnapi_sync_memory, ['$emnapiSyncMemory']);
417
439
  emnapiImplement2('emnapi_get_memory_address', 'ipppp', emnapi_get_memory_address, ['$emnapiGetMemoryAddress']);
440
+ emnapiImplement2('emnapi_get_runtime_version', 'ipp', emnapi_get_runtime_version);
418
441
  function napi_set_instance_data(env, data, finalize_cb, finalize_hint) {
419
442
  if (!env)
420
443
  return 1 /* napi_status.napi_invalid_arg */;
@@ -4977,6 +5000,16 @@ function napi_get_value_int32(env, value, result) {
4977
5000
  {{{ makeSetValue('result', 0, 'handle.value', 'i32') }}};
4978
5001
  return envObject.clearLastError();
4979
5002
  }
5003
+ function emnapiSetValueI64(result, numberValue) {
5004
+ var tempDouble;
5005
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
5006
+ var tempI64 = [
5007
+ numberValue >>> 0,
5008
+ (tempDouble = numberValue, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)
5009
+ ];
5010
+ {{{ makeSetValue('result', 0, 'tempI64[0]', 'i32') }}};
5011
+ {{{ makeSetValue('result', 4, 'tempI64[1]', 'i32') }}};
5012
+ }
4980
5013
  function napi_get_value_int64(env, value, result) {
4981
5014
  if (!env)
4982
5015
  return 1 /* napi_status.napi_invalid_arg */;
@@ -4992,7 +5025,6 @@ function napi_get_value_int64(env, value, result) {
4992
5025
  }
4993
5026
  var numberValue = handle.value;
4994
5027
  {{{ from64('result') }}};
4995
- var tempI64;
4996
5028
  if (numberValue === Number.POSITIVE_INFINITY || numberValue === Number.NEGATIVE_INFINITY || isNaN(numberValue)) {
4997
5029
  {{{ makeSetValue('result', 0, '0', 'i32') }}};
4998
5030
  {{{ makeSetValue('result', 4, '0', 'i32') }}};
@@ -5006,13 +5038,7 @@ function napi_get_value_int64(env, value, result) {
5006
5038
  {{{ makeSetValue('result', 4, '0x7fffffff', 'u32') }}};
5007
5039
  }
5008
5040
  else {
5009
- var tempDouble
5010
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5011
- = void 0;
5012
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5013
- tempI64 = [numberValue >>> 0, (tempDouble = numberValue, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)];
5014
- {{{ makeSetValue('result', 0, 'tempI64[0]', 'i32') }}};
5015
- {{{ makeSetValue('result', 4, 'tempI64[1]', 'i32') }}};
5041
+ emnapiSetValueI64(result, numberValue);
5016
5042
  }
5017
5043
  return envObject.clearLastError();
5018
5044
  }
@@ -5139,6 +5165,7 @@ function napi_get_value_uint32(env, value, result) {
5139
5165
  {{{ makeSetValue('result', 0, 'handle.value', 'u32') }}};
5140
5166
  return envObject.clearLastError();
5141
5167
  }
5168
+ emnapiImplementHelper('$emnapiSetValueI64', undefined, emnapiSetValueI64, undefined);
5142
5169
  emnapiImplement('napi_get_array_length', 'ippp', napi_get_array_length);
5143
5170
  emnapiImplement('napi_get_arraybuffer_info', 'ipppp', napi_get_arraybuffer_info, ['$emnapiExternalMemory']);
5144
5171
  emnapiImplement('napi_get_prototype', 'ippp', napi_get_prototype);
@@ -5153,7 +5180,7 @@ emnapiImplement('napi_get_value_bigint_uint64', 'ipppp', napi_get_value_bigint_u
5153
5180
  emnapiImplement('napi_get_value_bigint_words', 'ippppp', napi_get_value_bigint_words);
5154
5181
  emnapiImplement('napi_get_value_external', 'ippp', napi_get_value_external);
5155
5182
  emnapiImplement('napi_get_value_int32', 'ippp', napi_get_value_int32);
5156
- emnapiImplement('napi_get_value_int64', 'ippp', napi_get_value_int64);
5183
+ emnapiImplement('napi_get_value_int64', 'ippp', napi_get_value_int64, ['$emnapiSetValueI64']);
5157
5184
  emnapiImplement('napi_get_value_string_latin1', 'ippppp', napi_get_value_string_latin1);
5158
5185
  emnapiImplement('napi_get_value_string_utf8', 'ippppp', napi_get_value_string_utf8, ['$emnapiString']);
5159
5186
  emnapiImplement('napi_get_value_string_utf16', 'ippppp', napi_get_value_string_utf16, ['$emnapiString']);
@@ -6224,6 +6251,50 @@ function __emnapi_async_work_pool_size() {
6224
6251
  return Math.abs(emnapiAsyncWorkPoolSize);
6225
6252
  }
6226
6253
  emnapiImplementInternal('_emnapi_async_work_pool_size', 'i', __emnapi_async_work_pool_size, ['$emnapiAsyncWorkPoolSize']);
6254
+ function _napi_adjust_external_memory(env, low, high, adjusted_value) {
6255
+ if (!env)
6256
+ return 1 /* napi_status.napi_invalid_arg */;
6257
+ var envObject = emnapiCtx.envStore.get(env);
6258
+ var change_in_bytes;
6259
+ #if WASM_BIGINT
6260
+ if (!high)
6261
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6262
+ change_in_bytes = Number(low);
6263
+ #else
6264
+ if (!adjusted_value)
6265
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6266
+ change_in_bytes = (low >>> 0) + (high * Math.pow(2, 32));
6267
+ #endif
6268
+ if (change_in_bytes < 0) {
6269
+ return envObject.setLastError(1 /* napi_status.napi_invalid_arg */);
6270
+ }
6271
+ if (change_in_bytes > 0) {
6272
+ var old_size = wasmMemory.buffer.byteLength;
6273
+ var new_size = old_size + change_in_bytes;
6274
+ if (!_emscripten_resize_heap(new_size)) {
6275
+ return envObject.setLastError(9 /* napi_status.napi_generic_failure */);
6276
+ }
6277
+ }
6278
+ #if WASM_BIGINT
6279
+ {{{ from64('high') }}};
6280
+ if (emnapiCtx.feature.supportBigInt) {
6281
+ {{{ makeSetValue('high', 0, 'wasmMemory.buffer.byteLength', 'i64') }}};
6282
+ }
6283
+ else {
6284
+ emnapiSetValueI64(high, wasmMemory.buffer.byteLength);
6285
+ }
6286
+ #else
6287
+ {{{ from64('adjusted_value') }}};
6288
+ {{{ makeSetValue('adjusted_value', 0, 'wasmMemory.buffer.byteLength', 'i64') }}};
6289
+ #endif
6290
+ return envObject.clearLastError();
6291
+ }
6292
+ emnapiImplement('napi_adjust_external_memory', 'ipjp', _napi_adjust_external_memory, [
6293
+ #if WASM_BIGINT
6294
+ '$emnapiSetValueI64',
6295
+ #endif
6296
+ 'emscripten_resize_heap'
6297
+ ]);
6227
6298
  /* eslint-disable @typescript-eslint/no-unused-vars */
6228
6299
  function emnapiImplement(name, sig, compilerTimeFunction, deps) {
6229
6300
  var _a;
package/include/emnapi.h CHANGED
@@ -5,6 +5,10 @@
5
5
  #include "js_native_api_types.h"
6
6
  #include "emnapi_common.h"
7
7
 
8
+ #define EMNAPI_MAJOR_VERSION 0
9
+ #define EMNAPI_MINOR_VERSION 44
10
+ #define EMNAPI_PATCH_VERSION 0
11
+
8
12
  typedef enum {
9
13
  emnapi_runtime,
10
14
  emnapi_userland,
@@ -41,17 +45,17 @@ EMNAPI_EXTERN
41
45
  napi_status emnapi_get_module_property(napi_env env,
42
46
  const char* utf8name,
43
47
  napi_value* result);
48
+ #endif
44
49
 
45
50
  typedef struct {
46
51
  uint32_t major;
47
52
  uint32_t minor;
48
53
  uint32_t patch;
49
- } emnapi_emscripten_version;
54
+ } emnapi_runtime_version;
50
55
 
51
56
  EMNAPI_EXTERN
52
- napi_status emnapi_get_emscripten_version(napi_env env,
53
- const emnapi_emscripten_version** version);
54
- #endif
57
+ napi_status emnapi_get_runtime_version(napi_env env,
58
+ emnapi_runtime_version* version);
55
59
 
56
60
  EMNAPI_EXTERN
57
61
  napi_status emnapi_create_memory_view(napi_env env,
@@ -2,23 +2,29 @@
2
2
  #define EMNAPI_INCLUDE_COMMON_H_
3
3
 
4
4
  #ifdef __EMSCRIPTEN__
5
- #define NAPI_EXTERN __attribute__((__import_module__("env")))
6
-
7
5
  #define EMNAPI_EXTERN __attribute__((__import_module__("env")))
8
6
  #else
9
- #define NAPI_EXTERN __attribute__((__import_module__("napi")))
10
-
11
7
  #define EMNAPI_EXTERN __attribute__((__import_module__("emnapi")))
12
8
  #endif
13
9
 
14
10
  #define EMNAPI_INTERNAL_EXTERN __attribute__((__import_module__("env")))
15
11
 
16
12
  #ifdef __cplusplus
13
+ #ifndef EXTERN_C_START
17
14
  #define EXTERN_C_START extern "C" {
15
+ #endif
16
+
17
+ #ifndef EXTERN_C_END
18
18
  #define EXTERN_C_END }
19
+ #endif
19
20
  #else
21
+ #ifndef EXTERN_C_START
20
22
  #define EXTERN_C_START
23
+ #endif
24
+
25
+ #ifndef EXTERN_C_END
21
26
  #define EXTERN_C_END
22
27
  #endif
28
+ #endif
23
29
 
24
30
  #endif
@@ -21,15 +21,20 @@
21
21
  #endif
22
22
  #endif
23
23
 
24
+ #ifndef EMNAPI_UNMODIFIED_UPSTREAM
25
+ #if !defined(NAPI_EXTERN) && defined(__EMSCRIPTEN__)
26
+ #define NAPI_EXTERN __attribute__((__import_module__("env")))
27
+ #endif
28
+ #endif
29
+
24
30
  #include "js_native_api_types.h"
25
31
 
26
- #ifdef EMNAPI_UNMODIFIED_UPSTREAM
27
32
  // If you need __declspec(dllimport), either include <node_api.h> instead, or
28
33
  // define NAPI_EXTERN as __declspec(dllimport) on the compiler's command line.
29
34
  #ifndef NAPI_EXTERN
30
35
  #ifdef _WIN32
31
36
  #define NAPI_EXTERN __declspec(dllexport)
32
- #elif defined(__wasm32__)
37
+ #elif defined(__wasm__)
33
38
  #define NAPI_EXTERN \
34
39
  __attribute__((visibility("default"))) \
35
40
  __attribute__((__import_module__("napi")))
@@ -37,13 +42,9 @@
37
42
  #define NAPI_EXTERN __attribute__((visibility("default")))
38
43
  #endif
39
44
  #endif
40
- #else
41
- #include "emnapi_common.h"
42
- #endif
43
45
 
44
46
  #define NAPI_AUTO_LENGTH SIZE_MAX
45
47
 
46
- #ifdef EMNAPI_UNMODIFIED_UPSTREAM
47
48
  #ifdef __cplusplus
48
49
  #define EXTERN_C_START extern "C" {
49
50
  #define EXTERN_C_END }
@@ -51,7 +52,6 @@
51
52
  #define EXTERN_C_START
52
53
  #define EXTERN_C_END
53
54
  #endif
54
- #endif
55
55
 
56
56
  EXTERN_C_START
57
57
 
@@ -1,16 +1,24 @@
1
1
  #ifndef SRC_NODE_API_H_
2
2
  #define SRC_NODE_API_H_
3
3
 
4
- #ifdef EMNAPI_UNMODIFIED_UPSTREAM
5
- #ifdef BUILDING_NODE_EXTENSION
4
+ #ifndef EMNAPI_UNMODIFIED_UPSTREAM
5
+ #ifndef BUILDING_NODE_EXTENSION
6
+ #define BUILDING_NODE_EXTENSION
7
+ #endif
8
+
9
+ #if !defined(NAPI_EXTERN) && defined(__EMSCRIPTEN__)
10
+ #define NAPI_EXTERN __attribute__((__import_module__("env")))
11
+ #endif
12
+ #endif
13
+
14
+ #if defined(BUILDING_NODE_EXTENSION) && !defined(NAPI_EXTERN)
6
15
  #ifdef _WIN32
7
16
  // Building native addon against node
8
17
  #define NAPI_EXTERN __declspec(dllimport)
9
- #elif defined(__wasm32__)
18
+ #elif defined(__wasm__)
10
19
  #define NAPI_EXTERN __attribute__((__import_module__("napi")))
11
20
  #endif
12
21
  #endif
13
- #endif
14
22
  #include "js_native_api.h"
15
23
  #include "node_api_types.h"
16
24
 
@@ -19,16 +27,13 @@ struct uv_loop_s; // Forward declaration.
19
27
  #ifdef _WIN32
20
28
  #define NAPI_MODULE_EXPORT __declspec(dllexport)
21
29
  #else
22
- #ifdef EMNAPI_UNMODIFIED_UPSTREAM
23
- #define NAPI_MODULE_EXPORT __attribute__((visibility("default")))
24
- #else
25
30
  #ifdef __EMSCRIPTEN__
26
- #define NAPI_MODULE_EXPORT __attribute__((visibility("default"))) __attribute__((used))
31
+ #define NAPI_MODULE_EXPORT \
32
+ __attribute__((visibility("default"))) __attribute__((used))
27
33
  #else
28
34
  #define NAPI_MODULE_EXPORT __attribute__((visibility("default")))
29
35
  #endif
30
36
  #endif
31
- #endif
32
37
 
33
38
  #if defined(__GNUC__)
34
39
  #define NAPI_NO_RETURN __attribute__((noreturn))
@@ -59,19 +64,11 @@ typedef struct napi_module {
59
64
  NAPI_MODULE_INITIALIZER_X_HELPER(base, version)
60
65
  #define NAPI_MODULE_INITIALIZER_X_HELPER(base, version) base##version
61
66
 
62
- #ifdef EMNAPI_UNMODIFIED_UPSTREAM
63
- #ifdef __wasm32__
64
- #define NAPI_MODULE_INITIALIZER_BASE napi_register_wasm_v
65
- #else
66
- #define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v
67
- #endif
68
- #else
69
67
  #ifdef __wasm__
70
68
  #define NAPI_MODULE_INITIALIZER_BASE napi_register_wasm_v
71
69
  #else
72
70
  #define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v
73
71
  #endif
74
- #endif
75
72
 
76
73
  #define NODE_API_MODULE_GET_API_VERSION_BASE node_api_module_get_api_version_v
77
74
 
@@ -160,7 +157,7 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_get_buffer_info(napi_env env,
160
157
  napi_value value,
161
158
  void** data,
162
159
  size_t* length);
163
- #if !defined(EMNAPI_UNMODIFIED_UPSTREAM) || (defined(EMNAPI_UNMODIFIED_UPSTREAM) && !defined(__wasm32__))
160
+
164
161
  // Methods to manage simple async operations
165
162
  NAPI_EXTERN napi_status NAPI_CDECL
166
163
  napi_create_async_work(napi_env env,
@@ -176,7 +173,6 @@ NAPI_EXTERN napi_status NAPI_CDECL napi_queue_async_work(napi_env env,
176
173
  napi_async_work work);
177
174
  NAPI_EXTERN napi_status NAPI_CDECL napi_cancel_async_work(napi_env env,
178
175
  napi_async_work work);
179
- #endif // __wasm32__
180
176
 
181
177
  // version management
182
178
  NAPI_EXTERN napi_status NAPI_CDECL
@@ -214,7 +210,6 @@ napi_close_callback_scope(napi_env env, napi_callback_scope scope);
214
210
 
215
211
  #if NAPI_VERSION >= 4
216
212
 
217
- #if !defined(EMNAPI_UNMODIFIED_UPSTREAM) || (defined(EMNAPI_UNMODIFIED_UPSTREAM) && !defined(__wasm32__))
218
213
  // Calling into JS from other threads
219
214
  NAPI_EXTERN napi_status NAPI_CDECL
220
215
  napi_create_threadsafe_function(napi_env env,
@@ -248,7 +243,6 @@ napi_unref_threadsafe_function(napi_env env, napi_threadsafe_function func);
248
243
 
249
244
  NAPI_EXTERN napi_status NAPI_CDECL
250
245
  napi_ref_threadsafe_function(napi_env env, napi_threadsafe_function func);
251
- #endif // __wasm32__
252
246
 
253
247
  #endif // NAPI_VERSION >= 4
254
248
 
package/index.js CHANGED
@@ -9,7 +9,6 @@ const jsLibrary = path.join(__dirname, './dist/library_napi.js')
9
9
  const sources = [
10
10
  path.join(__dirname, './src/js_native_api.c'),
11
11
  path.join(__dirname, './src/node_api.c'),
12
- path.join(__dirname, './src/emnapi.c'),
13
12
  path.join(__dirname, './src/async_cleanup_hook.c'),
14
13
  path.join(__dirname, './src/async_context.c'),
15
14
  path.join(__dirname, './src/async_work.c'),
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.43.1",
3
+ "version": "0.44.0",
4
4
  "description": "Node-API implementation for Emscripten",
5
5
  "main": "index.js",
6
6
  "peerDependencies": {
@@ -12,7 +12,8 @@
12
12
  }
13
13
  },
14
14
  "scripts": {
15
- "build": "node ./script/build.js"
15
+ "build": "node ./script/build.js",
16
+ "version": "node ./script/version.js"
16
17
  },
17
18
  "repository": {
18
19
  "type": "git",
@@ -1,9 +1,5 @@
1
1
  #include "emnapi_internal.h"
2
2
 
3
- #ifdef __EMSCRIPTEN__
4
- #include <emscripten/heap.h>
5
- #endif
6
-
7
3
  EXTERN_C_START
8
4
 
9
5
  static const char* emnapi_error_messages[] = {
@@ -67,34 +63,4 @@ napi_status napi_get_last_error_info(
67
63
  return napi_ok;
68
64
  }
69
65
 
70
- #define PAGESIZE 65536
71
-
72
- napi_status napi_adjust_external_memory(napi_env env,
73
- int64_t change_in_bytes,
74
- int64_t* adjusted_value) {
75
- CHECK_ENV(env);
76
- CHECK_ARG(env, adjusted_value);
77
-
78
- if (change_in_bytes < 0) {
79
- return napi_set_last_error(env, napi_invalid_arg, 0, NULL);
80
- }
81
-
82
- size_t old_size = __builtin_wasm_memory_size(0) << 16;
83
- size_t new_size = old_size + (size_t) change_in_bytes;
84
- #ifdef __EMSCRIPTEN__
85
- if (!emscripten_resize_heap(new_size)) {
86
- return napi_set_last_error(env, napi_generic_failure, 0, NULL);
87
- }
88
- #else
89
- new_size = new_size + (PAGESIZE - new_size % PAGESIZE) % PAGESIZE;
90
- if (-1 == __builtin_wasm_memory_grow(0, (new_size - old_size + 65535) >> 16)) {
91
- return napi_set_last_error(env, napi_generic_failure, 0, NULL);
92
- }
93
- #endif
94
-
95
- *adjusted_value = (int64_t) (__builtin_wasm_memory_size(0) << 16);
96
-
97
- return napi_clear_last_error(env);
98
- }
99
-
100
66
  EXTERN_C_END
package/src/emnapi.c DELETED
@@ -1,21 +0,0 @@
1
- #include "emnapi_internal.h"
2
-
3
- EXTERN_C_START
4
-
5
- #ifdef __EMSCRIPTEN__
6
- napi_status
7
- emnapi_get_emscripten_version(napi_env env,
8
- const emnapi_emscripten_version** version) {
9
- CHECK_ENV(env);
10
- CHECK_ARG(env, version);
11
- static emnapi_emscripten_version emscripten_version = {
12
- __EMSCRIPTEN_major__,
13
- __EMSCRIPTEN_minor__,
14
- __EMSCRIPTEN_tiny__
15
- };
16
- *version = &emscripten_version;
17
- return napi_clear_last_error(env);
18
- }
19
- #endif
20
-
21
- EXTERN_C_END