koffi 0.9.2 → 0.9.5

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 (416) hide show
  1. package/CMakeLists.txt +60 -60
  2. package/README.md +163 -153
  3. package/package.json +19 -18
  4. package/src/call.hh +27 -27
  5. package/src/call_arm64.cc +482 -482
  6. package/src/call_arm64_fwd.S +115 -115
  7. package/src/call_x64_sysv.cc +477 -477
  8. package/src/call_x64_sysv_fwd.S +131 -131
  9. package/src/call_x64_win.cc +243 -243
  10. package/src/call_x64_win_fwd.asm +105 -105
  11. package/src/call_x86.cc +259 -259
  12. package/src/call_x86_fwd.S +48 -48
  13. package/src/call_x86_fwd.asm +50 -50
  14. package/src/ffi.cc +504 -504
  15. package/src/ffi.hh +135 -135
  16. package/src/util.cc +296 -296
  17. package/src/util.hh +80 -80
  18. package/vendor/dragonbox/CMakeLists.txt +122 -122
  19. package/vendor/dragonbox/LICENSE-Apache2-LLVM +218 -218
  20. package/vendor/dragonbox/LICENSE-Boost +23 -23
  21. package/vendor/dragonbox/README.md +277 -277
  22. package/vendor/dragonbox/cmake/dragonboxConfig.cmake +1 -1
  23. package/vendor/dragonbox/include/dragonbox/dragonbox.h +2670 -2670
  24. package/vendor/dragonbox/include/dragonbox/dragonbox_to_chars.h +108 -108
  25. package/vendor/dragonbox/other_files/unknown_win64_vc2019.html +539 -539
  26. package/vendor/dragonbox/source/dragonbox_to_chars.cpp +303 -303
  27. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/CMakeLists.txt +23 -23
  28. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.cpp +238 -238
  29. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.h +95 -95
  30. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/grisu_exact.h +2666 -2666
  31. package/vendor/dragonbox/subproject/3rdparty/ryu/CMakeLists.txt +16 -16
  32. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/common.h +114 -114
  33. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s.c +509 -509
  34. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_full_table.h +367 -367
  35. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_intrinsics.h +357 -357
  36. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/digit_table.h +35 -35
  37. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s.c +345 -345
  38. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_full_table.h +55 -55
  39. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_intrinsics.h +128 -128
  40. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/ryu.h +46 -46
  41. package/vendor/dragonbox/subproject/3rdparty/schubfach/CMakeLists.txt +21 -21
  42. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.cc +699 -699
  43. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.h +31 -31
  44. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.cc +1354 -1354
  45. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.h +31 -31
  46. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/example_shaded_plots.m +68 -68
  47. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/license.txt +25 -25
  48. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution.m +92 -92
  49. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution_prctile.m +121 -121
  50. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_histogram_shaded.m +99 -99
  51. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_shaded.m +93 -93
  52. package/vendor/dragonbox/subproject/benchmark/CMakeLists.txt +64 -64
  53. package/vendor/dragonbox/subproject/benchmark/include/benchmark.h +40 -40
  54. package/vendor/dragonbox/subproject/benchmark/matlab/plot_benchmarks.m +21 -21
  55. package/vendor/dragonbox/subproject/benchmark/matlab/plot_digit_benchmark.m +78 -78
  56. package/vendor/dragonbox/subproject/benchmark/matlab/plot_uniform_benchmark.m +95 -95
  57. package/vendor/dragonbox/subproject/benchmark/source/benchmark.cpp +237 -237
  58. package/vendor/dragonbox/subproject/benchmark/source/dragonbox.cpp +30 -30
  59. package/vendor/dragonbox/subproject/benchmark/source/grisu_exact.cpp +36 -36
  60. package/vendor/dragonbox/subproject/benchmark/source/ryu.cpp +27 -27
  61. package/vendor/dragonbox/subproject/benchmark/source/schubfach.cpp +31 -31
  62. package/vendor/dragonbox/subproject/common/CMakeLists.txt +41 -41
  63. package/vendor/dragonbox/subproject/common/include/best_rational_approx.h +96 -96
  64. package/vendor/dragonbox/subproject/common/include/big_uint.h +217 -217
  65. package/vendor/dragonbox/subproject/common/include/continued_fractions.h +173 -173
  66. package/vendor/dragonbox/subproject/common/include/good_rational_approx.h +266 -266
  67. package/vendor/dragonbox/subproject/common/include/random_float.h +182 -182
  68. package/vendor/dragonbox/subproject/common/include/rational_continued_fractions.h +56 -56
  69. package/vendor/dragonbox/subproject/common/source/big_uint.cpp +601 -601
  70. package/vendor/dragonbox/subproject/meta/CMakeLists.txt +40 -40
  71. package/vendor/dragonbox/subproject/meta/results/binary32_generated_cache.txt +81 -81
  72. package/vendor/dragonbox/subproject/meta/results/binary64_compressed_cache_error_table.txt +9 -9
  73. package/vendor/dragonbox/subproject/meta/results/binary64_generated_cache.txt +622 -622
  74. package/vendor/dragonbox/subproject/meta/source/generate_cache.cpp +126 -126
  75. package/vendor/dragonbox/subproject/meta/source/live_test.cpp +81 -81
  76. package/vendor/dragonbox/subproject/meta/source/perf_test.cpp +104 -104
  77. package/vendor/dragonbox/subproject/meta/source/sandbox.cpp +20 -20
  78. package/vendor/dragonbox/subproject/test/CMakeLists.txt +69 -69
  79. package/vendor/dragonbox/subproject/test/results/binary32.csv +255 -255
  80. package/vendor/dragonbox/subproject/test/results/binary64.csv +2047 -2047
  81. package/vendor/dragonbox/subproject/test/results/plot_required_bits.m +17 -17
  82. package/vendor/dragonbox/subproject/test/source/test_all_shorter_interval_cases.cpp +88 -88
  83. package/vendor/dragonbox/subproject/test/source/uniform_random_test.cpp +95 -95
  84. package/vendor/dragonbox/subproject/test/source/verify_cache_precision.cpp +337 -337
  85. package/vendor/dragonbox/subproject/test/source/verify_compressed_cache.cpp +154 -154
  86. package/vendor/dragonbox/subproject/test/source/verify_fast_multiplication.cpp +168 -168
  87. package/vendor/dragonbox/subproject/test/source/verify_log_computation.cpp +251 -251
  88. package/vendor/dragonbox/subproject/test/source/verify_magic_division.cpp +113 -113
  89. package/vendor/libcc/libcc.cc +7651 -7651
  90. package/vendor/libcc/libcc.hh +4312 -4312
  91. package/vendor/node-addon-api/CHANGELOG.md +859 -859
  92. package/vendor/node-addon-api/CODE_OF_CONDUCT.md +4 -4
  93. package/vendor/node-addon-api/CONTRIBUTING.md +93 -93
  94. package/vendor/node-addon-api/LICENSE.md +12 -12
  95. package/vendor/node-addon-api/README.md +293 -293
  96. package/vendor/node-addon-api/appveyor.yml +37 -37
  97. package/vendor/node-addon-api/benchmark/README.md +47 -47
  98. package/vendor/node-addon-api/benchmark/binding.gyp +25 -25
  99. package/vendor/node-addon-api/benchmark/function_args.cc +217 -217
  100. package/vendor/node-addon-api/benchmark/function_args.js +60 -60
  101. package/vendor/node-addon-api/benchmark/index.js +34 -34
  102. package/vendor/node-addon-api/benchmark/property_descriptor.cc +91 -91
  103. package/vendor/node-addon-api/benchmark/property_descriptor.js +37 -37
  104. package/vendor/node-addon-api/common.gypi +21 -21
  105. package/vendor/node-addon-api/doc/addon.md +163 -163
  106. package/vendor/node-addon-api/doc/array.md +81 -81
  107. package/vendor/node-addon-api/doc/array_buffer.md +155 -155
  108. package/vendor/node-addon-api/doc/async_context.md +86 -86
  109. package/vendor/node-addon-api/doc/async_operations.md +31 -31
  110. package/vendor/node-addon-api/doc/async_worker.md +427 -427
  111. package/vendor/node-addon-api/doc/async_worker_variants.md +557 -557
  112. package/vendor/node-addon-api/doc/bigint.md +97 -97
  113. package/vendor/node-addon-api/doc/boolean.md +68 -68
  114. package/vendor/node-addon-api/doc/buffer.md +150 -150
  115. package/vendor/node-addon-api/doc/callback_scope.md +54 -54
  116. package/vendor/node-addon-api/doc/callbackinfo.md +97 -97
  117. package/vendor/node-addon-api/doc/checker-tool.md +32 -32
  118. package/vendor/node-addon-api/doc/class_property_descriptor.md +115 -115
  119. package/vendor/node-addon-api/doc/cmake-js.md +68 -68
  120. package/vendor/node-addon-api/doc/conversion-tool.md +27 -27
  121. package/vendor/node-addon-api/doc/creating_a_release.md +62 -62
  122. package/vendor/node-addon-api/doc/dataview.md +248 -248
  123. package/vendor/node-addon-api/doc/date.md +68 -68
  124. package/vendor/node-addon-api/doc/env.md +196 -196
  125. package/vendor/node-addon-api/doc/error.md +120 -120
  126. package/vendor/node-addon-api/doc/error_handling.md +254 -254
  127. package/vendor/node-addon-api/doc/escapable_handle_scope.md +80 -80
  128. package/vendor/node-addon-api/doc/external.md +63 -63
  129. package/vendor/node-addon-api/doc/function.md +402 -402
  130. package/vendor/node-addon-api/doc/function_reference.md +238 -238
  131. package/vendor/node-addon-api/doc/generator.md +13 -13
  132. package/vendor/node-addon-api/doc/handle_scope.md +63 -63
  133. package/vendor/node-addon-api/doc/hierarchy.md +91 -91
  134. package/vendor/node-addon-api/doc/instance_wrap.md +408 -408
  135. package/vendor/node-addon-api/doc/maybe.md +76 -76
  136. package/vendor/node-addon-api/doc/memory_management.md +27 -27
  137. package/vendor/node-addon-api/doc/name.md +29 -29
  138. package/vendor/node-addon-api/doc/node-gyp.md +82 -82
  139. package/vendor/node-addon-api/doc/number.md +163 -163
  140. package/vendor/node-addon-api/doc/object.md +432 -432
  141. package/vendor/node-addon-api/doc/object_lifetime_management.md +83 -83
  142. package/vendor/node-addon-api/doc/object_reference.md +117 -117
  143. package/vendor/node-addon-api/doc/object_wrap.md +561 -561
  144. package/vendor/node-addon-api/doc/prebuild_tools.md +16 -16
  145. package/vendor/node-addon-api/doc/promises.md +79 -79
  146. package/vendor/node-addon-api/doc/property_descriptor.md +286 -286
  147. package/vendor/node-addon-api/doc/propertylvalue.md +50 -50
  148. package/vendor/node-addon-api/doc/range_error.md +59 -59
  149. package/vendor/node-addon-api/doc/reference.md +113 -113
  150. package/vendor/node-addon-api/doc/setup.md +110 -110
  151. package/vendor/node-addon-api/doc/string.md +93 -93
  152. package/vendor/node-addon-api/doc/symbol.md +60 -60
  153. package/vendor/node-addon-api/doc/threadsafe.md +121 -121
  154. package/vendor/node-addon-api/doc/threadsafe_function.md +290 -290
  155. package/vendor/node-addon-api/doc/type_error.md +59 -59
  156. package/vendor/node-addon-api/doc/typed_array.md +78 -78
  157. package/vendor/node-addon-api/doc/typed_array_of.md +137 -137
  158. package/vendor/node-addon-api/doc/typed_threadsafe_function.md +306 -306
  159. package/vendor/node-addon-api/doc/value.md +340 -340
  160. package/vendor/node-addon-api/doc/version_management.md +43 -43
  161. package/vendor/node-addon-api/except.gypi +25 -25
  162. package/vendor/node-addon-api/index.js +11 -11
  163. package/vendor/node-addon-api/napi-inl.deprecated.h +192 -192
  164. package/vendor/node-addon-api/napi-inl.h +6209 -6209
  165. package/vendor/node-addon-api/napi.h +2983 -2983
  166. package/vendor/node-addon-api/node_api.gyp +9 -9
  167. package/vendor/node-addon-api/noexcept.gypi +26 -26
  168. package/vendor/node-addon-api/package-support.json +21 -21
  169. package/vendor/node-addon-api/package.json +399 -399
  170. package/vendor/node-addon-api/test/README.md +91 -91
  171. package/vendor/node-addon-api/test/addon.cc +36 -36
  172. package/vendor/node-addon-api/test/addon.js +11 -11
  173. package/vendor/node-addon-api/test/addon_build/index.js +49 -49
  174. package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +17 -17
  175. package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +62 -62
  176. package/vendor/node-addon-api/test/addon_build/tpl/index.js +9 -9
  177. package/vendor/node-addon-api/test/addon_build/tpl/package.json +11 -11
  178. package/vendor/node-addon-api/test/addon_data.cc +99 -99
  179. package/vendor/node-addon-api/test/addon_data.js +46 -46
  180. package/vendor/node-addon-api/test/array_buffer.cc +243 -243
  181. package/vendor/node-addon-api/test/array_buffer.js +69 -69
  182. package/vendor/node-addon-api/test/async_context.cc +21 -21
  183. package/vendor/node-addon-api/test/async_context.js +86 -86
  184. package/vendor/node-addon-api/test/async_progress_queue_worker.cc +83 -83
  185. package/vendor/node-addon-api/test/async_progress_queue_worker.js +46 -46
  186. package/vendor/node-addon-api/test/async_progress_worker.cc +134 -134
  187. package/vendor/node-addon-api/test/async_progress_worker.js +61 -61
  188. package/vendor/node-addon-api/test/async_worker.cc +106 -106
  189. package/vendor/node-addon-api/test/async_worker.js +179 -179
  190. package/vendor/node-addon-api/test/async_worker_nocallback.js +13 -13
  191. package/vendor/node-addon-api/test/async_worker_persistent.cc +63 -63
  192. package/vendor/node-addon-api/test/async_worker_persistent.js +24 -24
  193. package/vendor/node-addon-api/test/basic_types/array.cc +40 -40
  194. package/vendor/node-addon-api/test/basic_types/array.js +35 -35
  195. package/vendor/node-addon-api/test/basic_types/boolean.cc +38 -38
  196. package/vendor/node-addon-api/test/basic_types/boolean.js +35 -35
  197. package/vendor/node-addon-api/test/basic_types/number.cc +99 -99
  198. package/vendor/node-addon-api/test/basic_types/number.js +114 -114
  199. package/vendor/node-addon-api/test/basic_types/value.cc +120 -120
  200. package/vendor/node-addon-api/test/basic_types/value.js +133 -133
  201. package/vendor/node-addon-api/test/bigint.cc +91 -91
  202. package/vendor/node-addon-api/test/bigint.js +53 -53
  203. package/vendor/node-addon-api/test/binding-swallowexcept.cc +12 -12
  204. package/vendor/node-addon-api/test/binding.cc +171 -171
  205. package/vendor/node-addon-api/test/binding.gyp +117 -117
  206. package/vendor/node-addon-api/test/buffer.cc +183 -183
  207. package/vendor/node-addon-api/test/buffer.js +69 -69
  208. package/vendor/node-addon-api/test/callbackscope.cc +22 -22
  209. package/vendor/node-addon-api/test/callbackscope.js +49 -49
  210. package/vendor/node-addon-api/test/common/index.js +113 -113
  211. package/vendor/node-addon-api/test/common/test_helper.h +61 -61
  212. package/vendor/node-addon-api/test/dataview/dataview.cc +48 -48
  213. package/vendor/node-addon-api/test/dataview/dataview.js +35 -35
  214. package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +115 -115
  215. package/vendor/node-addon-api/test/dataview/dataview_read_write.js +90 -90
  216. package/vendor/node-addon-api/test/date.cc +44 -44
  217. package/vendor/node-addon-api/test/date.js +18 -18
  218. package/vendor/node-addon-api/test/env_cleanup.cc +88 -88
  219. package/vendor/node-addon-api/test/env_cleanup.js +56 -56
  220. package/vendor/node-addon-api/test/error.cc +287 -287
  221. package/vendor/node-addon-api/test/error.js +81 -81
  222. package/vendor/node-addon-api/test/error_handling_for_primitives.cc +13 -13
  223. package/vendor/node-addon-api/test/error_handling_for_primitives.js +29 -29
  224. package/vendor/node-addon-api/test/error_terminating_environment.js +94 -94
  225. package/vendor/node-addon-api/test/external.cc +81 -81
  226. package/vendor/node-addon-api/test/external.js +88 -88
  227. package/vendor/node-addon-api/test/function.cc +295 -295
  228. package/vendor/node-addon-api/test/function.js +121 -121
  229. package/vendor/node-addon-api/test/function_reference.cc +202 -202
  230. package/vendor/node-addon-api/test/function_reference.js +157 -157
  231. package/vendor/node-addon-api/test/globalObject/global_object.cc +61 -61
  232. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +31 -31
  233. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +61 -61
  234. package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +40 -40
  235. package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +57 -57
  236. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +28 -28
  237. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +48 -48
  238. package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +30 -30
  239. package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +58 -58
  240. package/vendor/node-addon-api/test/handlescope.cc +60 -60
  241. package/vendor/node-addon-api/test/handlescope.js +14 -14
  242. package/vendor/node-addon-api/test/index.js +136 -136
  243. package/vendor/node-addon-api/test/maybe/check.cc +23 -23
  244. package/vendor/node-addon-api/test/maybe/index.js +38 -38
  245. package/vendor/node-addon-api/test/memory_management.cc +17 -17
  246. package/vendor/node-addon-api/test/memory_management.js +9 -9
  247. package/vendor/node-addon-api/test/movable_callbacks.cc +23 -23
  248. package/vendor/node-addon-api/test/movable_callbacks.js +21 -21
  249. package/vendor/node-addon-api/test/name.cc +108 -108
  250. package/vendor/node-addon-api/test/name.js +59 -59
  251. package/vendor/node-addon-api/test/napi_child.js +14 -14
  252. package/vendor/node-addon-api/test/object/delete_property.cc +38 -38
  253. package/vendor/node-addon-api/test/object/delete_property.js +41 -41
  254. package/vendor/node-addon-api/test/object/finalizer.cc +29 -29
  255. package/vendor/node-addon-api/test/object/finalizer.js +28 -28
  256. package/vendor/node-addon-api/test/object/get_property.cc +34 -34
  257. package/vendor/node-addon-api/test/object/get_property.js +40 -40
  258. package/vendor/node-addon-api/test/object/has_own_property.cc +34 -34
  259. package/vendor/node-addon-api/test/object/has_own_property.js +34 -34
  260. package/vendor/node-addon-api/test/object/has_property.cc +38 -38
  261. package/vendor/node-addon-api/test/object/has_property.js +37 -37
  262. package/vendor/node-addon-api/test/object/object.cc +348 -348
  263. package/vendor/node-addon-api/test/object/object.js +217 -217
  264. package/vendor/node-addon-api/test/object/object_deprecated.cc +66 -66
  265. package/vendor/node-addon-api/test/object/object_deprecated.js +47 -47
  266. package/vendor/node-addon-api/test/object/object_freeze_seal.cc +25 -25
  267. package/vendor/node-addon-api/test/object/object_freeze_seal.js +61 -61
  268. package/vendor/node-addon-api/test/object/set_property.cc +37 -37
  269. package/vendor/node-addon-api/test/object/set_property.js +29 -29
  270. package/vendor/node-addon-api/test/object/subscript_operator.cc +42 -42
  271. package/vendor/node-addon-api/test/object/subscript_operator.js +17 -17
  272. package/vendor/node-addon-api/test/object_reference.cc +219 -219
  273. package/vendor/node-addon-api/test/object_reference.js +259 -259
  274. package/vendor/node-addon-api/test/objectwrap.cc +268 -268
  275. package/vendor/node-addon-api/test/objectwrap.js +284 -284
  276. package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +26 -26
  277. package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +18 -18
  278. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +30 -30
  279. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +13 -13
  280. package/vendor/node-addon-api/test/objectwrap_removewrap.cc +45 -45
  281. package/vendor/node-addon-api/test/objectwrap_removewrap.js +40 -40
  282. package/vendor/node-addon-api/test/objectwrap_worker_thread.js +19 -19
  283. package/vendor/node-addon-api/test/promise.cc +29 -29
  284. package/vendor/node-addon-api/test/promise.js +18 -18
  285. package/vendor/node-addon-api/test/reference.cc +24 -24
  286. package/vendor/node-addon-api/test/reference.js +14 -14
  287. package/vendor/node-addon-api/test/run_script.cc +56 -56
  288. package/vendor/node-addon-api/test/run_script.js +45 -45
  289. package/vendor/node-addon-api/test/symbol.cc +79 -79
  290. package/vendor/node-addon-api/test/symbol.js +73 -73
  291. package/vendor/node-addon-api/test/testUtil.js +54 -54
  292. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +195 -195
  293. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +188 -188
  294. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +63 -63
  295. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +12 -12
  296. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +115 -115
  297. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +14 -14
  298. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +26 -26
  299. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +7 -7
  300. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +225 -225
  301. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +59 -59
  302. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +42 -42
  303. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +53 -53
  304. package/vendor/node-addon-api/test/thunking_manual.cc +140 -140
  305. package/vendor/node-addon-api/test/thunking_manual.js +17 -17
  306. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +215 -215
  307. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +188 -188
  308. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +68 -68
  309. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +12 -12
  310. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +127 -127
  311. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +14 -14
  312. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +28 -28
  313. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +7 -7
  314. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +237 -237
  315. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +59 -59
  316. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +53 -53
  317. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +53 -53
  318. package/vendor/node-addon-api/test/typedarray-bigint.js +58 -58
  319. package/vendor/node-addon-api/test/typedarray.cc +216 -216
  320. package/vendor/node-addon-api/test/typedarray.js +69 -69
  321. package/vendor/node-addon-api/test/version_management.cc +27 -27
  322. package/vendor/node-addon-api/test/version_management.js +31 -31
  323. package/vendor/node-addon-api/tools/README.md +73 -73
  324. package/vendor/node-addon-api/tools/check-napi.js +100 -100
  325. package/vendor/node-addon-api/tools/clang-format.js +68 -68
  326. package/vendor/node-addon-api/tools/conversion.js +309 -309
  327. package/vendor/node-addon-api/tools/eslint-format.js +71 -71
  328. package/build/ALL_BUILD.vcxproj +0 -186
  329. package/build/ALL_BUILD.vcxproj.filters +0 -8
  330. package/build/CMakeCache.txt +0 -417
  331. package/build/CMakeFiles/3.23.0-rc1/CMakeASMCompiler.cmake +0 -20
  332. package/build/CMakeFiles/3.23.0-rc1/CMakeASM_MASMCompiler.cmake +0 -20
  333. package/build/CMakeFiles/3.23.0-rc1/CMakeCCompiler.cmake +0 -72
  334. package/build/CMakeFiles/3.23.0-rc1/CMakeCXXCompiler.cmake +0 -83
  335. package/build/CMakeFiles/3.23.0-rc1/CMakeDetermineCompilerABI_C.bin +0 -0
  336. package/build/CMakeFiles/3.23.0-rc1/CMakeDetermineCompilerABI_CXX.bin +0 -0
  337. package/build/CMakeFiles/3.23.0-rc1/CMakeRCCompiler.cmake +0 -6
  338. package/build/CMakeFiles/3.23.0-rc1/CMakeSystem.cmake +0 -15
  339. package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/CMakeCCompilerId.c +0 -828
  340. package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/CompilerIdC.exe +0 -0
  341. package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/CompilerIdC.vcxproj +0 -71
  342. package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CMakeCCompilerId.obj +0 -0
  343. package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.exe.recipe +0 -11
  344. package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/CL.command.1.tlog +0 -0
  345. package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/CL.read.1.tlog +0 -0
  346. package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/CL.write.1.tlog +0 -0
  347. package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/CompilerIdC.lastbuildstate +0 -2
  348. package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/link.command.1.tlog +0 -0
  349. package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/link.read.1.tlog +0 -0
  350. package/build/CMakeFiles/3.23.0-rc1/CompilerIdC/Debug/CompilerIdC.tlog/link.write.1.tlog +0 -0
  351. package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/CMakeCXXCompilerId.cpp +0 -816
  352. package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/CompilerIdCXX.exe +0 -0
  353. package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/CompilerIdCXX.vcxproj +0 -71
  354. package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CMakeCXXCompilerId.obj +0 -0
  355. package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.exe.recipe +0 -11
  356. package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.command.1.tlog +0 -0
  357. package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.read.1.tlog +0 -0
  358. package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CL.write.1.tlog +0 -0
  359. package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/CompilerIdCXX.lastbuildstate +0 -2
  360. package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.command.1.tlog +0 -0
  361. package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.read.1.tlog +0 -0
  362. package/build/CMakeFiles/3.23.0-rc1/CompilerIdCXX/Debug/CompilerIdCXX.tlog/link.write.1.tlog +0 -0
  363. package/build/CMakeFiles/3.23.0-rc1/VCTargetsPath.txt +0 -1
  364. package/build/CMakeFiles/3.23.0-rc1/VCTargetsPath.vcxproj +0 -31
  365. package/build/CMakeFiles/3.23.0-rc1/x64/Debug/VCTargetsPath.recipe +0 -11
  366. package/build/CMakeFiles/3.23.0-rc1/x64/Debug/VCTargetsPath.tlog/VCTargetsPath.lastbuildstate +0 -2
  367. package/build/CMakeFiles/41bcd16856091d4a38fd1f71fbe2f202/generate.stamp.rule +0 -1
  368. package/build/CMakeFiles/CMakeError.log +0 -108
  369. package/build/CMakeFiles/CMakeOutput.log +0 -413
  370. package/build/CMakeFiles/TargetDirectories.txt +0 -3
  371. package/build/CMakeFiles/cmake.check_cache +0 -1
  372. package/build/CMakeFiles/generate.stamp +0 -1
  373. package/build/CMakeFiles/generate.stamp.depend +0 -109
  374. package/build/CMakeFiles/generate.stamp.list +0 -1
  375. package/build/Release/koffi.exp +0 -0
  376. package/build/Release/koffi.lib +0 -0
  377. package/build/Release/koffi.node +0 -0
  378. package/build/ZERO_CHECK.vcxproj +0 -176
  379. package/build/ZERO_CHECK.vcxproj.filters +0 -13
  380. package/build/cmake_install.cmake +0 -44
  381. package/build/koffi.dir/Release/call_arm64.obj +0 -0
  382. package/build/koffi.dir/Release/call_x64_sysv.obj +0 -0
  383. package/build/koffi.dir/Release/call_x64_win.obj +0 -0
  384. package/build/koffi.dir/Release/call_x64_win_fwd.obj +0 -0
  385. package/build/koffi.dir/Release/call_x86.obj +0 -0
  386. package/build/koffi.dir/Release/ffi.obj +0 -0
  387. package/build/koffi.dir/Release/koffi.node.recipe +0 -14
  388. package/build/koffi.dir/Release/koffi.tlog/CL.command.1.tlog +0 -0
  389. package/build/koffi.dir/Release/koffi.tlog/CL.read.1.tlog +0 -0
  390. package/build/koffi.dir/Release/koffi.tlog/CL.write.1.tlog +0 -0
  391. package/build/koffi.dir/Release/koffi.tlog/CustomBuild.command.1.tlog +0 -10
  392. package/build/koffi.dir/Release/koffi.tlog/CustomBuild.read.1.tlog +0 -108
  393. package/build/koffi.dir/Release/koffi.tlog/CustomBuild.write.1.tlog +0 -2
  394. package/build/koffi.dir/Release/koffi.tlog/Masm.read.1u.tlog +0 -0
  395. package/build/koffi.dir/Release/koffi.tlog/Masm.write.1u.tlog +0 -0
  396. package/build/koffi.dir/Release/koffi.tlog/koffi.lastbuildstate +0 -2
  397. package/build/koffi.dir/Release/koffi.tlog/koffi.write.1u.tlog +0 -0
  398. package/build/koffi.dir/Release/koffi.tlog/link.command.1.tlog +0 -0
  399. package/build/koffi.dir/Release/koffi.tlog/link.read.1.tlog +0 -0
  400. package/build/koffi.dir/Release/koffi.tlog/link.write.1.tlog +0 -0
  401. package/build/koffi.dir/Release/libcc.obj +0 -0
  402. package/build/koffi.dir/Release/util.obj +0 -0
  403. package/build/koffi.dir/Release/win_delay_load_hook.obj +0 -0
  404. package/build/koffi.sln +0 -53
  405. package/build/koffi.vcxproj +0 -363
  406. package/build/koffi.vcxproj.filters +0 -40
  407. package/build/x64/Release/ALL_BUILD/ALL_BUILD.recipe +0 -17
  408. package/build/x64/Release/ALL_BUILD/ALL_BUILD.tlog/ALL_BUILD.lastbuildstate +0 -2
  409. package/build/x64/Release/ALL_BUILD/ALL_BUILD.tlog/CustomBuild.command.1.tlog +0 -10
  410. package/build/x64/Release/ALL_BUILD/ALL_BUILD.tlog/CustomBuild.read.1.tlog +0 -108
  411. package/build/x64/Release/ALL_BUILD/ALL_BUILD.tlog/CustomBuild.write.1.tlog +0 -2
  412. package/build/x64/Release/ZERO_CHECK/ZERO_CHECK.recipe +0 -11
  413. package/build/x64/Release/ZERO_CHECK/ZERO_CHECK.tlog/CustomBuild.command.1.tlog +0 -10
  414. package/build/x64/Release/ZERO_CHECK/ZERO_CHECK.tlog/CustomBuild.read.1.tlog +0 -109
  415. package/build/x64/Release/ZERO_CHECK/ZERO_CHECK.tlog/CustomBuild.write.1.tlog +0 -2
  416. package/build/x64/Release/ZERO_CHECK/ZERO_CHECK.tlog/ZERO_CHECK.lastbuildstate +0 -2
@@ -1,81 +1,81 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
-
5
- if (process.argv[2] === 'fatal') {
6
- const binding = require(process.argv[3]);
7
- binding.error.throwFatalError();
8
- }
9
-
10
- module.exports = require('./common').runTestWithBindingPath(test);
11
-
12
- function test (bindingPath) {
13
- const binding = require(bindingPath);
14
-
15
- assert.throws(() => binding.error.throwApiError('test'), function (err) {
16
- return err instanceof Error && err.message.includes('Invalid');
17
- });
18
-
19
- assert.throws(() => binding.error.lastExceptionErrorCode(), function (err) {
20
- return err instanceof TypeError && err.message === 'A boolean was expected';
21
- });
22
-
23
- assert.throws(() => binding.error.throwJSError('test'), function (err) {
24
- return err instanceof Error && err.message === 'test';
25
- });
26
-
27
- assert.throws(() => binding.error.throwTypeError('test'), function (err) {
28
- return err instanceof TypeError && err.message === 'test';
29
- });
30
-
31
- assert.throws(() => binding.error.throwRangeError('test'), function (err) {
32
- return err instanceof RangeError && err.message === 'test';
33
- });
34
-
35
- assert.throws(
36
- () => binding.error.doNotCatch(
37
- () => {
38
- throw new TypeError('test');
39
- }),
40
- function (err) {
41
- return err instanceof TypeError && err.message === 'test' && !err.caught;
42
- });
43
-
44
- assert.throws(
45
- () => binding.error.catchAndRethrowError(
46
- () => {
47
- throw new TypeError('test');
48
- }),
49
- function (err) {
50
- return err instanceof TypeError && err.message === 'test' && err.caught;
51
- });
52
-
53
- const err = binding.error.catchError(
54
- () => { throw new TypeError('test'); });
55
- assert(err instanceof TypeError);
56
- assert.strictEqual(err.message, 'test');
57
-
58
- const msg = binding.error.catchErrorMessage(
59
- () => { throw new TypeError('test'); });
60
- assert.strictEqual(msg, 'test');
61
-
62
- assert.throws(() => binding.error.throwErrorThatEscapesScope('test'), function (err) {
63
- return err instanceof Error && err.message === 'test';
64
- });
65
-
66
- assert.throws(() => binding.error.catchAndRethrowErrorThatEscapesScope('test'), function (err) {
67
- return err instanceof Error && err.message === 'test' && err.caught;
68
- });
69
-
70
- const p = require('./napi_child').spawnSync(
71
- process.execPath, [__filename, 'fatal', bindingPath]);
72
- assert.ifError(p.error);
73
- assert.ok(p.stderr.toString().includes(
74
- 'FATAL ERROR: Error::ThrowFatalError This is a fatal error'));
75
-
76
- assert.throws(() => binding.error.throwDefaultError(false),
77
- /Cannot convert undefined or null to object/);
78
-
79
- assert.throws(() => binding.error.throwDefaultError(true),
80
- /A number was expected/);
81
- }
1
+ 'use strict';
2
+
3
+ const assert = require('assert');
4
+
5
+ if (process.argv[2] === 'fatal') {
6
+ const binding = require(process.argv[3]);
7
+ binding.error.throwFatalError();
8
+ }
9
+
10
+ module.exports = require('./common').runTestWithBindingPath(test);
11
+
12
+ function test (bindingPath) {
13
+ const binding = require(bindingPath);
14
+
15
+ assert.throws(() => binding.error.throwApiError('test'), function (err) {
16
+ return err instanceof Error && err.message.includes('Invalid');
17
+ });
18
+
19
+ assert.throws(() => binding.error.lastExceptionErrorCode(), function (err) {
20
+ return err instanceof TypeError && err.message === 'A boolean was expected';
21
+ });
22
+
23
+ assert.throws(() => binding.error.throwJSError('test'), function (err) {
24
+ return err instanceof Error && err.message === 'test';
25
+ });
26
+
27
+ assert.throws(() => binding.error.throwTypeError('test'), function (err) {
28
+ return err instanceof TypeError && err.message === 'test';
29
+ });
30
+
31
+ assert.throws(() => binding.error.throwRangeError('test'), function (err) {
32
+ return err instanceof RangeError && err.message === 'test';
33
+ });
34
+
35
+ assert.throws(
36
+ () => binding.error.doNotCatch(
37
+ () => {
38
+ throw new TypeError('test');
39
+ }),
40
+ function (err) {
41
+ return err instanceof TypeError && err.message === 'test' && !err.caught;
42
+ });
43
+
44
+ assert.throws(
45
+ () => binding.error.catchAndRethrowError(
46
+ () => {
47
+ throw new TypeError('test');
48
+ }),
49
+ function (err) {
50
+ return err instanceof TypeError && err.message === 'test' && err.caught;
51
+ });
52
+
53
+ const err = binding.error.catchError(
54
+ () => { throw new TypeError('test'); });
55
+ assert(err instanceof TypeError);
56
+ assert.strictEqual(err.message, 'test');
57
+
58
+ const msg = binding.error.catchErrorMessage(
59
+ () => { throw new TypeError('test'); });
60
+ assert.strictEqual(msg, 'test');
61
+
62
+ assert.throws(() => binding.error.throwErrorThatEscapesScope('test'), function (err) {
63
+ return err instanceof Error && err.message === 'test';
64
+ });
65
+
66
+ assert.throws(() => binding.error.catchAndRethrowErrorThatEscapesScope('test'), function (err) {
67
+ return err instanceof Error && err.message === 'test' && err.caught;
68
+ });
69
+
70
+ const p = require('./napi_child').spawnSync(
71
+ process.execPath, [__filename, 'fatal', bindingPath]);
72
+ assert.ifError(p.error);
73
+ assert.ok(p.stderr.toString().includes(
74
+ 'FATAL ERROR: Error::ThrowFatalError This is a fatal error'));
75
+
76
+ assert.throws(() => binding.error.throwDefaultError(false),
77
+ /Cannot convert undefined or null to object/);
78
+
79
+ assert.throws(() => binding.error.throwDefaultError(true),
80
+ /A number was expected/);
81
+ }
@@ -1,13 +1,13 @@
1
- #include <napi.h>
2
-
3
- namespace {
4
- void Test(const Napi::CallbackInfo& info) {
5
- info[0].As<Napi::Function>().Call({});
6
- }
7
-
8
- } // namespace
9
- Napi::Object InitErrorHandlingPrim(Napi::Env env) {
10
- Napi::Object exports = Napi::Object::New(env);
11
- exports.Set("errorHandlingPrim", Napi::Function::New<Test>(env));
12
- return exports;
13
- }
1
+ #include <napi.h>
2
+
3
+ namespace {
4
+ void Test(const Napi::CallbackInfo& info) {
5
+ info[0].As<Napi::Function>().Call({});
6
+ }
7
+
8
+ } // namespace
9
+ Napi::Object InitErrorHandlingPrim(Napi::Env env) {
10
+ Napi::Object exports = Napi::Object::New(env);
11
+ exports.Set("errorHandlingPrim", Napi::Function::New<Test>(env));
12
+ return exports;
13
+ }
@@ -1,29 +1,29 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
-
5
- module.exports = require('./common').runTest((binding) => {
6
- test(binding.errorHandlingPrim);
7
- });
8
-
9
- function canThrow (binding, errorMessage, errorType) {
10
- try {
11
- binding.errorHandlingPrim(() => {
12
- throw errorMessage;
13
- });
14
- } catch (e) {
15
- // eslint-disable-next-line valid-typeof
16
- assert(typeof e === errorType);
17
- assert(e === errorMessage);
18
- }
19
- }
20
-
21
- function test (binding) {
22
- canThrow(binding, '404 server not found!', 'string');
23
- canThrow(binding, 42, 'number');
24
- canThrow(binding, Symbol.for('newSym'), 'symbol');
25
- canThrow(binding, false, 'boolean');
26
- canThrow(binding, BigInt(123), 'bigint');
27
- canThrow(binding, () => { console.log('Logger shutdown incorrectly'); }, 'function');
28
- canThrow(binding, { status: 403, errorMsg: 'Not authenticated' }, 'object');
29
- }
1
+ 'use strict';
2
+
3
+ const assert = require('assert');
4
+
5
+ module.exports = require('./common').runTest((binding) => {
6
+ test(binding.errorHandlingPrim);
7
+ });
8
+
9
+ function canThrow (binding, errorMessage, errorType) {
10
+ try {
11
+ binding.errorHandlingPrim(() => {
12
+ throw errorMessage;
13
+ });
14
+ } catch (e) {
15
+ // eslint-disable-next-line valid-typeof
16
+ assert(typeof e === errorType);
17
+ assert(e === errorMessage);
18
+ }
19
+ }
20
+
21
+ function test (binding) {
22
+ canThrow(binding, '404 server not found!', 'string');
23
+ canThrow(binding, 42, 'number');
24
+ canThrow(binding, Symbol.for('newSym'), 'symbol');
25
+ canThrow(binding, false, 'boolean');
26
+ canThrow(binding, BigInt(123), 'bigint');
27
+ canThrow(binding, () => { console.log('Logger shutdown incorrectly'); }, 'function');
28
+ canThrow(binding, { status: 403, errorMsg: 'Not authenticated' }, 'object');
29
+ }
@@ -1,94 +1,94 @@
1
- 'use strict';
2
- const buildType = process.config.target_defaults.default_configuration;
3
- const assert = require('assert');
4
-
5
- // These tests ensure that Error types can be used in a terminating
6
- // environment without triggering any fatal errors.
7
-
8
- if (process.argv[2] === 'runInChildProcess') {
9
- const binding_path = process.argv[3];
10
- const index_for_test_case = Number(process.argv[4]);
11
-
12
- const binding = require(binding_path);
13
-
14
- // Use C++ promises to ensure the worker thread is terminated right
15
- // before running the testable code in the binding.
16
-
17
- binding.error.resetPromises()
18
-
19
- const { Worker } = require('worker_threads');
20
-
21
- const worker = new Worker(
22
- __filename,
23
- {
24
- argv: [
25
- 'runInWorkerThread',
26
- binding_path,
27
- index_for_test_case,
28
- ]
29
- }
30
- );
31
-
32
- binding.error.waitForWorkerThread()
33
-
34
- worker.terminate();
35
-
36
- binding.error.releaseWorkerThread()
37
-
38
- return;
39
- }
40
-
41
- if (process.argv[2] === 'runInWorkerThread') {
42
- const binding_path = process.argv[3];
43
- const index_for_test_case = Number(process.argv[4]);
44
-
45
- const binding = require(binding_path);
46
-
47
- switch (index_for_test_case) {
48
- case 0:
49
- binding.error.throwJSError('test', true);
50
- break;
51
- case 1:
52
- binding.error.throwTypeError('test', true);
53
- break;
54
- case 2:
55
- binding.error.throwRangeError('test', true);
56
- break;
57
- case 3:
58
- binding.error.throwDefaultError(false, true);
59
- break;
60
- case 4:
61
- binding.error.throwDefaultError(true, true);
62
- break;
63
- default: assert.fail('Invalid index');
64
- }
65
-
66
- assert.fail('This should not be reachable');
67
- }
68
-
69
- test(`./build/${buildType}/binding.node`, true);
70
- test(`./build/${buildType}/binding_noexcept.node`, true);
71
- test(`./build/${buildType}/binding_swallowexcept.node`, false);
72
- test(`./build/${buildType}/binding_swallowexcept_noexcept.node`, false);
73
-
74
- function test(bindingPath, process_should_abort) {
75
- const number_of_test_cases = 5;
76
-
77
- for (let i = 0; i < number_of_test_cases; ++i) {
78
- const child_process = require('./napi_child').spawnSync(
79
- process.execPath,
80
- [
81
- __filename,
82
- 'runInChildProcess',
83
- bindingPath,
84
- i,
85
- ]
86
- );
87
-
88
- if (process_should_abort) {
89
- assert(child_process.status !== 0, `Test case ${bindingPath} ${i} failed: Process exited with status code 0.`);
90
- } else {
91
- assert(child_process.status === 0, `Test case ${bindingPath} ${i} failed: Process status ${child_process.status} is non-zero`);
92
- }
93
- }
94
- }
1
+ 'use strict';
2
+ const buildType = process.config.target_defaults.default_configuration;
3
+ const assert = require('assert');
4
+
5
+ // These tests ensure that Error types can be used in a terminating
6
+ // environment without triggering any fatal errors.
7
+
8
+ if (process.argv[2] === 'runInChildProcess') {
9
+ const binding_path = process.argv[3];
10
+ const index_for_test_case = Number(process.argv[4]);
11
+
12
+ const binding = require(binding_path);
13
+
14
+ // Use C++ promises to ensure the worker thread is terminated right
15
+ // before running the testable code in the binding.
16
+
17
+ binding.error.resetPromises()
18
+
19
+ const { Worker } = require('worker_threads');
20
+
21
+ const worker = new Worker(
22
+ __filename,
23
+ {
24
+ argv: [
25
+ 'runInWorkerThread',
26
+ binding_path,
27
+ index_for_test_case,
28
+ ]
29
+ }
30
+ );
31
+
32
+ binding.error.waitForWorkerThread()
33
+
34
+ worker.terminate();
35
+
36
+ binding.error.releaseWorkerThread()
37
+
38
+ return;
39
+ }
40
+
41
+ if (process.argv[2] === 'runInWorkerThread') {
42
+ const binding_path = process.argv[3];
43
+ const index_for_test_case = Number(process.argv[4]);
44
+
45
+ const binding = require(binding_path);
46
+
47
+ switch (index_for_test_case) {
48
+ case 0:
49
+ binding.error.throwJSError('test', true);
50
+ break;
51
+ case 1:
52
+ binding.error.throwTypeError('test', true);
53
+ break;
54
+ case 2:
55
+ binding.error.throwRangeError('test', true);
56
+ break;
57
+ case 3:
58
+ binding.error.throwDefaultError(false, true);
59
+ break;
60
+ case 4:
61
+ binding.error.throwDefaultError(true, true);
62
+ break;
63
+ default: assert.fail('Invalid index');
64
+ }
65
+
66
+ assert.fail('This should not be reachable');
67
+ }
68
+
69
+ test(`./build/${buildType}/binding.node`, true);
70
+ test(`./build/${buildType}/binding_noexcept.node`, true);
71
+ test(`./build/${buildType}/binding_swallowexcept.node`, false);
72
+ test(`./build/${buildType}/binding_swallowexcept_noexcept.node`, false);
73
+
74
+ function test(bindingPath, process_should_abort) {
75
+ const number_of_test_cases = 5;
76
+
77
+ for (let i = 0; i < number_of_test_cases; ++i) {
78
+ const child_process = require('./napi_child').spawnSync(
79
+ process.execPath,
80
+ [
81
+ __filename,
82
+ 'runInChildProcess',
83
+ bindingPath,
84
+ i,
85
+ ]
86
+ );
87
+
88
+ if (process_should_abort) {
89
+ assert(child_process.status !== 0, `Test case ${bindingPath} ${i} failed: Process exited with status code 0.`);
90
+ } else {
91
+ assert(child_process.status === 0, `Test case ${bindingPath} ${i} failed: Process status ${child_process.status} is non-zero`);
92
+ }
93
+ }
94
+ }
@@ -1,81 +1,81 @@
1
- #include "napi.h"
2
-
3
- using namespace Napi;
4
-
5
- namespace {
6
-
7
- int testData = 1;
8
- int finalizeCount = 0;
9
-
10
- Value CreateExternal(const CallbackInfo& info) {
11
- finalizeCount = 0;
12
- return External<int>::New(info.Env(), &testData);
13
- }
14
-
15
- Value CreateExternalWithFinalize(const CallbackInfo& info) {
16
- finalizeCount = 0;
17
- return External<int>::New(info.Env(), new int(1),
18
- [](Env /*env*/, int* data) {
19
- delete data;
20
- finalizeCount++;
21
- });
22
- }
23
-
24
- Value CreateExternalWithFinalizeHint(const CallbackInfo& info) {
25
- finalizeCount = 0;
26
- char* hint = nullptr;
27
- return External<int>::New(info.Env(), new int(1),
28
- [](Env /*env*/, int* data, char* /*hint*/) {
29
- delete data;
30
- finalizeCount++;
31
- },
32
- hint);
33
- }
34
-
35
- void CheckExternal(const CallbackInfo& info) {
36
- Value arg = info[0];
37
- if (arg.Type() != napi_external) {
38
- Error::New(info.Env(), "An external argument was expected.").ThrowAsJavaScriptException();
39
- return;
40
- }
41
-
42
- External<int> external = arg.As<External<int>>();
43
- int* externalData = external.Data();
44
- if (externalData == nullptr || *externalData != 1) {
45
- Error::New(info.Env(), "An external value of 1 was expected.").ThrowAsJavaScriptException();
46
- return;
47
- }
48
- }
49
-
50
- Value GetFinalizeCount(const CallbackInfo& info) {
51
- return Number::New(info.Env(), finalizeCount);
52
- }
53
-
54
- Value CreateExternalWithFinalizeException(const CallbackInfo& info) {
55
- return External<int>::New(info.Env(), new int(1),
56
- [](Env env, int* data) {
57
- Error error = Error::New(env, "Finalizer exception");
58
- delete data;
59
- #ifdef NAPI_CPP_EXCEPTIONS
60
- throw error;
61
- #else
62
- error.ThrowAsJavaScriptException();
63
- #endif
64
- });
65
- }
66
-
67
- } // end anonymous namespace
68
-
69
- Object InitExternal(Env env) {
70
- Object exports = Object::New(env);
71
-
72
- exports["createExternal"] = Function::New(env, CreateExternal);
73
- exports["createExternalWithFinalize"] = Function::New(env, CreateExternalWithFinalize);
74
- exports["createExternalWithFinalizeException"] =
75
- Function::New(env, CreateExternalWithFinalizeException);
76
- exports["createExternalWithFinalizeHint"] = Function::New(env, CreateExternalWithFinalizeHint);
77
- exports["checkExternal"] = Function::New(env, CheckExternal);
78
- exports["getFinalizeCount"] = Function::New(env, GetFinalizeCount);
79
-
80
- return exports;
81
- }
1
+ #include "napi.h"
2
+
3
+ using namespace Napi;
4
+
5
+ namespace {
6
+
7
+ int testData = 1;
8
+ int finalizeCount = 0;
9
+
10
+ Value CreateExternal(const CallbackInfo& info) {
11
+ finalizeCount = 0;
12
+ return External<int>::New(info.Env(), &testData);
13
+ }
14
+
15
+ Value CreateExternalWithFinalize(const CallbackInfo& info) {
16
+ finalizeCount = 0;
17
+ return External<int>::New(info.Env(), new int(1),
18
+ [](Env /*env*/, int* data) {
19
+ delete data;
20
+ finalizeCount++;
21
+ });
22
+ }
23
+
24
+ Value CreateExternalWithFinalizeHint(const CallbackInfo& info) {
25
+ finalizeCount = 0;
26
+ char* hint = nullptr;
27
+ return External<int>::New(info.Env(), new int(1),
28
+ [](Env /*env*/, int* data, char* /*hint*/) {
29
+ delete data;
30
+ finalizeCount++;
31
+ },
32
+ hint);
33
+ }
34
+
35
+ void CheckExternal(const CallbackInfo& info) {
36
+ Value arg = info[0];
37
+ if (arg.Type() != napi_external) {
38
+ Error::New(info.Env(), "An external argument was expected.").ThrowAsJavaScriptException();
39
+ return;
40
+ }
41
+
42
+ External<int> external = arg.As<External<int>>();
43
+ int* externalData = external.Data();
44
+ if (externalData == nullptr || *externalData != 1) {
45
+ Error::New(info.Env(), "An external value of 1 was expected.").ThrowAsJavaScriptException();
46
+ return;
47
+ }
48
+ }
49
+
50
+ Value GetFinalizeCount(const CallbackInfo& info) {
51
+ return Number::New(info.Env(), finalizeCount);
52
+ }
53
+
54
+ Value CreateExternalWithFinalizeException(const CallbackInfo& info) {
55
+ return External<int>::New(info.Env(), new int(1),
56
+ [](Env env, int* data) {
57
+ Error error = Error::New(env, "Finalizer exception");
58
+ delete data;
59
+ #ifdef NAPI_CPP_EXCEPTIONS
60
+ throw error;
61
+ #else
62
+ error.ThrowAsJavaScriptException();
63
+ #endif
64
+ });
65
+ }
66
+
67
+ } // end anonymous namespace
68
+
69
+ Object InitExternal(Env env) {
70
+ Object exports = Object::New(env);
71
+
72
+ exports["createExternal"] = Function::New(env, CreateExternal);
73
+ exports["createExternalWithFinalize"] = Function::New(env, CreateExternalWithFinalize);
74
+ exports["createExternalWithFinalizeException"] =
75
+ Function::New(env, CreateExternalWithFinalizeException);
76
+ exports["createExternalWithFinalizeHint"] = Function::New(env, CreateExternalWithFinalizeHint);
77
+ exports["checkExternal"] = Function::New(env, CheckExternal);
78
+ exports["getFinalizeCount"] = Function::New(env, GetFinalizeCount);
79
+
80
+ return exports;
81
+ }