koffi 1.1.0-beta.1 → 1.1.0-beta.4

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 (270) hide show
  1. package/CMakeLists.txt +4 -0
  2. package/README.md +20 -11
  3. package/build/qemu/1.1.0-beta.4/koffi_darwin_x64.tar.gz +0 -0
  4. package/build/qemu/1.1.0-beta.4/koffi_freebsd_arm64.tar.gz +0 -0
  5. package/build/qemu/1.1.0-beta.4/koffi_freebsd_ia32.tar.gz +0 -0
  6. package/build/qemu/1.1.0-beta.4/koffi_freebsd_x64.tar.gz +0 -0
  7. package/build/qemu/1.1.0-beta.4/koffi_linux_arm.tar.gz +0 -0
  8. package/build/qemu/1.1.0-beta.4/koffi_linux_arm64.tar.gz +0 -0
  9. package/build/qemu/1.1.0-beta.4/koffi_linux_ia32.tar.gz +0 -0
  10. package/build/qemu/1.1.0-beta.4/koffi_linux_x64.tar.gz +0 -0
  11. package/build/qemu/1.1.0-beta.4/koffi_win32_ia32.tar.gz +0 -0
  12. package/build/qemu/1.1.0-beta.4/koffi_win32_x64.tar.gz +0 -0
  13. package/package.json +1 -1
  14. package/qemu/qemu.js +1 -0
  15. package/src/abi_arm32.cc +27 -45
  16. package/src/abi_arm64.cc +58 -132
  17. package/src/abi_x64_sysv.cc +24 -7
  18. package/src/abi_x64_win.cc +3 -0
  19. package/src/abi_x86.cc +3 -0
  20. package/src/call.cc +540 -33
  21. package/src/call.hh +5 -3
  22. package/src/ffi.cc +129 -4
  23. package/src/ffi.hh +5 -1
  24. package/src/parser.cc +7 -2
  25. package/src/util.cc +72 -0
  26. package/src/util.hh +2 -0
  27. package/test/misc.c +14 -8
  28. package/vendor/node-addon-api/CODE_OF_CONDUCT.md +4 -0
  29. package/vendor/node-addon-api/CONTRIBUTING.md +93 -0
  30. package/vendor/node-addon-api/appveyor.yml +37 -0
  31. package/vendor/node-addon-api/benchmark/README.md +47 -0
  32. package/vendor/node-addon-api/benchmark/binding.gyp +25 -0
  33. package/vendor/node-addon-api/benchmark/function_args.cc +217 -0
  34. package/vendor/node-addon-api/benchmark/function_args.js +60 -0
  35. package/vendor/node-addon-api/benchmark/index.js +34 -0
  36. package/vendor/node-addon-api/benchmark/property_descriptor.cc +91 -0
  37. package/vendor/node-addon-api/benchmark/property_descriptor.js +37 -0
  38. package/vendor/node-addon-api/doc/addon.md +163 -0
  39. package/vendor/node-addon-api/doc/array.md +81 -0
  40. package/vendor/node-addon-api/doc/array_buffer.md +155 -0
  41. package/vendor/node-addon-api/doc/async_context.md +86 -0
  42. package/vendor/node-addon-api/doc/async_operations.md +31 -0
  43. package/vendor/node-addon-api/doc/async_worker.md +427 -0
  44. package/vendor/node-addon-api/doc/async_worker_variants.md +557 -0
  45. package/vendor/node-addon-api/doc/bigint.md +97 -0
  46. package/vendor/node-addon-api/doc/boolean.md +68 -0
  47. package/vendor/node-addon-api/doc/buffer.md +150 -0
  48. package/vendor/node-addon-api/doc/callback_scope.md +54 -0
  49. package/vendor/node-addon-api/doc/callbackinfo.md +97 -0
  50. package/vendor/node-addon-api/doc/checker-tool.md +32 -0
  51. package/vendor/node-addon-api/doc/class_property_descriptor.md +123 -0
  52. package/vendor/node-addon-api/doc/cmake-js.md +68 -0
  53. package/vendor/node-addon-api/doc/conversion-tool.md +28 -0
  54. package/vendor/node-addon-api/doc/creating_a_release.md +62 -0
  55. package/vendor/node-addon-api/doc/dataview.md +248 -0
  56. package/vendor/node-addon-api/doc/date.md +68 -0
  57. package/vendor/node-addon-api/doc/env.md +196 -0
  58. package/vendor/node-addon-api/doc/error.md +120 -0
  59. package/vendor/node-addon-api/doc/error_handling.md +254 -0
  60. package/vendor/node-addon-api/doc/escapable_handle_scope.md +80 -0
  61. package/vendor/node-addon-api/doc/external.md +63 -0
  62. package/vendor/node-addon-api/doc/function.md +402 -0
  63. package/vendor/node-addon-api/doc/function_reference.md +238 -0
  64. package/vendor/node-addon-api/doc/generator.md +13 -0
  65. package/vendor/node-addon-api/doc/handle_scope.md +63 -0
  66. package/vendor/node-addon-api/doc/hierarchy.md +91 -0
  67. package/vendor/node-addon-api/doc/instance_wrap.md +408 -0
  68. package/vendor/node-addon-api/doc/maybe.md +76 -0
  69. package/vendor/node-addon-api/doc/memory_management.md +27 -0
  70. package/vendor/node-addon-api/doc/name.md +29 -0
  71. package/vendor/node-addon-api/doc/node-gyp.md +82 -0
  72. package/vendor/node-addon-api/doc/number.md +163 -0
  73. package/vendor/node-addon-api/doc/object.md +411 -0
  74. package/vendor/node-addon-api/doc/object_lifetime_management.md +83 -0
  75. package/vendor/node-addon-api/doc/object_reference.md +117 -0
  76. package/vendor/node-addon-api/doc/object_wrap.md +588 -0
  77. package/vendor/node-addon-api/doc/prebuild_tools.md +16 -0
  78. package/vendor/node-addon-api/doc/promises.md +79 -0
  79. package/vendor/node-addon-api/doc/property_descriptor.md +286 -0
  80. package/vendor/node-addon-api/doc/propertylvalue.md +50 -0
  81. package/vendor/node-addon-api/doc/range_error.md +59 -0
  82. package/vendor/node-addon-api/doc/reference.md +113 -0
  83. package/vendor/node-addon-api/doc/setup.md +110 -0
  84. package/vendor/node-addon-api/doc/string.md +93 -0
  85. package/vendor/node-addon-api/doc/symbol.md +61 -0
  86. package/vendor/node-addon-api/doc/threadsafe.md +121 -0
  87. package/vendor/node-addon-api/doc/threadsafe_function.md +290 -0
  88. package/vendor/node-addon-api/doc/type_error.md +59 -0
  89. package/vendor/node-addon-api/doc/typed_array.md +78 -0
  90. package/vendor/node-addon-api/doc/typed_array_of.md +137 -0
  91. package/vendor/node-addon-api/doc/typed_threadsafe_function.md +306 -0
  92. package/vendor/node-addon-api/doc/value.md +340 -0
  93. package/vendor/node-addon-api/doc/version_management.md +43 -0
  94. package/vendor/node-addon-api/package.json +415 -0
  95. package/vendor/node-addon-api/test/README.md +91 -0
  96. package/vendor/node-addon-api/test/addon.cc +36 -0
  97. package/vendor/node-addon-api/test/addon.js +11 -0
  98. package/vendor/node-addon-api/test/addon_build/index.js +49 -0
  99. package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +17 -0
  100. package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +62 -0
  101. package/vendor/node-addon-api/test/addon_build/tpl/index.js +9 -0
  102. package/vendor/node-addon-api/test/addon_build/tpl/package.json +11 -0
  103. package/vendor/node-addon-api/test/addon_data.cc +99 -0
  104. package/vendor/node-addon-api/test/addon_data.js +46 -0
  105. package/vendor/node-addon-api/test/array_buffer.cc +243 -0
  106. package/vendor/node-addon-api/test/array_buffer.js +69 -0
  107. package/vendor/node-addon-api/test/async_context.cc +36 -0
  108. package/vendor/node-addon-api/test/async_context.js +122 -0
  109. package/vendor/node-addon-api/test/async_progress_queue_worker.cc +83 -0
  110. package/vendor/node-addon-api/test/async_progress_queue_worker.js +46 -0
  111. package/vendor/node-addon-api/test/async_progress_worker.cc +134 -0
  112. package/vendor/node-addon-api/test/async_progress_worker.js +61 -0
  113. package/vendor/node-addon-api/test/async_worker.cc +106 -0
  114. package/vendor/node-addon-api/test/async_worker.js +179 -0
  115. package/vendor/node-addon-api/test/async_worker_nocallback.js +13 -0
  116. package/vendor/node-addon-api/test/async_worker_persistent.cc +63 -0
  117. package/vendor/node-addon-api/test/async_worker_persistent.js +24 -0
  118. package/vendor/node-addon-api/test/basic_types/array.cc +40 -0
  119. package/vendor/node-addon-api/test/basic_types/array.js +35 -0
  120. package/vendor/node-addon-api/test/basic_types/boolean.cc +38 -0
  121. package/vendor/node-addon-api/test/basic_types/boolean.js +35 -0
  122. package/vendor/node-addon-api/test/basic_types/number.cc +99 -0
  123. package/vendor/node-addon-api/test/basic_types/number.js +114 -0
  124. package/vendor/node-addon-api/test/basic_types/value.cc +120 -0
  125. package/vendor/node-addon-api/test/basic_types/value.js +133 -0
  126. package/vendor/node-addon-api/test/bigint.cc +91 -0
  127. package/vendor/node-addon-api/test/bigint.js +53 -0
  128. package/vendor/node-addon-api/test/binding-swallowexcept.cc +12 -0
  129. package/vendor/node-addon-api/test/binding.cc +173 -0
  130. package/vendor/node-addon-api/test/binding.gyp +124 -0
  131. package/vendor/node-addon-api/test/buffer.cc +183 -0
  132. package/vendor/node-addon-api/test/buffer.js +69 -0
  133. package/vendor/node-addon-api/test/callbackscope.cc +22 -0
  134. package/vendor/node-addon-api/test/callbackscope.js +49 -0
  135. package/vendor/node-addon-api/test/common/index.js +114 -0
  136. package/vendor/node-addon-api/test/common/test_helper.h +71 -0
  137. package/vendor/node-addon-api/test/dataview/dataview.cc +48 -0
  138. package/vendor/node-addon-api/test/dataview/dataview.js +35 -0
  139. package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +115 -0
  140. package/vendor/node-addon-api/test/dataview/dataview_read_write.js +90 -0
  141. package/vendor/node-addon-api/test/date.cc +44 -0
  142. package/vendor/node-addon-api/test/date.js +18 -0
  143. package/vendor/node-addon-api/test/env_cleanup.cc +88 -0
  144. package/vendor/node-addon-api/test/env_cleanup.js +56 -0
  145. package/vendor/node-addon-api/test/error.cc +287 -0
  146. package/vendor/node-addon-api/test/error.js +81 -0
  147. package/vendor/node-addon-api/test/error_handling_for_primitives.cc +13 -0
  148. package/vendor/node-addon-api/test/error_handling_for_primitives.js +29 -0
  149. package/vendor/node-addon-api/test/error_terminating_environment.js +95 -0
  150. package/vendor/node-addon-api/test/external.cc +81 -0
  151. package/vendor/node-addon-api/test/external.js +88 -0
  152. package/vendor/node-addon-api/test/function.cc +324 -0
  153. package/vendor/node-addon-api/test/function.js +133 -0
  154. package/vendor/node-addon-api/test/function_reference.cc +202 -0
  155. package/vendor/node-addon-api/test/function_reference.js +157 -0
  156. package/vendor/node-addon-api/test/globalObject/global_object.cc +61 -0
  157. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +31 -0
  158. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +61 -0
  159. package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +40 -0
  160. package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +57 -0
  161. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +28 -0
  162. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +48 -0
  163. package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +31 -0
  164. package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +58 -0
  165. package/vendor/node-addon-api/test/handlescope.cc +60 -0
  166. package/vendor/node-addon-api/test/handlescope.js +14 -0
  167. package/vendor/node-addon-api/test/index.js +159 -0
  168. package/vendor/node-addon-api/test/maybe/check.cc +23 -0
  169. package/vendor/node-addon-api/test/maybe/index.js +38 -0
  170. package/vendor/node-addon-api/test/memory_management.cc +17 -0
  171. package/vendor/node-addon-api/test/memory_management.js +9 -0
  172. package/vendor/node-addon-api/test/movable_callbacks.cc +23 -0
  173. package/vendor/node-addon-api/test/movable_callbacks.js +21 -0
  174. package/vendor/node-addon-api/test/name.cc +108 -0
  175. package/vendor/node-addon-api/test/name.js +59 -0
  176. package/vendor/node-addon-api/test/napi_child.js +14 -0
  177. package/vendor/node-addon-api/test/object/delete_property.cc +38 -0
  178. package/vendor/node-addon-api/test/object/delete_property.js +41 -0
  179. package/vendor/node-addon-api/test/object/finalizer.cc +29 -0
  180. package/vendor/node-addon-api/test/object/finalizer.js +28 -0
  181. package/vendor/node-addon-api/test/object/get_property.cc +34 -0
  182. package/vendor/node-addon-api/test/object/get_property.js +40 -0
  183. package/vendor/node-addon-api/test/object/has_own_property.cc +34 -0
  184. package/vendor/node-addon-api/test/object/has_own_property.js +34 -0
  185. package/vendor/node-addon-api/test/object/has_property.cc +38 -0
  186. package/vendor/node-addon-api/test/object/has_property.js +37 -0
  187. package/vendor/node-addon-api/test/object/object.cc +350 -0
  188. package/vendor/node-addon-api/test/object/object.js +217 -0
  189. package/vendor/node-addon-api/test/object/object_deprecated.cc +66 -0
  190. package/vendor/node-addon-api/test/object/object_deprecated.js +47 -0
  191. package/vendor/node-addon-api/test/object/object_freeze_seal.cc +25 -0
  192. package/vendor/node-addon-api/test/object/object_freeze_seal.js +61 -0
  193. package/vendor/node-addon-api/test/object/set_property.cc +45 -0
  194. package/vendor/node-addon-api/test/object/set_property.js +30 -0
  195. package/vendor/node-addon-api/test/object/subscript_operator.cc +58 -0
  196. package/vendor/node-addon-api/test/object/subscript_operator.js +17 -0
  197. package/vendor/node-addon-api/test/object_reference.cc +219 -0
  198. package/vendor/node-addon-api/test/object_reference.js +259 -0
  199. package/vendor/node-addon-api/test/objectwrap.cc +268 -0
  200. package/vendor/node-addon-api/test/objectwrap.js +284 -0
  201. package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +26 -0
  202. package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +18 -0
  203. package/vendor/node-addon-api/test/objectwrap_function.cc +45 -0
  204. package/vendor/node-addon-api/test/objectwrap_function.js +22 -0
  205. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +30 -0
  206. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +13 -0
  207. package/vendor/node-addon-api/test/objectwrap_removewrap.cc +45 -0
  208. package/vendor/node-addon-api/test/objectwrap_removewrap.js +40 -0
  209. package/vendor/node-addon-api/test/objectwrap_worker_thread.js +19 -0
  210. package/vendor/node-addon-api/test/promise.cc +29 -0
  211. package/vendor/node-addon-api/test/promise.js +18 -0
  212. package/vendor/node-addon-api/test/reference.cc +24 -0
  213. package/vendor/node-addon-api/test/reference.js +14 -0
  214. package/vendor/node-addon-api/test/run_script.cc +56 -0
  215. package/vendor/node-addon-api/test/run_script.js +45 -0
  216. package/vendor/node-addon-api/test/symbol.cc +79 -0
  217. package/vendor/node-addon-api/test/symbol.js +73 -0
  218. package/vendor/node-addon-api/test/testUtil.js +54 -0
  219. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +195 -0
  220. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +188 -0
  221. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +63 -0
  222. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +12 -0
  223. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +115 -0
  224. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +14 -0
  225. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +26 -0
  226. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +7 -0
  227. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +225 -0
  228. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +59 -0
  229. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +42 -0
  230. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +53 -0
  231. package/vendor/node-addon-api/test/thunking_manual.cc +140 -0
  232. package/vendor/node-addon-api/test/thunking_manual.js +17 -0
  233. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +215 -0
  234. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +188 -0
  235. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +68 -0
  236. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +12 -0
  237. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +127 -0
  238. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +14 -0
  239. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +28 -0
  240. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +7 -0
  241. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +237 -0
  242. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +59 -0
  243. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +53 -0
  244. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +53 -0
  245. package/vendor/node-addon-api/test/typedarray-bigint.js +58 -0
  246. package/vendor/node-addon-api/test/typedarray.cc +216 -0
  247. package/vendor/node-addon-api/test/typedarray.js +69 -0
  248. package/vendor/node-addon-api/test/version_management.cc +27 -0
  249. package/vendor/node-addon-api/test/version_management.js +31 -0
  250. package/vendor/node-addon-api/unit-test/README.md +28 -0
  251. package/vendor/node-addon-api/unit-test/binding-file-template.js +39 -0
  252. package/vendor/node-addon-api/unit-test/binding.gyp +72 -0
  253. package/vendor/node-addon-api/unit-test/exceptions.js +32 -0
  254. package/vendor/node-addon-api/unit-test/generate-binding-cc.js +61 -0
  255. package/vendor/node-addon-api/unit-test/injectTestParams.js +101 -0
  256. package/vendor/node-addon-api/unit-test/listOfTestModules.js +88 -0
  257. package/vendor/node-addon-api/unit-test/matchModules.js +65 -0
  258. package/vendor/node-addon-api/unit-test/setup.js +13 -0
  259. package/vendor/node-addon-api/unit-test/spawnTask.js +26 -0
  260. package/vendor/node-addon-api/unit-test/test.js +30 -0
  261. package/build/qemu/1.1.0-beta.1/koffi_darwin_x64.tar.gz +0 -0
  262. package/build/qemu/1.1.0-beta.1/koffi_freebsd_arm64.tar.gz +0 -0
  263. package/build/qemu/1.1.0-beta.1/koffi_freebsd_ia32.tar.gz +0 -0
  264. package/build/qemu/1.1.0-beta.1/koffi_freebsd_x64.tar.gz +0 -0
  265. package/build/qemu/1.1.0-beta.1/koffi_linux_arm.tar.gz +0 -0
  266. package/build/qemu/1.1.0-beta.1/koffi_linux_arm64.tar.gz +0 -0
  267. package/build/qemu/1.1.0-beta.1/koffi_linux_ia32.tar.gz +0 -0
  268. package/build/qemu/1.1.0-beta.1/koffi_linux_x64.tar.gz +0 -0
  269. package/build/qemu/1.1.0-beta.1/koffi_win32_ia32.tar.gz +0 -0
  270. package/build/qemu/1.1.0-beta.1/koffi_win32_x64.tar.gz +0 -0
@@ -0,0 +1,415 @@
1
+ {
2
+ "bugs": {
3
+ "url": "https://github.com/nodejs/node-addon-api/issues"
4
+ },
5
+ "contributors": [
6
+ {
7
+ "name": "Abhishek Kumar Singh",
8
+ "url": "https://github.com/abhi11210646"
9
+ },
10
+ {
11
+ "name": "Alba Mendez",
12
+ "url": "https://github.com/jmendeth"
13
+ },
14
+ {
15
+ "name": "Alexander Floh",
16
+ "url": "https://github.com/alexanderfloh"
17
+ },
18
+ {
19
+ "name": "András Timár, Dr",
20
+ "url": "https://github.com/timarandras"
21
+ },
22
+ {
23
+ "name": "Andrew Petersen",
24
+ "url": "https://github.com/kirbysayshi"
25
+ },
26
+ {
27
+ "name": "Anisha Rohra",
28
+ "url": "https://github.com/anisha-rohra"
29
+ },
30
+ {
31
+ "name": "Anna Henningsen",
32
+ "url": "https://github.com/addaleax"
33
+ },
34
+ {
35
+ "name": "Arnaud Botella",
36
+ "url": "https://github.com/BotellaA"
37
+ },
38
+ {
39
+ "name": "Arunesh Chandra",
40
+ "url": "https://github.com/aruneshchandra"
41
+ },
42
+ {
43
+ "name": "Azlan Mukhtar",
44
+ "url": "https://github.com/azlan"
45
+ },
46
+ {
47
+ "name": "Ben Berman",
48
+ "url": "https://github.com/rivertam"
49
+ },
50
+ {
51
+ "name": "Benjamin Byholm",
52
+ "url": "https://github.com/kkoopa"
53
+ },
54
+ {
55
+ "name": "Bill Gallafent",
56
+ "url": "https://github.com/gallafent"
57
+ },
58
+ {
59
+ "name": "blagoev",
60
+ "url": "https://github.com/blagoev"
61
+ },
62
+ {
63
+ "name": "Bruce A. MacNaughton",
64
+ "url": "https://github.com/bmacnaughton"
65
+ },
66
+ {
67
+ "name": "Cory Mickelson",
68
+ "url": "https://github.com/corymickelson"
69
+ },
70
+ {
71
+ "name": "Daniel Bevenius",
72
+ "url": "https://github.com/danbev"
73
+ },
74
+ {
75
+ "name": "Darshan Sen",
76
+ "url": "https://github.com/RaisinTen"
77
+ },
78
+ {
79
+ "name": "David Halls",
80
+ "url": "https://github.com/davedoesdev"
81
+ },
82
+ {
83
+ "name": "Deepak Rajamohan",
84
+ "url": "https://github.com/deepakrkris"
85
+ },
86
+ {
87
+ "name": "Dmitry Ashkadov",
88
+ "url": "https://github.com/dmitryash"
89
+ },
90
+ {
91
+ "name": "Dongjin Na",
92
+ "url": "https://github.com/nadongguri"
93
+ },
94
+ {
95
+ "name": "Doni Rubiagatra",
96
+ "url": "https://github.com/rubiagatra"
97
+ },
98
+ {
99
+ "name": "Eric Bickle",
100
+ "url": "https://github.com/ebickle"
101
+ },
102
+ {
103
+ "name": "extremeheat",
104
+ "url": "https://github.com/extremeheat"
105
+ },
106
+ {
107
+ "name": "Ferdinand Holzer",
108
+ "url": "https://github.com/fholzer"
109
+ },
110
+ {
111
+ "name": "Gabriel Schulhof",
112
+ "url": "https://github.com/gabrielschulhof"
113
+ },
114
+ {
115
+ "name": "Guenter Sandner",
116
+ "url": "https://github.com/gms1"
117
+ },
118
+ {
119
+ "name": "Gus Caplan",
120
+ "url": "https://github.com/devsnek"
121
+ },
122
+ {
123
+ "name": "Helio Frota",
124
+ "url": "https://github.com/helio-frota"
125
+ },
126
+ {
127
+ "name": "Hitesh Kanwathirtha",
128
+ "url": "https://github.com/digitalinfinity"
129
+ },
130
+ {
131
+ "name": "ikokostya",
132
+ "url": "https://github.com/ikokostya"
133
+ },
134
+ {
135
+ "name": "Jack Xia",
136
+ "url": "https://github.com/JckXia"
137
+ },
138
+ {
139
+ "name": "Jake Barnes",
140
+ "url": "https://github.com/DuBistKomisch"
141
+ },
142
+ {
143
+ "name": "Jake Yoon",
144
+ "url": "https://github.com/yjaeseok"
145
+ },
146
+ {
147
+ "name": "Jason Ginchereau",
148
+ "url": "https://github.com/jasongin"
149
+ },
150
+ {
151
+ "name": "Jeroen Janssen",
152
+ "url": "https://github.com/japj"
153
+ },
154
+ {
155
+ "name": "Jim Schlight",
156
+ "url": "https://github.com/jschlight"
157
+ },
158
+ {
159
+ "name": "Jinho Bang",
160
+ "url": "https://github.com/romandev"
161
+ },
162
+ {
163
+ "name": "José Expósito",
164
+ "url": "https://github.com/JoseExposito"
165
+ },
166
+ {
167
+ "name": "joshgarde",
168
+ "url": "https://github.com/joshgarde"
169
+ },
170
+ {
171
+ "name": "Kasumi Hanazuki",
172
+ "url": "https://github.com/hanazuki"
173
+ },
174
+ {
175
+ "name": "Kelvin",
176
+ "url": "https://github.com/kelvinhammond"
177
+ },
178
+ {
179
+ "name": "Kevin Eady",
180
+ "url": "https://github.com/KevinEady"
181
+ },
182
+ {
183
+ "name": "Kévin VOYER",
184
+ "url": "https://github.com/kecsou"
185
+ },
186
+ {
187
+ "name": "kidneysolo",
188
+ "url": "https://github.com/kidneysolo"
189
+ },
190
+ {
191
+ "name": "Koki Nishihara",
192
+ "url": "https://github.com/Nishikoh"
193
+ },
194
+ {
195
+ "name": "Konstantin Tarkus",
196
+ "url": "https://github.com/koistya"
197
+ },
198
+ {
199
+ "name": "Kyle Farnung",
200
+ "url": "https://github.com/kfarnung"
201
+ },
202
+ {
203
+ "name": "legendecas",
204
+ "url": "https://github.com/legendecas"
205
+ },
206
+ {
207
+ "name": "LongYinan",
208
+ "url": "https://github.com/Brooooooklyn"
209
+ },
210
+ {
211
+ "name": "Lovell Fuller",
212
+ "url": "https://github.com/lovell"
213
+ },
214
+ {
215
+ "name": "Luciano Martorella",
216
+ "url": "https://github.com/lmartorella"
217
+ },
218
+ {
219
+ "name": "mastergberry",
220
+ "url": "https://github.com/mastergberry"
221
+ },
222
+ {
223
+ "name": "Mathias Küsel",
224
+ "url": "https://github.com/mathiask88"
225
+ },
226
+ {
227
+ "name": "Matteo Collina",
228
+ "url": "https://github.com/mcollina"
229
+ },
230
+ {
231
+ "name": "Michael Dawson",
232
+ "url": "https://github.com/mhdawson"
233
+ },
234
+ {
235
+ "name": "Michael Price",
236
+ "url": "https://github.com/mikepricedev"
237
+ },
238
+ {
239
+ "name": "Michele Campus",
240
+ "url": "https://github.com/kYroL01"
241
+ },
242
+ {
243
+ "name": "Mikhail Cheshkov",
244
+ "url": "https://github.com/mcheshkov"
245
+ },
246
+ {
247
+ "name": "nempoBu4",
248
+ "url": "https://github.com/nempoBu4"
249
+ },
250
+ {
251
+ "name": "Nicola Del Gobbo",
252
+ "url": "https://github.com/NickNaso"
253
+ },
254
+ {
255
+ "name": "Nick Soggin",
256
+ "url": "https://github.com/iSkore"
257
+ },
258
+ {
259
+ "name": "Nikolai Vavilov",
260
+ "url": "https://github.com/seishun"
261
+ },
262
+ {
263
+ "name": "Nurbol Alpysbayev",
264
+ "url": "https://github.com/anurbol"
265
+ },
266
+ {
267
+ "name": "pacop",
268
+ "url": "https://github.com/pacop"
269
+ },
270
+ {
271
+ "name": "Philipp Renoth",
272
+ "url": "https://github.com/DaAitch"
273
+ },
274
+ {
275
+ "name": "rgerd",
276
+ "url": "https://github.com/rgerd"
277
+ },
278
+ {
279
+ "name": "Rolf Timmermans",
280
+ "url": "https://github.com/rolftimmermans"
281
+ },
282
+ {
283
+ "name": "Ross Weir",
284
+ "url": "https://github.com/ross-weir"
285
+ },
286
+ {
287
+ "name": "Ryuichi Okumura",
288
+ "url": "https://github.com/okuryu"
289
+ },
290
+ {
291
+ "name": "Sampson Gao",
292
+ "url": "https://github.com/sampsongao"
293
+ },
294
+ {
295
+ "name": "Sam Roberts",
296
+ "url": "https://github.com/sam-github"
297
+ },
298
+ {
299
+ "name": "strager",
300
+ "url": "https://github.com/strager"
301
+ },
302
+ {
303
+ "name": "Taylor Woll",
304
+ "url": "https://github.com/boingoing"
305
+ },
306
+ {
307
+ "name": "Thomas Gentilhomme",
308
+ "url": "https://github.com/fraxken"
309
+ },
310
+ {
311
+ "name": "Tim Rach",
312
+ "url": "https://github.com/timrach"
313
+ },
314
+ {
315
+ "name": "Tobias Nießen",
316
+ "url": "https://github.com/tniessen"
317
+ },
318
+ {
319
+ "name": "todoroff",
320
+ "url": "https://github.com/todoroff"
321
+ },
322
+ {
323
+ "name": "Tux3",
324
+ "url": "https://github.com/tux3"
325
+ },
326
+ {
327
+ "name": "Vlad Velmisov",
328
+ "url": "https://github.com/Velmisov"
329
+ },
330
+ {
331
+ "name": "Vladimir Morozov",
332
+ "url": "https://github.com/vmoroz"
333
+
334
+ },
335
+ {
336
+ "name": "WenheLI",
337
+ "url": "https://github.com/WenheLI"
338
+ },
339
+ {
340
+ "name": "Xuguang Mei",
341
+ "url": "https://github.com/meixg"
342
+ },
343
+ {
344
+ "name": "Yohei Kishimoto",
345
+ "url": "https://github.com/morokosi"
346
+ },
347
+ {
348
+ "name": "Yulong Wang",
349
+ "url": "https://github.com/fs-eire"
350
+ },
351
+ {
352
+ "name": "Ziqiu Zhao",
353
+ "url": "https://github.com/ZzqiZQute"
354
+ }
355
+ ],
356
+ "description": "Node.js API (Node-API)",
357
+ "devDependencies": {
358
+ "benchmark": "^2.1.4",
359
+ "bindings": "^1.5.0",
360
+ "clang-format": "^1.4.0",
361
+ "eslint": "^7.32.0",
362
+ "eslint-config-semistandard": "^16.0.0",
363
+ "eslint-config-standard": "^16.0.3",
364
+ "eslint-plugin-import": "^2.24.2",
365
+ "eslint-plugin-node": "^11.1.0",
366
+ "eslint-plugin-promise": "^5.1.0",
367
+ "fs-extra": "^9.0.1",
368
+ "path": "^0.12.7",
369
+ "pre-commit": "^1.2.2",
370
+ "safe-buffer": "^5.1.1"
371
+ },
372
+ "directories": {},
373
+ "gypfile": false,
374
+ "homepage": "https://github.com/nodejs/node-addon-api",
375
+ "keywords": [
376
+ "n-api",
377
+ "napi",
378
+ "addon",
379
+ "native",
380
+ "bindings",
381
+ "c",
382
+ "c++",
383
+ "nan",
384
+ "node-addon-api"
385
+ ],
386
+ "license": "MIT",
387
+ "main": "index.js",
388
+ "name": "node-addon-api",
389
+ "readme": "README.md",
390
+ "repository": {
391
+ "type": "git",
392
+ "url": "git://github.com/nodejs/node-addon-api.git"
393
+ },
394
+ "files": [
395
+ "*.{c,h,gyp,gypi}",
396
+ "package-support.json",
397
+ "tools/"
398
+ ],
399
+ "scripts": {
400
+ "prebenchmark": "node-gyp rebuild -C benchmark",
401
+ "benchmark": "node benchmark",
402
+ "pretest": "node-gyp rebuild -C test",
403
+ "test": "node test",
404
+ "predev": "node-gyp rebuild -C test --debug",
405
+ "dev": "node test",
406
+ "predev:incremental": "node-gyp configure build -C test --debug",
407
+ "dev:incremental": "node test",
408
+ "doc": "doxygen doc/Doxyfile",
409
+ "lint": "node tools/eslint-format && node tools/clang-format",
410
+ "lint:fix": "node tools/clang-format --fix && node tools/eslint-format --fix"
411
+ },
412
+ "pre-commit": "lint",
413
+ "version": "5.0.0",
414
+ "support": true
415
+ }
@@ -0,0 +1,91 @@
1
+ # Writing Tests
2
+
3
+ There are multiple flavors of node-addon-api test builds that cover different
4
+ build flags defined in `napi.h`:
5
+
6
+ 1. c++ exceptions enabled,
7
+ 2. c++ exceptions disabled,
8
+ 3. c++ exceptions disabled, and `NODE_ADDON_API_ENABLE_MAYBE` defined.
9
+
10
+ Functions in node-addon-api that call into JavaScript can have different
11
+ declared return types to reflect build flavor settings. For example,
12
+ `Napi::Object::Set` returns `bool` when `NODE_ADDON_API_ENABLE_MAYBE`
13
+ is not defined, and `Napi::Maybe<bool>` when `NODE_ADDON_API_ENABLE_MAYBE`
14
+ is defined. In source code, return type variants are defined as
15
+ `Napi::MaybeOrValue<>` to prevent the duplication of most of the code base.
16
+
17
+ To properly test these build flavors, all values returned by a function defined
18
+ to return `Napi::MaybeOrValue<>` should be tested by using one of the following
19
+ test helpers to handle possible JavaScript exceptions.
20
+
21
+ There are three test helper functions to conveniently convert
22
+ `Napi::MaybeOrValue<>` values to raw values.
23
+
24
+ ## MaybeUnwrap
25
+
26
+ ```cpp
27
+ template <typename T>
28
+ T MaybeUnwrap(MaybeOrValue<T> maybe);
29
+ ```
30
+
31
+ Converts `MaybeOrValue<T>` to `T` by checking that `MaybeOrValue` is NOT an
32
+ empty `Maybe`.
33
+
34
+ Returns the original value if `NODE_ADDON_API_ENABLE_MAYBE` is not defined.
35
+
36
+ Example:
37
+
38
+ ```cpp
39
+ Object obj = info[0].As<Object>();
40
+ // we are sure the parameters should not throw
41
+ Value value = MaybeUnwrap(obj->Get("foobar"));
42
+ ```
43
+
44
+ ## MaybeUnwrapOr
45
+
46
+ ```cpp
47
+ template <typename T>
48
+ T MaybeUnwrapOr(MaybeOrValue<T> maybe, const T& default_value = T());
49
+ ```
50
+
51
+ Converts `MaybeOrValue<T>` to `T` by getting the value that wrapped by the
52
+ `Maybe` or return the `default_value` if the `Maybe` is empty.
53
+
54
+ Returns the original value if `NODE_ADDON_API_ENABLE_MAYBE` is not defined.
55
+
56
+ Example:
57
+
58
+ ```cpp
59
+ Value CallWithArgs(const CallbackInfo& info) {
60
+ Function func = info[0].As<Function>();
61
+ // We don't care if the operation is throwing or not, just return it back to node-addon-api
62
+ return MaybeUnwrapOr(
63
+ func.Call(std::initializer_list<napi_value>{info[1], info[2], info[3]}));
64
+ }
65
+ ```
66
+
67
+ ## MaybeUnwrapTo
68
+
69
+ ```cpp
70
+ template <typename T>
71
+ bool MaybeUnwrapTo(MaybeOrValue<T> maybe, T* out);
72
+ ```
73
+
74
+ Converts `MaybeOrValue<T>` to `T` by getting the value that wrapped by the
75
+ e`Maybe` or return `false` if the Maybe is empty
76
+
77
+ Copies the `value` to `out` when `NODE_ADDON_API_ENABLE_MAYBE` is not defined
78
+
79
+ Example:
80
+
81
+ ```cpp
82
+ Object opts = info[0].As<Object>();
83
+ bool hasProperty = false;
84
+ // The check may throw, but we are going to suppress that.
85
+ if (MaybeUnwrapTo(opts.Has("blocking"), &hasProperty)) {
86
+ isBlocking = hasProperty &&
87
+ MaybeUnwrap(MaybeUnwrap(opts.Get("blocking")).ToBoolean());
88
+ } else {
89
+ env.GetAndClearPendingException();
90
+ }
91
+ ```
@@ -0,0 +1,36 @@
1
+ #if (NAPI_VERSION > 5)
2
+ #include <stdio.h>
3
+ #include "napi.h"
4
+
5
+ namespace {
6
+
7
+ class TestAddon : public Napi::Addon<TestAddon> {
8
+ public:
9
+ inline TestAddon(Napi::Env env, Napi::Object exports) {
10
+ DefineAddon(exports, {
11
+ InstanceMethod("increment", &TestAddon::Increment),
12
+ InstanceValue("subObject", DefineProperties(Napi::Object::New(env), {
13
+ InstanceMethod("decrement", &TestAddon::Decrement)
14
+ }))
15
+ });
16
+ }
17
+
18
+ private:
19
+ Napi::Value Increment(const Napi::CallbackInfo& info) {
20
+ return Napi::Number::New(info.Env(), ++value);
21
+ }
22
+
23
+ Napi::Value Decrement(const Napi::CallbackInfo& info) {
24
+ return Napi::Number::New(info.Env(), --value);
25
+ }
26
+
27
+ uint32_t value = 42;
28
+ };
29
+
30
+ } // end of anonymous namespace
31
+
32
+ Napi::Object InitAddon(Napi::Env env) {
33
+ return TestAddon::Init(env, Napi::Object::New(env));
34
+ }
35
+
36
+ #endif // (NAPI_VERSION > 5)
@@ -0,0 +1,11 @@
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.addon.increment(), 43);
9
+ assert.strictEqual(binding.addon.increment(), 44);
10
+ assert.strictEqual(binding.addon.subObject.decrement(), 43);
11
+ }
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ const { promisify } = require('util');
4
+ const exec = promisify(require('child_process').exec);
5
+ const { copy, remove } = require('fs-extra');
6
+ const path = require('path');
7
+ const assert = require('assert')
8
+
9
+ const ADDONS_FOLDER = path.join(__dirname, 'addons');
10
+
11
+ const addons = [
12
+ 'echo addon',
13
+ 'echo-addon'
14
+ ]
15
+
16
+ async function beforeAll(addons) {
17
+ console.log(' >Preparing native addons to build')
18
+ for (const addon of addons) {
19
+ await remove(path.join(ADDONS_FOLDER, addon));
20
+ await copy(path.join(__dirname, 'tpl'), path.join(ADDONS_FOLDER, addon));
21
+ }
22
+ }
23
+
24
+ async function test(addon) {
25
+ console.log(` >Building addon: '${addon}'`);
26
+ const { stderr, stdout } = await exec('npm install', {
27
+ cwd: path.join(ADDONS_FOLDER, addon)
28
+ })
29
+ console.log(` >Running test for: '${addon}'`);
30
+ // Disabled the checks on stderr and stdout because of this issue on npm:
31
+ // Stop using process.umask(): https://github.com/npm/cli/issues/1103
32
+ // We should enable the following checks again after the resolution of
33
+ // the reported issue.
34
+ // assert.strictEqual(stderr, '');
35
+ // assert.ok(stderr.length === 0);
36
+ // assert.ok(stdout.length > 0);
37
+ const binding = require(`${ADDONS_FOLDER}/${addon}`);
38
+ assert.strictEqual(binding.except.echo('except'), 'except');
39
+ assert.strictEqual(binding.except.echo(101), 101);
40
+ assert.strictEqual(binding.noexcept.echo('noexcept'), 'noexcept');
41
+ assert.strictEqual(binding.noexcept.echo(103), 103);
42
+ }
43
+
44
+ module.exports = (async function() {
45
+ await beforeAll(addons);
46
+ for (const addon of addons) {
47
+ await test(addon);
48
+ }
49
+ })()
@@ -0,0 +1,17 @@
1
+ #include <napi.h>
2
+
3
+ Napi::Value Echo(const Napi::CallbackInfo& info) {
4
+ Napi::Env env = info.Env();
5
+ if (info.Length() != 1) {
6
+ Napi::TypeError::New(env, "Wrong number of arguments. One argument expected.")
7
+ .ThrowAsJavaScriptException();
8
+ }
9
+ return info[0].As<Napi::Value>();
10
+ }
11
+
12
+ Napi::Object Init(Napi::Env env, Napi::Object exports) {
13
+ exports.Set(Napi::String::New(env, "echo"), Napi::Function::New(env, Echo));
14
+ return exports;
15
+ }
16
+
17
+ NODE_API_MODULE(NODE_GYP_MODULE_NAME, Init)
@@ -0,0 +1,62 @@
1
+ {
2
+ 'target_defaults': {
3
+ 'include_dirs': [
4
+ "<!(node -p \"require('node-addon-api').include_dir\")"
5
+ ],
6
+ 'variables': {
7
+ 'NAPI_VERSION%': "<!(node -p \"process.versions.napi\")",
8
+ 'disable_deprecated': "<!(node -p \"process.env['npm_config_disable_deprecated']\")"
9
+ },
10
+ 'conditions': [
11
+ ['NAPI_VERSION!=""', { 'defines': ['NAPI_VERSION=<@(NAPI_VERSION)'] } ],
12
+ ['disable_deprecated=="true"', {
13
+ 'defines': ['NODE_ADDON_API_DISABLE_DEPRECATED']
14
+ }],
15
+ ['OS=="mac"', {
16
+ 'cflags+': ['-fvisibility=hidden'],
17
+ 'xcode_settings': {
18
+ 'OTHER_CFLAGS': ['-fvisibility=hidden']
19
+ }
20
+ }]
21
+ ],
22
+ 'sources': [
23
+ 'addon.cc',
24
+ ],
25
+ },
26
+ 'targets': [
27
+ {
28
+ 'target_name': 'addon',
29
+ 'defines': [ 'NAPI_CPP_EXCEPTIONS' ],
30
+ 'cflags!': [ '-fno-exceptions' ],
31
+ 'cflags_cc!': [ '-fno-exceptions' ],
32
+ 'msvs_settings': {
33
+ 'VCCLCompilerTool': {
34
+ 'ExceptionHandling': 1,
35
+ 'EnablePREfast': 'true',
36
+ },
37
+ },
38
+ 'xcode_settings': {
39
+ 'CLANG_CXX_LIBRARY': 'libc++',
40
+ 'MACOSX_DEPLOYMENT_TARGET': '10.7',
41
+ 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES',
42
+ },
43
+ },
44
+ {
45
+ 'target_name': 'addon_noexcept',
46
+ 'defines': [ 'NAPI_DISABLE_CPP_EXCEPTIONS' ],
47
+ 'cflags': [ '-fno-exceptions' ],
48
+ 'cflags_cc': [ '-fno-exceptions' ],
49
+ 'msvs_settings': {
50
+ 'VCCLCompilerTool': {
51
+ 'ExceptionHandling': 0,
52
+ 'EnablePREfast': 'true',
53
+ },
54
+ },
55
+ 'xcode_settings': {
56
+ 'CLANG_CXX_LIBRARY': 'libc++',
57
+ 'MACOSX_DEPLOYMENT_TARGET': '10.7',
58
+ 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO',
59
+ },
60
+ },
61
+ ],
62
+ }
@@ -0,0 +1,9 @@
1
+ 'use strict'
2
+
3
+ const except = require('bindings')('addon')
4
+ const noexcept = require('bindings')('addon_noexcept')
5
+
6
+ module.exports = {
7
+ except,
8
+ noexcept
9
+ }