koffi 1.0.3 → 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 (271) hide show
  1. package/README.md +48 -22
  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 +130 -215
  16. package/src/abi_arm64.cc +103 -117
  17. package/src/abi_x64_sysv.cc +117 -135
  18. package/src/abi_x64_win.cc +89 -98
  19. package/src/abi_x86.cc +91 -99
  20. package/src/call.cc +164 -40
  21. package/src/call.hh +53 -31
  22. package/src/ffi.cc +163 -19
  23. package/src/ffi.hh +30 -22
  24. package/src/util.cc +0 -127
  25. package/src/util.hh +0 -16
  26. package/test/misc.c +68 -2
  27. package/vendor/libcc/libcc.hh +1 -1
  28. package/build/qemu/1.0.3/koffi_darwin_x64.tar.gz +0 -0
  29. package/build/qemu/1.0.3/koffi_freebsd_arm64.tar.gz +0 -0
  30. package/build/qemu/1.0.3/koffi_freebsd_ia32.tar.gz +0 -0
  31. package/build/qemu/1.0.3/koffi_freebsd_x64.tar.gz +0 -0
  32. package/build/qemu/1.0.3/koffi_linux_arm.tar.gz +0 -0
  33. package/build/qemu/1.0.3/koffi_linux_arm64.tar.gz +0 -0
  34. package/build/qemu/1.0.3/koffi_linux_ia32.tar.gz +0 -0
  35. package/build/qemu/1.0.3/koffi_linux_x64.tar.gz +0 -0
  36. package/build/qemu/1.0.3/koffi_win32_ia32.tar.gz +0 -0
  37. package/build/qemu/1.0.3/koffi_win32_x64.tar.gz +0 -0
  38. package/test/misc.js +0 -180
  39. package/vendor/node-addon-api/CODE_OF_CONDUCT.md +0 -4
  40. package/vendor/node-addon-api/CONTRIBUTING.md +0 -93
  41. package/vendor/node-addon-api/appveyor.yml +0 -37
  42. package/vendor/node-addon-api/benchmark/README.md +0 -47
  43. package/vendor/node-addon-api/benchmark/binding.gyp +0 -25
  44. package/vendor/node-addon-api/benchmark/function_args.cc +0 -217
  45. package/vendor/node-addon-api/benchmark/function_args.js +0 -60
  46. package/vendor/node-addon-api/benchmark/index.js +0 -34
  47. package/vendor/node-addon-api/benchmark/property_descriptor.cc +0 -91
  48. package/vendor/node-addon-api/benchmark/property_descriptor.js +0 -37
  49. package/vendor/node-addon-api/doc/addon.md +0 -163
  50. package/vendor/node-addon-api/doc/array.md +0 -81
  51. package/vendor/node-addon-api/doc/array_buffer.md +0 -155
  52. package/vendor/node-addon-api/doc/async_context.md +0 -86
  53. package/vendor/node-addon-api/doc/async_operations.md +0 -31
  54. package/vendor/node-addon-api/doc/async_worker.md +0 -427
  55. package/vendor/node-addon-api/doc/async_worker_variants.md +0 -557
  56. package/vendor/node-addon-api/doc/bigint.md +0 -97
  57. package/vendor/node-addon-api/doc/boolean.md +0 -68
  58. package/vendor/node-addon-api/doc/buffer.md +0 -150
  59. package/vendor/node-addon-api/doc/callback_scope.md +0 -54
  60. package/vendor/node-addon-api/doc/callbackinfo.md +0 -97
  61. package/vendor/node-addon-api/doc/checker-tool.md +0 -32
  62. package/vendor/node-addon-api/doc/class_property_descriptor.md +0 -123
  63. package/vendor/node-addon-api/doc/cmake-js.md +0 -68
  64. package/vendor/node-addon-api/doc/conversion-tool.md +0 -28
  65. package/vendor/node-addon-api/doc/creating_a_release.md +0 -62
  66. package/vendor/node-addon-api/doc/dataview.md +0 -248
  67. package/vendor/node-addon-api/doc/date.md +0 -68
  68. package/vendor/node-addon-api/doc/env.md +0 -196
  69. package/vendor/node-addon-api/doc/error.md +0 -120
  70. package/vendor/node-addon-api/doc/error_handling.md +0 -254
  71. package/vendor/node-addon-api/doc/escapable_handle_scope.md +0 -80
  72. package/vendor/node-addon-api/doc/external.md +0 -63
  73. package/vendor/node-addon-api/doc/function.md +0 -402
  74. package/vendor/node-addon-api/doc/function_reference.md +0 -238
  75. package/vendor/node-addon-api/doc/generator.md +0 -13
  76. package/vendor/node-addon-api/doc/handle_scope.md +0 -63
  77. package/vendor/node-addon-api/doc/hierarchy.md +0 -91
  78. package/vendor/node-addon-api/doc/instance_wrap.md +0 -408
  79. package/vendor/node-addon-api/doc/maybe.md +0 -76
  80. package/vendor/node-addon-api/doc/memory_management.md +0 -27
  81. package/vendor/node-addon-api/doc/name.md +0 -29
  82. package/vendor/node-addon-api/doc/node-gyp.md +0 -82
  83. package/vendor/node-addon-api/doc/number.md +0 -163
  84. package/vendor/node-addon-api/doc/object.md +0 -411
  85. package/vendor/node-addon-api/doc/object_lifetime_management.md +0 -83
  86. package/vendor/node-addon-api/doc/object_reference.md +0 -117
  87. package/vendor/node-addon-api/doc/object_wrap.md +0 -588
  88. package/vendor/node-addon-api/doc/prebuild_tools.md +0 -16
  89. package/vendor/node-addon-api/doc/promises.md +0 -79
  90. package/vendor/node-addon-api/doc/property_descriptor.md +0 -286
  91. package/vendor/node-addon-api/doc/propertylvalue.md +0 -50
  92. package/vendor/node-addon-api/doc/range_error.md +0 -59
  93. package/vendor/node-addon-api/doc/reference.md +0 -113
  94. package/vendor/node-addon-api/doc/setup.md +0 -110
  95. package/vendor/node-addon-api/doc/string.md +0 -93
  96. package/vendor/node-addon-api/doc/symbol.md +0 -61
  97. package/vendor/node-addon-api/doc/threadsafe.md +0 -121
  98. package/vendor/node-addon-api/doc/threadsafe_function.md +0 -290
  99. package/vendor/node-addon-api/doc/type_error.md +0 -59
  100. package/vendor/node-addon-api/doc/typed_array.md +0 -78
  101. package/vendor/node-addon-api/doc/typed_array_of.md +0 -137
  102. package/vendor/node-addon-api/doc/typed_threadsafe_function.md +0 -306
  103. package/vendor/node-addon-api/doc/value.md +0 -340
  104. package/vendor/node-addon-api/doc/version_management.md +0 -43
  105. package/vendor/node-addon-api/package.json +0 -415
  106. package/vendor/node-addon-api/test/README.md +0 -91
  107. package/vendor/node-addon-api/test/addon.cc +0 -36
  108. package/vendor/node-addon-api/test/addon.js +0 -11
  109. package/vendor/node-addon-api/test/addon_build/index.js +0 -49
  110. package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +0 -17
  111. package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +0 -62
  112. package/vendor/node-addon-api/test/addon_build/tpl/index.js +0 -9
  113. package/vendor/node-addon-api/test/addon_build/tpl/package.json +0 -11
  114. package/vendor/node-addon-api/test/addon_data.cc +0 -99
  115. package/vendor/node-addon-api/test/addon_data.js +0 -46
  116. package/vendor/node-addon-api/test/array_buffer.cc +0 -243
  117. package/vendor/node-addon-api/test/array_buffer.js +0 -69
  118. package/vendor/node-addon-api/test/async_context.cc +0 -36
  119. package/vendor/node-addon-api/test/async_context.js +0 -122
  120. package/vendor/node-addon-api/test/async_progress_queue_worker.cc +0 -83
  121. package/vendor/node-addon-api/test/async_progress_queue_worker.js +0 -46
  122. package/vendor/node-addon-api/test/async_progress_worker.cc +0 -134
  123. package/vendor/node-addon-api/test/async_progress_worker.js +0 -61
  124. package/vendor/node-addon-api/test/async_worker.cc +0 -106
  125. package/vendor/node-addon-api/test/async_worker.js +0 -179
  126. package/vendor/node-addon-api/test/async_worker_nocallback.js +0 -13
  127. package/vendor/node-addon-api/test/async_worker_persistent.cc +0 -63
  128. package/vendor/node-addon-api/test/async_worker_persistent.js +0 -24
  129. package/vendor/node-addon-api/test/basic_types/array.cc +0 -40
  130. package/vendor/node-addon-api/test/basic_types/array.js +0 -35
  131. package/vendor/node-addon-api/test/basic_types/boolean.cc +0 -38
  132. package/vendor/node-addon-api/test/basic_types/boolean.js +0 -35
  133. package/vendor/node-addon-api/test/basic_types/number.cc +0 -99
  134. package/vendor/node-addon-api/test/basic_types/number.js +0 -114
  135. package/vendor/node-addon-api/test/basic_types/value.cc +0 -120
  136. package/vendor/node-addon-api/test/basic_types/value.js +0 -133
  137. package/vendor/node-addon-api/test/bigint.cc +0 -91
  138. package/vendor/node-addon-api/test/bigint.js +0 -53
  139. package/vendor/node-addon-api/test/binding-swallowexcept.cc +0 -12
  140. package/vendor/node-addon-api/test/binding.cc +0 -173
  141. package/vendor/node-addon-api/test/binding.gyp +0 -124
  142. package/vendor/node-addon-api/test/buffer.cc +0 -183
  143. package/vendor/node-addon-api/test/buffer.js +0 -69
  144. package/vendor/node-addon-api/test/callbackscope.cc +0 -22
  145. package/vendor/node-addon-api/test/callbackscope.js +0 -49
  146. package/vendor/node-addon-api/test/common/index.js +0 -114
  147. package/vendor/node-addon-api/test/common/test_helper.h +0 -71
  148. package/vendor/node-addon-api/test/dataview/dataview.cc +0 -48
  149. package/vendor/node-addon-api/test/dataview/dataview.js +0 -35
  150. package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +0 -115
  151. package/vendor/node-addon-api/test/dataview/dataview_read_write.js +0 -90
  152. package/vendor/node-addon-api/test/date.cc +0 -44
  153. package/vendor/node-addon-api/test/date.js +0 -18
  154. package/vendor/node-addon-api/test/env_cleanup.cc +0 -88
  155. package/vendor/node-addon-api/test/env_cleanup.js +0 -56
  156. package/vendor/node-addon-api/test/error.cc +0 -287
  157. package/vendor/node-addon-api/test/error.js +0 -81
  158. package/vendor/node-addon-api/test/error_handling_for_primitives.cc +0 -13
  159. package/vendor/node-addon-api/test/error_handling_for_primitives.js +0 -29
  160. package/vendor/node-addon-api/test/error_terminating_environment.js +0 -95
  161. package/vendor/node-addon-api/test/external.cc +0 -81
  162. package/vendor/node-addon-api/test/external.js +0 -88
  163. package/vendor/node-addon-api/test/function.cc +0 -324
  164. package/vendor/node-addon-api/test/function.js +0 -133
  165. package/vendor/node-addon-api/test/function_reference.cc +0 -202
  166. package/vendor/node-addon-api/test/function_reference.js +0 -157
  167. package/vendor/node-addon-api/test/globalObject/global_object.cc +0 -61
  168. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +0 -31
  169. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +0 -61
  170. package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +0 -40
  171. package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +0 -57
  172. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +0 -28
  173. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +0 -48
  174. package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +0 -31
  175. package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +0 -58
  176. package/vendor/node-addon-api/test/handlescope.cc +0 -60
  177. package/vendor/node-addon-api/test/handlescope.js +0 -14
  178. package/vendor/node-addon-api/test/index.js +0 -159
  179. package/vendor/node-addon-api/test/maybe/check.cc +0 -23
  180. package/vendor/node-addon-api/test/maybe/index.js +0 -38
  181. package/vendor/node-addon-api/test/memory_management.cc +0 -17
  182. package/vendor/node-addon-api/test/memory_management.js +0 -9
  183. package/vendor/node-addon-api/test/movable_callbacks.cc +0 -23
  184. package/vendor/node-addon-api/test/movable_callbacks.js +0 -21
  185. package/vendor/node-addon-api/test/name.cc +0 -108
  186. package/vendor/node-addon-api/test/name.js +0 -59
  187. package/vendor/node-addon-api/test/napi_child.js +0 -14
  188. package/vendor/node-addon-api/test/object/delete_property.cc +0 -38
  189. package/vendor/node-addon-api/test/object/delete_property.js +0 -41
  190. package/vendor/node-addon-api/test/object/finalizer.cc +0 -29
  191. package/vendor/node-addon-api/test/object/finalizer.js +0 -28
  192. package/vendor/node-addon-api/test/object/get_property.cc +0 -34
  193. package/vendor/node-addon-api/test/object/get_property.js +0 -40
  194. package/vendor/node-addon-api/test/object/has_own_property.cc +0 -34
  195. package/vendor/node-addon-api/test/object/has_own_property.js +0 -34
  196. package/vendor/node-addon-api/test/object/has_property.cc +0 -38
  197. package/vendor/node-addon-api/test/object/has_property.js +0 -37
  198. package/vendor/node-addon-api/test/object/object.cc +0 -350
  199. package/vendor/node-addon-api/test/object/object.js +0 -217
  200. package/vendor/node-addon-api/test/object/object_deprecated.cc +0 -66
  201. package/vendor/node-addon-api/test/object/object_deprecated.js +0 -47
  202. package/vendor/node-addon-api/test/object/object_freeze_seal.cc +0 -25
  203. package/vendor/node-addon-api/test/object/object_freeze_seal.js +0 -61
  204. package/vendor/node-addon-api/test/object/set_property.cc +0 -45
  205. package/vendor/node-addon-api/test/object/set_property.js +0 -30
  206. package/vendor/node-addon-api/test/object/subscript_operator.cc +0 -58
  207. package/vendor/node-addon-api/test/object/subscript_operator.js +0 -17
  208. package/vendor/node-addon-api/test/object_reference.cc +0 -219
  209. package/vendor/node-addon-api/test/object_reference.js +0 -259
  210. package/vendor/node-addon-api/test/objectwrap.cc +0 -268
  211. package/vendor/node-addon-api/test/objectwrap.js +0 -284
  212. package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +0 -26
  213. package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +0 -18
  214. package/vendor/node-addon-api/test/objectwrap_function.cc +0 -45
  215. package/vendor/node-addon-api/test/objectwrap_function.js +0 -22
  216. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +0 -30
  217. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +0 -13
  218. package/vendor/node-addon-api/test/objectwrap_removewrap.cc +0 -45
  219. package/vendor/node-addon-api/test/objectwrap_removewrap.js +0 -40
  220. package/vendor/node-addon-api/test/objectwrap_worker_thread.js +0 -19
  221. package/vendor/node-addon-api/test/promise.cc +0 -29
  222. package/vendor/node-addon-api/test/promise.js +0 -18
  223. package/vendor/node-addon-api/test/reference.cc +0 -24
  224. package/vendor/node-addon-api/test/reference.js +0 -14
  225. package/vendor/node-addon-api/test/run_script.cc +0 -56
  226. package/vendor/node-addon-api/test/run_script.js +0 -45
  227. package/vendor/node-addon-api/test/symbol.cc +0 -79
  228. package/vendor/node-addon-api/test/symbol.js +0 -73
  229. package/vendor/node-addon-api/test/testUtil.js +0 -54
  230. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +0 -195
  231. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +0 -188
  232. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +0 -63
  233. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +0 -12
  234. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +0 -115
  235. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +0 -14
  236. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +0 -26
  237. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +0 -7
  238. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +0 -225
  239. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +0 -59
  240. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +0 -42
  241. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +0 -53
  242. package/vendor/node-addon-api/test/thunking_manual.cc +0 -140
  243. package/vendor/node-addon-api/test/thunking_manual.js +0 -17
  244. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +0 -215
  245. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +0 -188
  246. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +0 -68
  247. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +0 -12
  248. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +0 -127
  249. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +0 -14
  250. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +0 -28
  251. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +0 -7
  252. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +0 -237
  253. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +0 -59
  254. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +0 -53
  255. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +0 -53
  256. package/vendor/node-addon-api/test/typedarray-bigint.js +0 -58
  257. package/vendor/node-addon-api/test/typedarray.cc +0 -216
  258. package/vendor/node-addon-api/test/typedarray.js +0 -69
  259. package/vendor/node-addon-api/test/version_management.cc +0 -27
  260. package/vendor/node-addon-api/test/version_management.js +0 -31
  261. package/vendor/node-addon-api/unit-test/README.md +0 -28
  262. package/vendor/node-addon-api/unit-test/binding-file-template.js +0 -39
  263. package/vendor/node-addon-api/unit-test/binding.gyp +0 -72
  264. package/vendor/node-addon-api/unit-test/exceptions.js +0 -32
  265. package/vendor/node-addon-api/unit-test/generate-binding-cc.js +0 -61
  266. package/vendor/node-addon-api/unit-test/injectTestParams.js +0 -101
  267. package/vendor/node-addon-api/unit-test/listOfTestModules.js +0 -88
  268. package/vendor/node-addon-api/unit-test/matchModules.js +0 -65
  269. package/vendor/node-addon-api/unit-test/setup.js +0 -13
  270. package/vendor/node-addon-api/unit-test/spawnTask.js +0 -26
  271. 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
- }