koffi 1.0.5 → 1.1.0-beta.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.
Files changed (268) hide show
  1. package/README.md +46 -21
  2. package/build/qemu/1.1.0-beta.0/koffi_darwin_x64.tar.gz +0 -0
  3. package/build/qemu/1.1.0-beta.0/koffi_freebsd_arm64.tar.gz +0 -0
  4. package/build/qemu/1.1.0-beta.0/koffi_freebsd_ia32.tar.gz +0 -0
  5. package/build/qemu/1.1.0-beta.0/koffi_freebsd_x64.tar.gz +0 -0
  6. package/build/qemu/1.1.0-beta.0/koffi_linux_arm.tar.gz +0 -0
  7. package/build/qemu/1.1.0-beta.0/koffi_linux_arm64.tar.gz +0 -0
  8. package/build/qemu/1.1.0-beta.0/koffi_linux_ia32.tar.gz +0 -0
  9. package/build/qemu/1.1.0-beta.0/koffi_linux_x64.tar.gz +0 -0
  10. package/build/qemu/1.1.0-beta.0/koffi_win32_ia32.tar.gz +0 -0
  11. package/build/qemu/1.1.0-beta.0/koffi_win32_x64.tar.gz +0 -0
  12. package/package.json +1 -1
  13. package/qemu/qemu.js +11 -5
  14. package/qemu/registry/machines.json +20 -10
  15. package/src/abi_arm32.cc +13 -6
  16. package/src/abi_arm64.cc +13 -6
  17. package/src/abi_x64_sysv.cc +13 -6
  18. package/src/abi_x64_win.cc +13 -6
  19. package/src/abi_x86.cc +13 -6
  20. package/src/call.cc +25 -26
  21. package/src/call.hh +27 -41
  22. package/src/ffi.cc +152 -17
  23. package/src/ffi.hh +24 -10
  24. package/test/misc.c +2 -2
  25. package/build/qemu/1.0.5/koffi_darwin_x64.tar.gz +0 -0
  26. package/build/qemu/1.0.5/koffi_freebsd_arm64.tar.gz +0 -0
  27. package/build/qemu/1.0.5/koffi_freebsd_ia32.tar.gz +0 -0
  28. package/build/qemu/1.0.5/koffi_freebsd_x64.tar.gz +0 -0
  29. package/build/qemu/1.0.5/koffi_linux_arm.tar.gz +0 -0
  30. package/build/qemu/1.0.5/koffi_linux_arm64.tar.gz +0 -0
  31. package/build/qemu/1.0.5/koffi_linux_ia32.tar.gz +0 -0
  32. package/build/qemu/1.0.5/koffi_linux_x64.tar.gz +0 -0
  33. package/build/qemu/1.0.5/koffi_win32_ia32.tar.gz +0 -0
  34. package/build/qemu/1.0.5/koffi_win32_x64.tar.gz +0 -0
  35. package/test/misc.js +0 -227
  36. package/vendor/node-addon-api/CODE_OF_CONDUCT.md +0 -4
  37. package/vendor/node-addon-api/CONTRIBUTING.md +0 -93
  38. package/vendor/node-addon-api/appveyor.yml +0 -37
  39. package/vendor/node-addon-api/benchmark/README.md +0 -47
  40. package/vendor/node-addon-api/benchmark/binding.gyp +0 -25
  41. package/vendor/node-addon-api/benchmark/function_args.cc +0 -217
  42. package/vendor/node-addon-api/benchmark/function_args.js +0 -60
  43. package/vendor/node-addon-api/benchmark/index.js +0 -34
  44. package/vendor/node-addon-api/benchmark/property_descriptor.cc +0 -91
  45. package/vendor/node-addon-api/benchmark/property_descriptor.js +0 -37
  46. package/vendor/node-addon-api/doc/addon.md +0 -163
  47. package/vendor/node-addon-api/doc/array.md +0 -81
  48. package/vendor/node-addon-api/doc/array_buffer.md +0 -155
  49. package/vendor/node-addon-api/doc/async_context.md +0 -86
  50. package/vendor/node-addon-api/doc/async_operations.md +0 -31
  51. package/vendor/node-addon-api/doc/async_worker.md +0 -427
  52. package/vendor/node-addon-api/doc/async_worker_variants.md +0 -557
  53. package/vendor/node-addon-api/doc/bigint.md +0 -97
  54. package/vendor/node-addon-api/doc/boolean.md +0 -68
  55. package/vendor/node-addon-api/doc/buffer.md +0 -150
  56. package/vendor/node-addon-api/doc/callback_scope.md +0 -54
  57. package/vendor/node-addon-api/doc/callbackinfo.md +0 -97
  58. package/vendor/node-addon-api/doc/checker-tool.md +0 -32
  59. package/vendor/node-addon-api/doc/class_property_descriptor.md +0 -123
  60. package/vendor/node-addon-api/doc/cmake-js.md +0 -68
  61. package/vendor/node-addon-api/doc/conversion-tool.md +0 -28
  62. package/vendor/node-addon-api/doc/creating_a_release.md +0 -62
  63. package/vendor/node-addon-api/doc/dataview.md +0 -248
  64. package/vendor/node-addon-api/doc/date.md +0 -68
  65. package/vendor/node-addon-api/doc/env.md +0 -196
  66. package/vendor/node-addon-api/doc/error.md +0 -120
  67. package/vendor/node-addon-api/doc/error_handling.md +0 -254
  68. package/vendor/node-addon-api/doc/escapable_handle_scope.md +0 -80
  69. package/vendor/node-addon-api/doc/external.md +0 -63
  70. package/vendor/node-addon-api/doc/function.md +0 -402
  71. package/vendor/node-addon-api/doc/function_reference.md +0 -238
  72. package/vendor/node-addon-api/doc/generator.md +0 -13
  73. package/vendor/node-addon-api/doc/handle_scope.md +0 -63
  74. package/vendor/node-addon-api/doc/hierarchy.md +0 -91
  75. package/vendor/node-addon-api/doc/instance_wrap.md +0 -408
  76. package/vendor/node-addon-api/doc/maybe.md +0 -76
  77. package/vendor/node-addon-api/doc/memory_management.md +0 -27
  78. package/vendor/node-addon-api/doc/name.md +0 -29
  79. package/vendor/node-addon-api/doc/node-gyp.md +0 -82
  80. package/vendor/node-addon-api/doc/number.md +0 -163
  81. package/vendor/node-addon-api/doc/object.md +0 -411
  82. package/vendor/node-addon-api/doc/object_lifetime_management.md +0 -83
  83. package/vendor/node-addon-api/doc/object_reference.md +0 -117
  84. package/vendor/node-addon-api/doc/object_wrap.md +0 -588
  85. package/vendor/node-addon-api/doc/prebuild_tools.md +0 -16
  86. package/vendor/node-addon-api/doc/promises.md +0 -79
  87. package/vendor/node-addon-api/doc/property_descriptor.md +0 -286
  88. package/vendor/node-addon-api/doc/propertylvalue.md +0 -50
  89. package/vendor/node-addon-api/doc/range_error.md +0 -59
  90. package/vendor/node-addon-api/doc/reference.md +0 -113
  91. package/vendor/node-addon-api/doc/setup.md +0 -110
  92. package/vendor/node-addon-api/doc/string.md +0 -93
  93. package/vendor/node-addon-api/doc/symbol.md +0 -61
  94. package/vendor/node-addon-api/doc/threadsafe.md +0 -121
  95. package/vendor/node-addon-api/doc/threadsafe_function.md +0 -290
  96. package/vendor/node-addon-api/doc/type_error.md +0 -59
  97. package/vendor/node-addon-api/doc/typed_array.md +0 -78
  98. package/vendor/node-addon-api/doc/typed_array_of.md +0 -137
  99. package/vendor/node-addon-api/doc/typed_threadsafe_function.md +0 -306
  100. package/vendor/node-addon-api/doc/value.md +0 -340
  101. package/vendor/node-addon-api/doc/version_management.md +0 -43
  102. package/vendor/node-addon-api/package.json +0 -415
  103. package/vendor/node-addon-api/test/README.md +0 -91
  104. package/vendor/node-addon-api/test/addon.cc +0 -36
  105. package/vendor/node-addon-api/test/addon.js +0 -11
  106. package/vendor/node-addon-api/test/addon_build/index.js +0 -49
  107. package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +0 -17
  108. package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +0 -62
  109. package/vendor/node-addon-api/test/addon_build/tpl/index.js +0 -9
  110. package/vendor/node-addon-api/test/addon_build/tpl/package.json +0 -11
  111. package/vendor/node-addon-api/test/addon_data.cc +0 -99
  112. package/vendor/node-addon-api/test/addon_data.js +0 -46
  113. package/vendor/node-addon-api/test/array_buffer.cc +0 -243
  114. package/vendor/node-addon-api/test/array_buffer.js +0 -69
  115. package/vendor/node-addon-api/test/async_context.cc +0 -36
  116. package/vendor/node-addon-api/test/async_context.js +0 -122
  117. package/vendor/node-addon-api/test/async_progress_queue_worker.cc +0 -83
  118. package/vendor/node-addon-api/test/async_progress_queue_worker.js +0 -46
  119. package/vendor/node-addon-api/test/async_progress_worker.cc +0 -134
  120. package/vendor/node-addon-api/test/async_progress_worker.js +0 -61
  121. package/vendor/node-addon-api/test/async_worker.cc +0 -106
  122. package/vendor/node-addon-api/test/async_worker.js +0 -179
  123. package/vendor/node-addon-api/test/async_worker_nocallback.js +0 -13
  124. package/vendor/node-addon-api/test/async_worker_persistent.cc +0 -63
  125. package/vendor/node-addon-api/test/async_worker_persistent.js +0 -24
  126. package/vendor/node-addon-api/test/basic_types/array.cc +0 -40
  127. package/vendor/node-addon-api/test/basic_types/array.js +0 -35
  128. package/vendor/node-addon-api/test/basic_types/boolean.cc +0 -38
  129. package/vendor/node-addon-api/test/basic_types/boolean.js +0 -35
  130. package/vendor/node-addon-api/test/basic_types/number.cc +0 -99
  131. package/vendor/node-addon-api/test/basic_types/number.js +0 -114
  132. package/vendor/node-addon-api/test/basic_types/value.cc +0 -120
  133. package/vendor/node-addon-api/test/basic_types/value.js +0 -133
  134. package/vendor/node-addon-api/test/bigint.cc +0 -91
  135. package/vendor/node-addon-api/test/bigint.js +0 -53
  136. package/vendor/node-addon-api/test/binding-swallowexcept.cc +0 -12
  137. package/vendor/node-addon-api/test/binding.cc +0 -173
  138. package/vendor/node-addon-api/test/binding.gyp +0 -124
  139. package/vendor/node-addon-api/test/buffer.cc +0 -183
  140. package/vendor/node-addon-api/test/buffer.js +0 -69
  141. package/vendor/node-addon-api/test/callbackscope.cc +0 -22
  142. package/vendor/node-addon-api/test/callbackscope.js +0 -49
  143. package/vendor/node-addon-api/test/common/index.js +0 -114
  144. package/vendor/node-addon-api/test/common/test_helper.h +0 -71
  145. package/vendor/node-addon-api/test/dataview/dataview.cc +0 -48
  146. package/vendor/node-addon-api/test/dataview/dataview.js +0 -35
  147. package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +0 -115
  148. package/vendor/node-addon-api/test/dataview/dataview_read_write.js +0 -90
  149. package/vendor/node-addon-api/test/date.cc +0 -44
  150. package/vendor/node-addon-api/test/date.js +0 -18
  151. package/vendor/node-addon-api/test/env_cleanup.cc +0 -88
  152. package/vendor/node-addon-api/test/env_cleanup.js +0 -56
  153. package/vendor/node-addon-api/test/error.cc +0 -287
  154. package/vendor/node-addon-api/test/error.js +0 -81
  155. package/vendor/node-addon-api/test/error_handling_for_primitives.cc +0 -13
  156. package/vendor/node-addon-api/test/error_handling_for_primitives.js +0 -29
  157. package/vendor/node-addon-api/test/error_terminating_environment.js +0 -95
  158. package/vendor/node-addon-api/test/external.cc +0 -81
  159. package/vendor/node-addon-api/test/external.js +0 -88
  160. package/vendor/node-addon-api/test/function.cc +0 -324
  161. package/vendor/node-addon-api/test/function.js +0 -133
  162. package/vendor/node-addon-api/test/function_reference.cc +0 -202
  163. package/vendor/node-addon-api/test/function_reference.js +0 -157
  164. package/vendor/node-addon-api/test/globalObject/global_object.cc +0 -61
  165. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +0 -31
  166. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +0 -61
  167. package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +0 -40
  168. package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +0 -57
  169. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +0 -28
  170. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +0 -48
  171. package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +0 -31
  172. package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +0 -58
  173. package/vendor/node-addon-api/test/handlescope.cc +0 -60
  174. package/vendor/node-addon-api/test/handlescope.js +0 -14
  175. package/vendor/node-addon-api/test/index.js +0 -159
  176. package/vendor/node-addon-api/test/maybe/check.cc +0 -23
  177. package/vendor/node-addon-api/test/maybe/index.js +0 -38
  178. package/vendor/node-addon-api/test/memory_management.cc +0 -17
  179. package/vendor/node-addon-api/test/memory_management.js +0 -9
  180. package/vendor/node-addon-api/test/movable_callbacks.cc +0 -23
  181. package/vendor/node-addon-api/test/movable_callbacks.js +0 -21
  182. package/vendor/node-addon-api/test/name.cc +0 -108
  183. package/vendor/node-addon-api/test/name.js +0 -59
  184. package/vendor/node-addon-api/test/napi_child.js +0 -14
  185. package/vendor/node-addon-api/test/object/delete_property.cc +0 -38
  186. package/vendor/node-addon-api/test/object/delete_property.js +0 -41
  187. package/vendor/node-addon-api/test/object/finalizer.cc +0 -29
  188. package/vendor/node-addon-api/test/object/finalizer.js +0 -28
  189. package/vendor/node-addon-api/test/object/get_property.cc +0 -34
  190. package/vendor/node-addon-api/test/object/get_property.js +0 -40
  191. package/vendor/node-addon-api/test/object/has_own_property.cc +0 -34
  192. package/vendor/node-addon-api/test/object/has_own_property.js +0 -34
  193. package/vendor/node-addon-api/test/object/has_property.cc +0 -38
  194. package/vendor/node-addon-api/test/object/has_property.js +0 -37
  195. package/vendor/node-addon-api/test/object/object.cc +0 -350
  196. package/vendor/node-addon-api/test/object/object.js +0 -217
  197. package/vendor/node-addon-api/test/object/object_deprecated.cc +0 -66
  198. package/vendor/node-addon-api/test/object/object_deprecated.js +0 -47
  199. package/vendor/node-addon-api/test/object/object_freeze_seal.cc +0 -25
  200. package/vendor/node-addon-api/test/object/object_freeze_seal.js +0 -61
  201. package/vendor/node-addon-api/test/object/set_property.cc +0 -45
  202. package/vendor/node-addon-api/test/object/set_property.js +0 -30
  203. package/vendor/node-addon-api/test/object/subscript_operator.cc +0 -58
  204. package/vendor/node-addon-api/test/object/subscript_operator.js +0 -17
  205. package/vendor/node-addon-api/test/object_reference.cc +0 -219
  206. package/vendor/node-addon-api/test/object_reference.js +0 -259
  207. package/vendor/node-addon-api/test/objectwrap.cc +0 -268
  208. package/vendor/node-addon-api/test/objectwrap.js +0 -284
  209. package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +0 -26
  210. package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +0 -18
  211. package/vendor/node-addon-api/test/objectwrap_function.cc +0 -45
  212. package/vendor/node-addon-api/test/objectwrap_function.js +0 -22
  213. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +0 -30
  214. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +0 -13
  215. package/vendor/node-addon-api/test/objectwrap_removewrap.cc +0 -45
  216. package/vendor/node-addon-api/test/objectwrap_removewrap.js +0 -40
  217. package/vendor/node-addon-api/test/objectwrap_worker_thread.js +0 -19
  218. package/vendor/node-addon-api/test/promise.cc +0 -29
  219. package/vendor/node-addon-api/test/promise.js +0 -18
  220. package/vendor/node-addon-api/test/reference.cc +0 -24
  221. package/vendor/node-addon-api/test/reference.js +0 -14
  222. package/vendor/node-addon-api/test/run_script.cc +0 -56
  223. package/vendor/node-addon-api/test/run_script.js +0 -45
  224. package/vendor/node-addon-api/test/symbol.cc +0 -79
  225. package/vendor/node-addon-api/test/symbol.js +0 -73
  226. package/vendor/node-addon-api/test/testUtil.js +0 -54
  227. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +0 -195
  228. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +0 -188
  229. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +0 -63
  230. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +0 -12
  231. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +0 -115
  232. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +0 -14
  233. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +0 -26
  234. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +0 -7
  235. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +0 -225
  236. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +0 -59
  237. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +0 -42
  238. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +0 -53
  239. package/vendor/node-addon-api/test/thunking_manual.cc +0 -140
  240. package/vendor/node-addon-api/test/thunking_manual.js +0 -17
  241. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +0 -215
  242. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +0 -188
  243. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +0 -68
  244. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +0 -12
  245. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +0 -127
  246. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +0 -14
  247. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +0 -28
  248. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +0 -7
  249. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +0 -237
  250. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +0 -59
  251. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +0 -53
  252. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +0 -53
  253. package/vendor/node-addon-api/test/typedarray-bigint.js +0 -58
  254. package/vendor/node-addon-api/test/typedarray.cc +0 -216
  255. package/vendor/node-addon-api/test/typedarray.js +0 -69
  256. package/vendor/node-addon-api/test/version_management.cc +0 -27
  257. package/vendor/node-addon-api/test/version_management.js +0 -31
  258. package/vendor/node-addon-api/unit-test/README.md +0 -28
  259. package/vendor/node-addon-api/unit-test/binding-file-template.js +0 -39
  260. package/vendor/node-addon-api/unit-test/binding.gyp +0 -72
  261. package/vendor/node-addon-api/unit-test/exceptions.js +0 -32
  262. package/vendor/node-addon-api/unit-test/generate-binding-cc.js +0 -61
  263. package/vendor/node-addon-api/unit-test/injectTestParams.js +0 -101
  264. package/vendor/node-addon-api/unit-test/listOfTestModules.js +0 -88
  265. package/vendor/node-addon-api/unit-test/matchModules.js +0 -65
  266. package/vendor/node-addon-api/unit-test/setup.js +0 -13
  267. package/vendor/node-addon-api/unit-test/spawnTask.js +0 -26
  268. package/vendor/node-addon-api/unit-test/test.js +0 -30
@@ -1,31 +0,0 @@
1
- #include "napi.h"
2
-
3
- using namespace Napi;
4
-
5
- void SetPropertyWithCStyleStringAsKey(const CallbackInfo& info) {
6
- Object globalObject = info.Env().Global();
7
- String key = info[0].As<String>();
8
- Value value = info[1];
9
- globalObject.Set(key.Utf8Value().c_str(), value);
10
- }
11
-
12
- void SetPropertyWithCppStyleStringAsKey(const CallbackInfo& info) {
13
- Object globalObject = info.Env().Global();
14
- String key = info[0].As<String>();
15
- Value value = info[1];
16
- globalObject.Set(key.Utf8Value(), value);
17
- }
18
-
19
- void SetPropertyWithInt32AsKey(const CallbackInfo& info) {
20
- Object globalObject = info.Env().Global();
21
- Number key = info[0].As<Number>();
22
- Value value = info[1];
23
- globalObject.Set(key.Uint32Value(), value);
24
- }
25
-
26
- void SetPropertyWithNapiValueAsKey(const CallbackInfo& info) {
27
- Object globalObject = info.Env().Global();
28
- Name key = info[0].As<Name>();
29
- Value value = info[1];
30
- globalObject.Set(key, value);
31
- }
@@ -1,58 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
-
5
- module.exports = require('../common').runTest(test);
6
-
7
- function test(binding) {
8
- const KEY_TYPE = {
9
- C_STR: 'KEY_AS_C_STRING',
10
- CPP_STR: 'KEY_AS_CPP_STRING',
11
- NAPI: 'KEY_AS_NAPI_VALUES',
12
- INT_32: 'KEY_AS_INT_32_NUM'
13
- };
14
-
15
- function setGlobalObjectKeyValue(key, value, keyType) {
16
- switch(keyType)
17
- {
18
- case KEY_TYPE.CPP_STR:
19
- binding.globalObject.setPropertyWithCppStyleString(key,value);
20
- break;
21
-
22
- case KEY_TYPE.C_STR:
23
- binding.globalObject.setPropertyWithCStyleString(key,value);
24
- break;
25
-
26
- case KEY_TYPE.INT_32:
27
- binding.globalObject.setPropertyWithInt32(key,value);
28
- break;
29
-
30
- case KEY_TYPE.NAPI:
31
- binding.globalObject.setPropertyWithNapiValue(key,value);
32
- break;
33
- }
34
- }
35
-
36
- function assertErrMessageIsThrown(nativeObjectSetFunction, errMsg) {
37
- assert.throws(() => {
38
- nativeObjectSetFunction(undefined, 1);
39
- }, errMsg);
40
- }
41
-
42
-
43
- setGlobalObjectKeyValue("cKey","cValue",KEY_TYPE.CPP_STR);
44
- setGlobalObjectKeyValue(1,10,KEY_TYPE.INT_32);
45
- setGlobalObjectKeyValue("napi_key","napi_value",KEY_TYPE.NAPI);
46
- setGlobalObjectKeyValue("cppKey","cppValue",KEY_TYPE.CPP_STR);
47
- setGlobalObjectKeyValue("circular",global,KEY_TYPE.NAPI);
48
-
49
- assert.deepStrictEqual(global["circular"], global);
50
- assert.deepStrictEqual(global["cppKey"],"cppValue");
51
- assert.deepStrictEqual(global["napi_key"],"napi_value");
52
- assert.deepStrictEqual(global[1],10);
53
- assert.deepStrictEqual(global["cKey"],"cValue");
54
-
55
- assertErrMessageIsThrown(binding.globalObject.setPropertyWithCppStyleString, 'Error: A string was expected');
56
- assertErrMessageIsThrown(binding.globalObject.setPropertyWithCStyleString, 'Error: A string was expected');
57
- assertErrMessageIsThrown(binding.globalObject.setPropertyWithInt32, 'Error: A number was expected');
58
- }
@@ -1,60 +0,0 @@
1
- #include "napi.h"
2
- #include "string.h"
3
- #include <stdio.h>
4
- #include <stdlib.h>
5
-
6
- using namespace Napi;
7
-
8
- Value createScope(const CallbackInfo& info) {
9
- {
10
- HandleScope scope(info.Env());
11
- String::New(info.Env(), "inner-scope");
12
- }
13
- return String::New(info.Env(), "scope");
14
- }
15
-
16
- Value escapeFromScope(const CallbackInfo& info) {
17
- Value result;
18
- {
19
- EscapableHandleScope scope(info.Env());
20
- result = scope.Escape(String::New(info.Env(), "inner-scope"));
21
- }
22
- return result;
23
- }
24
-
25
- #define LOOP_MAX 1000000
26
- Value stressEscapeFromScope(const CallbackInfo& info) {
27
- Value result;
28
- for (int i = 0; i < LOOP_MAX; i++) {
29
- EscapableHandleScope scope(info.Env());
30
- char buffer[128];
31
- snprintf(buffer, 128, "%d", i);
32
- std::string name = std::string("inner-scope") + std::string(buffer);
33
- Value newValue = String::New(info.Env(), name.c_str());
34
- if (i == (LOOP_MAX -1)) {
35
- result = scope.Escape(newValue);
36
- }
37
- }
38
- return result;
39
- }
40
-
41
- Value doubleEscapeFromScope(const CallbackInfo& info) {
42
- Value result;
43
- {
44
- EscapableHandleScope scope(info.Env());
45
- result = scope.Escape(String::New(info.Env(), "inner-scope"));
46
- result = scope.Escape(String::New(info.Env(), "inner-scope"));
47
- }
48
- return result;
49
- }
50
-
51
- Object InitHandleScope(Env env) {
52
- Object exports = Object::New(env);
53
-
54
- exports["createScope"] = Function::New(env, createScope);
55
- exports["escapeFromScope"] = Function::New(env, escapeFromScope);
56
- exports["stressEscapeFromScope"] = Function::New(env, stressEscapeFromScope);
57
- exports["doubleEscapeFromScope"] = Function::New(env, doubleEscapeFromScope);
58
-
59
- return exports;
60
- }
@@ -1,14 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
-
5
- module.exports = require('./common').runTest(test);
6
-
7
- function test(binding) {
8
- assert.strictEqual(binding.handlescope.createScope(), 'scope');
9
- assert.strictEqual(binding.handlescope.escapeFromScope(), 'inner-scope');
10
- assert.strictEqual(binding.handlescope.stressEscapeFromScope(), 'inner-scope999999');
11
- assert.throws(() => binding.handlescope.doubleEscapeFromScope(),
12
- Error,
13
- ' napi_escape_handle already called on scope');
14
- }
@@ -1,159 +0,0 @@
1
- 'use strict';
2
-
3
- const majorNodeVersion = process.versions.node.split('.')[0];
4
-
5
- if (typeof global.gc !== 'function') {
6
- // Construct the correct (version-dependent) command-line args.
7
- const args = ['--expose-gc'];
8
- const majorV8Version = process.versions.v8.split('.')[0];
9
- if (majorV8Version < 9) {
10
- args.push('--no-concurrent-array-buffer-freeing');
11
- }
12
- if (majorNodeVersion >= 14) {
13
- args.push('--no-concurrent-array-buffer-sweeping');
14
- }
15
- args.push(__filename);
16
-
17
- const child = require('./napi_child').spawnSync(process.argv[0], args, {
18
- stdio: 'inherit'
19
- });
20
-
21
- if (child.signal) {
22
- console.error(`Tests aborted with ${child.signal}`);
23
- process.exitCode = 1;
24
- } else {
25
- process.exitCode = child.status;
26
- }
27
- process.exit(process.exitCode);
28
- }
29
-
30
- const testModules = [];
31
-
32
- const fs = require('fs');
33
- const path = require('path');
34
-
35
- let filterCondition = process.env.npm_config_filter || '';
36
- let filterConditionFiles = [];
37
-
38
- if (filterCondition !== '') {
39
- filterCondition = require('../unit-test/matchModules').matchWildCards(process.env.npm_config_filter);
40
- filterConditionFiles = filterCondition.split(' ').length > 0 ? filterCondition.split(' ') : [filterCondition];
41
- }
42
-
43
- const filterConditionsProvided = filterConditionFiles.length > 0;
44
-
45
- function checkFilterCondition (fileName, parsedFilepath) {
46
- let result = false;
47
-
48
- if (!filterConditionsProvided) return true;
49
- if (filterConditionFiles.includes(parsedFilepath)) result = true;
50
- if (filterConditionFiles.includes(fileName)) result = true;
51
- return result;
52
- }
53
-
54
- // TODO(RaisinTen): Update this when the test filenames
55
- // are changed into test_*.js.
56
- function loadTestModules (currentDirectory = __dirname, pre = '') {
57
- fs.readdirSync(currentDirectory).forEach((file) => {
58
- if (currentDirectory === __dirname && (
59
- file === 'binding.cc' ||
60
- file === 'binding.gyp' ||
61
- file === 'build' ||
62
- file === 'common' ||
63
- file === 'napi_child.js' ||
64
- file === 'testUtil.js' ||
65
- file === 'thunking_manual.cc' ||
66
- file === 'thunking_manual.js' ||
67
- file === 'index.js' ||
68
- file[0] === '.')) {
69
- return;
70
- }
71
- const absoluteFilepath = path.join(currentDirectory, file);
72
- const parsedFilepath = path.parse(file);
73
- const parsedPath = path.parse(currentDirectory);
74
-
75
- if (fs.statSync(absoluteFilepath).isDirectory()) {
76
- if (fs.existsSync(absoluteFilepath + '/index.js')) {
77
- if (checkFilterCondition(parsedFilepath.name, parsedPath.base)) {
78
- testModules.push(pre + file);
79
- }
80
- } else {
81
- loadTestModules(absoluteFilepath, pre + file + '/');
82
- }
83
- } else {
84
- if (parsedFilepath.ext === '.js' && checkFilterCondition(parsedFilepath.name, parsedPath.base)) {
85
- testModules.push(pre + parsedFilepath.name);
86
- }
87
- }
88
- });
89
- }
90
-
91
- loadTestModules();
92
-
93
- process.config.target_defaults.default_configuration =
94
- fs
95
- .readdirSync(path.join(__dirname, process.env.REL_BUILD_PATH || '', 'build'))
96
- .filter((item) => (item === 'Debug' || item === 'Release'))[0];
97
-
98
- let napiVersion = Number(process.versions.napi);
99
- if (process.env.NAPI_VERSION) {
100
- // we need this so that we don't try run tests that rely
101
- // on methods that are not available in the NAPI_VERSION
102
- // specified
103
- napiVersion = process.env.NAPI_VERSION;
104
- }
105
- console.log('napiVersion:' + napiVersion);
106
-
107
- if (napiVersion < 3) {
108
- testModules.splice(testModules.indexOf('env_cleanup'), 1);
109
- testModules.splice(testModules.indexOf('callbackscope'), 1);
110
- testModules.splice(testModules.indexOf('version_management'), 1);
111
- }
112
-
113
- if (napiVersion < 4 && !filterConditionsProvided) {
114
- testModules.splice(testModules.indexOf('asyncprogressqueueworker'), 1);
115
- testModules.splice(testModules.indexOf('asyncprogressworker'), 1);
116
- testModules.splice(testModules.indexOf('threadsafe_function/threadsafe_function_ctx'), 1);
117
- testModules.splice(testModules.indexOf('threadsafe_function/threadsafe_function_existing_tsfn'), 1);
118
- testModules.splice(testModules.indexOf('threadsafe_function/threadsafe_function_ptr'), 1);
119
- testModules.splice(testModules.indexOf('threadsafe_function/threadsafe_function_sum'), 1);
120
- testModules.splice(testModules.indexOf('threadsafe_function/threadsafe_function_unref'), 1);
121
- testModules.splice(testModules.indexOf('threadsafe_function/threadsafe_function'), 1);
122
- }
123
-
124
- if (napiVersion < 5 && !filterConditionsProvided) {
125
- testModules.splice(testModules.indexOf('date'), 1);
126
- }
127
-
128
- if (napiVersion < 6 && !filterConditionsProvided) {
129
- testModules.splice(testModules.indexOf('addon'), 1);
130
- testModules.splice(testModules.indexOf('addon_data'), 1);
131
- testModules.splice(testModules.indexOf('bigint'), 1);
132
- testModules.splice(testModules.indexOf('typedarray-bigint'), 1);
133
- }
134
-
135
- if (majorNodeVersion < 12 && !filterConditionsProvided) {
136
- testModules.splice(testModules.indexOf('objectwrap_worker_thread'), 1);
137
- testModules.splice(testModules.indexOf('error_terminating_environment'), 1);
138
- }
139
-
140
- if (napiVersion < 8 && !filterConditionsProvided) {
141
- testModules.splice(testModules.indexOf('object/object_freeze_seal'), 1);
142
- }
143
-
144
- (async function () {
145
- console.log(`Testing with Node-API Version '${napiVersion}'.`);
146
-
147
- if (filterConditionsProvided) { console.log('Starting test suite\n', testModules); } else { console.log('Starting test suite\n'); }
148
-
149
- // Requiring each module runs tests in the module.
150
- for (const name of testModules) {
151
- console.log(`Running test '${name}'`);
152
- await require('./' + name);
153
- }
154
-
155
- console.log('\nAll tests passed!');
156
- })().catch((error) => {
157
- console.log(error);
158
- process.exit(1);
159
- });
@@ -1,23 +0,0 @@
1
- #include "napi.h"
2
- #if defined(NODE_ADDON_API_ENABLE_MAYBE)
3
-
4
- using namespace Napi;
5
-
6
- namespace {
7
-
8
- void VoidCallback(const CallbackInfo& info) {
9
- Function fn = info[0].As<Function>();
10
-
11
- Maybe<Value> it = fn.Call({});
12
-
13
- it.Check();
14
- }
15
-
16
- } // end anonymous namespace
17
-
18
- Object InitMaybeCheck(Env env) {
19
- Object exports = Object::New(env);
20
- exports.Set("voidCallback", Function::New(env, VoidCallback));
21
- return exports;
22
- }
23
- #endif
@@ -1,38 +0,0 @@
1
- 'use strict';
2
-
3
- const buildType = process.config.target_defaults.default_configuration;
4
- const assert = require('assert');
5
- const os = require('os');
6
-
7
- const napiChild = require('../napi_child');
8
-
9
- module.exports = test(require(`../build/${buildType}/binding_noexcept_maybe.node`).maybe_check);
10
-
11
- function test(binding) {
12
- if (process.argv.includes('child')) {
13
- child(binding);
14
- return;
15
- }
16
- const cp = napiChild.spawn(process.execPath, [__filename, 'child'], {
17
- stdio: ['ignore', 'inherit', 'pipe'],
18
- });
19
- cp.stderr.setEncoding('utf8');
20
- let stderr = '';
21
- cp.stderr.on('data', chunk => {
22
- stderr += chunk;
23
- });
24
- cp.on('exit', (code, signal) => {
25
- if (process.platform === 'win32') {
26
- assert.strictEqual(code, 128 + 6 /* SIGABRT */);
27
- } else {
28
- assert.strictEqual(signal, 'SIGABRT');
29
- }
30
- assert.ok(stderr.match(/FATAL ERROR: Napi::Maybe::Check Maybe value is Nothing./));
31
- });
32
- }
33
-
34
- function child(binding) {
35
- binding.voidCallback(() => {
36
- throw new Error('foobar');
37
- })
38
- }
@@ -1,17 +0,0 @@
1
- #include "napi.h"
2
-
3
- using namespace Napi;
4
-
5
- Value externalAllocatedMemory(const CallbackInfo& info) {
6
- int64_t kSize = 1024 * 1024;
7
- int64_t baseline = MemoryManagement::AdjustExternalMemory(info.Env(), 0);
8
- int64_t tmp = MemoryManagement::AdjustExternalMemory(info.Env(), kSize);
9
- tmp = MemoryManagement::AdjustExternalMemory(info.Env(), -kSize);
10
- return Boolean::New(info.Env(), tmp == baseline);
11
- }
12
-
13
- Object InitMemoryManagement(Env env) {
14
- Object exports = Object::New(env);
15
- exports["externalAllocatedMemory"] = Function::New(env, externalAllocatedMemory);
16
- return exports;
17
- }
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
-
5
- module.exports = require('./common').runTest(test);
6
-
7
- function test(binding) {
8
- assert.strictEqual(binding.memory_management.externalAllocatedMemory(), true)
9
- }
@@ -1,23 +0,0 @@
1
- #include "napi.h"
2
-
3
- using namespace Napi;
4
-
5
- Value createExternal(const CallbackInfo& info) {
6
- FunctionReference ref = Reference<Function>::New(info[0].As<Function>(), 1);
7
- auto ret = External<char>::New(
8
- info.Env(),
9
- nullptr,
10
- [ref = std::move(ref)](Napi::Env /*env*/, char* /*data*/) {
11
- ref.Call({});
12
- });
13
-
14
- return ret;
15
- }
16
-
17
- Object InitMovableCallbacks(Env env) {
18
- Object exports = Object::New(env);
19
-
20
- exports["createExternal"] = Function::New(env, createExternal);
21
-
22
- return exports;
23
- }
@@ -1,21 +0,0 @@
1
- 'use strict';
2
-
3
- const common = require('./common');
4
- const testUtil = require('./testUtil');
5
-
6
- module.exports = require('./common').runTest(binding => test(binding.movable_callbacks));
7
-
8
- async function test(binding) {
9
- await testUtil.runGCTests([
10
- 'External',
11
- () => {
12
- const fn = common.mustCall(() => {
13
- // noop
14
- }, 1);
15
- const external = binding.createExternal(fn);
16
- },
17
- () => {
18
- // noop, wait for gc
19
- }
20
- ]);
21
- }
@@ -1,108 +0,0 @@
1
- #include "napi.h"
2
-
3
- using namespace Napi;
4
-
5
- const char* testValueUtf8 = "123456789";
6
- const char16_t* testValueUtf16 = NAPI_WIDE_TEXT("123456789");
7
-
8
- Value EchoString(const CallbackInfo& info) {
9
- String value = info[0].As<String>();
10
- String encoding = info[1].As<String>();
11
-
12
- if (encoding.Utf8Value() == "utf8") {
13
- return String::New(info.Env(), value.Utf8Value().c_str());
14
- } else if (encoding.Utf8Value() == "utf16") {
15
- return String::New(info.Env(), value.Utf16Value().c_str());
16
- } else {
17
- Error::New(info.Env(), "Invalid encoding.").ThrowAsJavaScriptException();
18
- return Value();
19
- }
20
- }
21
-
22
- Value CreateString(const CallbackInfo& info) {
23
- String encoding = info[0].As<String>();
24
- Number length = info[1].As<Number>();
25
-
26
- if (encoding.Utf8Value() == "utf8") {
27
- if (length.IsUndefined()) {
28
- return String::New(info.Env(), testValueUtf8);
29
- } else {
30
- return String::New(info.Env(), testValueUtf8, length.Uint32Value());
31
- }
32
- } else if (encoding.Utf8Value() == "utf16") {
33
- if (length.IsUndefined()) {
34
- return String::New(info.Env(), testValueUtf16);
35
- } else {
36
- return String::New(info.Env(), testValueUtf16, length.Uint32Value());
37
- }
38
- } else {
39
- Error::New(info.Env(), "Invalid encoding.").ThrowAsJavaScriptException();
40
- return Value();
41
- }
42
- }
43
-
44
- Value CheckString(const CallbackInfo& info) {
45
- String value = info[0].As<String>();
46
- String encoding = info[1].As<String>();
47
- Number length = info[2].As<Number>();
48
-
49
- if (encoding.Utf8Value() == "utf8") {
50
- std::string testValue = testValueUtf8;
51
- if (!length.IsUndefined()) {
52
- testValue = testValue.substr(0, length.Uint32Value());
53
- }
54
-
55
- std::string stringValue = value;
56
- return Boolean::New(info.Env(), stringValue == testValue);
57
- } else if (encoding.Utf8Value() == "utf16") {
58
- std::u16string testValue = testValueUtf16;
59
- if (!length.IsUndefined()) {
60
- testValue = testValue.substr(0, length.Uint32Value());
61
- }
62
-
63
- std::u16string stringValue = value;
64
- return Boolean::New(info.Env(), stringValue == testValue);
65
- } else {
66
- Error::New(info.Env(), "Invalid encoding.").ThrowAsJavaScriptException();
67
- return Value();
68
- }
69
- }
70
-
71
- Value CreateSymbol(const CallbackInfo& info) {
72
- String description = info[0].As<String>();
73
-
74
- if (!description.IsUndefined()) {
75
- return Symbol::New(info.Env(), description);
76
- } else {
77
- return Symbol::New(info.Env());
78
- }
79
- }
80
-
81
- Value CheckSymbol(const CallbackInfo& info) {
82
- return Boolean::New(info.Env(), info[0].Type() == napi_symbol);
83
- }
84
-
85
- void NullStringShouldThrow(const CallbackInfo& info) {
86
- const char* nullStr = nullptr;
87
- String::New(info.Env(), nullStr);
88
- }
89
-
90
- void NullString16ShouldThrow(const CallbackInfo& info) {
91
- const char16_t* nullStr = nullptr;
92
- String::New(info.Env(), nullStr);
93
- }
94
-
95
- Object InitName(Env env) {
96
- Object exports = Object::New(env);
97
-
98
- exports["echoString"] = Function::New(env, EchoString);
99
- exports["createString"] = Function::New(env, CreateString);
100
- exports["nullStringShouldThrow"] = Function::New(env, NullStringShouldThrow);
101
- exports["nullString16ShouldThrow"] =
102
- Function::New(env, NullString16ShouldThrow);
103
- exports["checkString"] = Function::New(env, CheckString);
104
- exports["createSymbol"] = Function::New(env, CreateSymbol);
105
- exports["checkSymbol"] = Function::New(env, CheckSymbol);
106
-
107
- return exports;
108
- }
@@ -1,59 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
-
5
- module.exports = require('./common').runTest(test);
6
-
7
- function test(binding) {
8
- const expected = '123456789';
9
-
10
-
11
- assert.throws(binding.name.nullStringShouldThrow, {
12
- name: 'Error',
13
- message: 'Error in native callback',
14
- });
15
- assert.ok(binding.name.checkString(expected, 'utf8'));
16
- assert.ok(binding.name.checkString(expected, 'utf16'));
17
- assert.ok(binding.name.checkString(expected.substr(0, 3), 'utf8', 3));
18
- assert.ok(binding.name.checkString(expected.substr(0, 3), 'utf16', 3));
19
-
20
- const str1 = binding.name.createString('utf8');
21
- assert.strictEqual(str1, expected);
22
- assert.ok(binding.name.checkString(str1, 'utf8'));
23
- assert.ok(binding.name.checkString(str1, 'utf16'));
24
-
25
- const substr1 = binding.name.createString('utf8', 3);
26
- assert.strictEqual(substr1, expected.substr(0, 3));
27
- assert.ok(binding.name.checkString(substr1, 'utf8', 3));
28
- assert.ok(binding.name.checkString(substr1, 'utf16', 3));
29
-
30
- const str2 = binding.name.createString('utf16');
31
- assert.strictEqual(str1, expected);
32
- assert.ok(binding.name.checkString(str2, 'utf8'));
33
- assert.ok(binding.name.checkString(str2, 'utf16'));
34
-
35
- const substr2 = binding.name.createString('utf16', 3);
36
- assert.strictEqual(substr1, expected.substr(0, 3));
37
- assert.ok(binding.name.checkString(substr2, 'utf8', 3));
38
- assert.ok(binding.name.checkString(substr2, 'utf16', 3));
39
-
40
- assert.ok(binding.name.checkSymbol(Symbol()));
41
- assert.ok(binding.name.checkSymbol(Symbol('test')));
42
-
43
- const sym1 = binding.name.createSymbol();
44
- assert.strictEqual(typeof sym1, 'symbol');
45
- assert.ok(binding.name.checkSymbol(sym1));
46
-
47
- const sym2 = binding.name.createSymbol('test');
48
- assert.strictEqual(typeof sym2, 'symbol');
49
- assert.ok(binding.name.checkSymbol(sym1));
50
-
51
- // Check for off-by-one errors which might only appear for strings of certain sizes,
52
- // due to how std::string increments its capacity in chunks.
53
- const longString = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
54
- for (let i = 10; i <= longString.length; i++) {
55
- const str = longString.substr(0, i);
56
- assert.strictEqual(binding.name.echoString(str, 'utf8'), str);
57
- assert.strictEqual(binding.name.echoString(str, 'utf16'), str);
58
- }
59
- }
@@ -1,14 +0,0 @@
1
- // Makes sure that child processes are spawned appropriately.
2
- exports.spawnSync = function(command, args, options) {
3
- if (require('../index').needsFlag) {
4
- args.splice(0, 0, '--napi-modules');
5
- }
6
- return require('child_process').spawnSync(command, args, options);
7
- };
8
-
9
- exports.spawn = function(command, args, options) {
10
- if (require('../index').needsFlag) {
11
- args.splice(0, 0, '--napi-modules');
12
- }
13
- return require('child_process').spawn(command, args, options);
14
- };
@@ -1,38 +0,0 @@
1
- #include "napi.h"
2
- #include "test_helper.h"
3
-
4
- using namespace Napi;
5
-
6
- Value DeletePropertyWithUint32(const CallbackInfo& info) {
7
- Object obj = info[0].As<Object>();
8
- Number key = info[1].As<Number>();
9
- return Boolean::New(info.Env(), MaybeUnwrap(obj.Delete(key.Uint32Value())));
10
- }
11
-
12
- Value DeletePropertyWithNapiValue(const CallbackInfo& info) {
13
- Object obj = info[0].As<Object>();
14
- Name key = info[1].As<Name>();
15
- return Boolean::New(
16
- info.Env(),
17
- MaybeUnwrapOr(obj.Delete(static_cast<napi_value>(key)), false));
18
- }
19
-
20
- Value DeletePropertyWithNapiWrapperValue(const CallbackInfo& info) {
21
- Object obj = info[0].As<Object>();
22
- Name key = info[1].As<Name>();
23
- return Boolean::New(info.Env(), MaybeUnwrapOr(obj.Delete(key), false));
24
- }
25
-
26
- Value DeletePropertyWithCStyleString(const CallbackInfo& info) {
27
- Object obj = info[0].As<Object>();
28
- String jsKey = info[1].As<String>();
29
- return Boolean::New(
30
- info.Env(), MaybeUnwrapOr(obj.Delete(jsKey.Utf8Value().c_str()), false));
31
- }
32
-
33
- Value DeletePropertyWithCppStyleString(const CallbackInfo& info) {
34
- Object obj = info[0].As<Object>();
35
- String jsKey = info[1].As<String>();
36
- return Boolean::New(info.Env(),
37
- MaybeUnwrapOr(obj.Delete(jsKey.Utf8Value()), false));
38
- }