koffi 0.9.4 → 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 (327) 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
@@ -1,83 +1,83 @@
1
- # Object lifetime management
2
-
3
- A handle may be created when any new node-addon-api Value and
4
- its subclasses is created or returned.
5
-
6
- As the methods and classes within the node-addon-api are used,
7
- handles to objects in the heap for the underlying
8
- VM may be created. A handle may be created when any new
9
- node-addon-api Value or one of its subclasses is created or returned.
10
- These handles must hold the objects 'live' until they are no
11
- longer required by the native code, otherwise the objects could be
12
- collected by the garbage collector before the native code was
13
- finished using them.
14
-
15
- As handles are created they are associated with a
16
- 'scope'. The lifespan for the default scope is tied to the lifespan
17
- of the native method call. The result is that, by default, handles
18
- remain valid and the objects associated with these handles will be
19
- held live for the lifespan of the native method call.
20
-
21
- In many cases, however, it is necessary that the handles remain valid for
22
- either a shorter or longer lifespan than that of the native method.
23
- The sections which follow describe the node-addon-api classes and
24
- methods that than can be used to change the handle lifespan from
25
- the default.
26
-
27
- ## Making handle lifespan shorter than that of the native method
28
-
29
- It is often necessary to make the lifespan of handles shorter than
30
- the lifespan of a native method. For example, consider a native method
31
- that has a loop which creates a number of values and does something
32
- with each of the values, one at a time:
33
-
34
- ```C++
35
- for (int i = 0; i < LOOP_MAX; i++) {
36
- std::string name = std::string("inner-scope") + std::to_string(i);
37
- Napi::Value newValue = Napi::String::New(info.Env(), name.c_str());
38
- // do something with newValue
39
- };
40
- ```
41
-
42
- This would result in a large number of handles being created, consuming
43
- substantial resources. In addition, even though the native code could only
44
- use the most recently created value, all of the previously created
45
- values would also be kept alive since they all share the same scope.
46
-
47
- To handle this case, node-addon-api provides the ability to establish
48
- a new 'scope' to which newly created handles will be associated. Once those
49
- handles are no longer required, the scope can be deleted and any handles
50
- associated with the scope are invalidated. The `Napi::HandleScope`
51
- and `Napi::EscapableHandleScope` classes are provided by node-addon-api for
52
- creating additional scopes.
53
-
54
- node-addon-api only supports a single nested hierarchy of scopes. There is
55
- only one active scope at any time, and all new handles will be associated
56
- with that scope while it is active. Scopes must be deleted in the reverse
57
- order from which they are opened. In addition, all scopes created within
58
- a native method must be deleted before returning from that method. Since
59
- `Napi::HandleScopes` are typically stack allocated the compiler will take care of
60
- deletion, however, care must be taken to create the scope in the right
61
- place such that you achieve the desired lifetime.
62
-
63
- Taking the earlier example, creating a `Napi::HandleScope` in the inner loop
64
- would ensure that at most a single new value is held alive throughout the
65
- execution of the loop:
66
-
67
- ```C
68
- for (int i = 0; i < LOOP_MAX; i++) {
69
- Napi::HandleScope scope(info.Env());
70
- std::string name = std::string("inner-scope") + std::to_string(i);
71
- Napi::Value newValue = Napi::String::New(info.Env(), name.c_str());
72
- // do something with newValue
73
- };
74
- ```
75
-
76
- When nesting scopes, there are cases where a handle from an
77
- inner scope needs to live beyond the lifespan of that scope. node-addon-api
78
- provides the `Napi::EscapableHandleScope` with the `Escape` method
79
- in order to support this case. An escapable scope
80
- allows one object to be 'promoted' so that it 'escapes' the
81
- current scope and the lifespan of the handle changes from the current
82
- scope to that of the outer scope. The `Escape` method can only be called
83
- once for a given `Napi::EscapableHandleScope`.
1
+ # Object lifetime management
2
+
3
+ A handle may be created when any new node-addon-api Value and
4
+ its subclasses is created or returned.
5
+
6
+ As the methods and classes within the node-addon-api are used,
7
+ handles to objects in the heap for the underlying
8
+ VM may be created. A handle may be created when any new
9
+ node-addon-api Value or one of its subclasses is created or returned.
10
+ These handles must hold the objects 'live' until they are no
11
+ longer required by the native code, otherwise the objects could be
12
+ collected by the garbage collector before the native code was
13
+ finished using them.
14
+
15
+ As handles are created they are associated with a
16
+ 'scope'. The lifespan for the default scope is tied to the lifespan
17
+ of the native method call. The result is that, by default, handles
18
+ remain valid and the objects associated with these handles will be
19
+ held live for the lifespan of the native method call.
20
+
21
+ In many cases, however, it is necessary that the handles remain valid for
22
+ either a shorter or longer lifespan than that of the native method.
23
+ The sections which follow describe the node-addon-api classes and
24
+ methods that than can be used to change the handle lifespan from
25
+ the default.
26
+
27
+ ## Making handle lifespan shorter than that of the native method
28
+
29
+ It is often necessary to make the lifespan of handles shorter than
30
+ the lifespan of a native method. For example, consider a native method
31
+ that has a loop which creates a number of values and does something
32
+ with each of the values, one at a time:
33
+
34
+ ```C++
35
+ for (int i = 0; i < LOOP_MAX; i++) {
36
+ std::string name = std::string("inner-scope") + std::to_string(i);
37
+ Napi::Value newValue = Napi::String::New(info.Env(), name.c_str());
38
+ // do something with newValue
39
+ };
40
+ ```
41
+
42
+ This would result in a large number of handles being created, consuming
43
+ substantial resources. In addition, even though the native code could only
44
+ use the most recently created value, all of the previously created
45
+ values would also be kept alive since they all share the same scope.
46
+
47
+ To handle this case, node-addon-api provides the ability to establish
48
+ a new 'scope' to which newly created handles will be associated. Once those
49
+ handles are no longer required, the scope can be deleted and any handles
50
+ associated with the scope are invalidated. The `Napi::HandleScope`
51
+ and `Napi::EscapableHandleScope` classes are provided by node-addon-api for
52
+ creating additional scopes.
53
+
54
+ node-addon-api only supports a single nested hierarchy of scopes. There is
55
+ only one active scope at any time, and all new handles will be associated
56
+ with that scope while it is active. Scopes must be deleted in the reverse
57
+ order from which they are opened. In addition, all scopes created within
58
+ a native method must be deleted before returning from that method. Since
59
+ `Napi::HandleScopes` are typically stack allocated the compiler will take care of
60
+ deletion, however, care must be taken to create the scope in the right
61
+ place such that you achieve the desired lifetime.
62
+
63
+ Taking the earlier example, creating a `Napi::HandleScope` in the inner loop
64
+ would ensure that at most a single new value is held alive throughout the
65
+ execution of the loop:
66
+
67
+ ```C
68
+ for (int i = 0; i < LOOP_MAX; i++) {
69
+ Napi::HandleScope scope(info.Env());
70
+ std::string name = std::string("inner-scope") + std::to_string(i);
71
+ Napi::Value newValue = Napi::String::New(info.Env(), name.c_str());
72
+ // do something with newValue
73
+ };
74
+ ```
75
+
76
+ When nesting scopes, there are cases where a handle from an
77
+ inner scope needs to live beyond the lifespan of that scope. node-addon-api
78
+ provides the `Napi::EscapableHandleScope` with the `Escape` method
79
+ in order to support this case. An escapable scope
80
+ allows one object to be 'promoted' so that it 'escapes' the
81
+ current scope and the lifespan of the handle changes from the current
82
+ scope to that of the outer scope. The `Escape` method can only be called
83
+ once for a given `Napi::EscapableHandleScope`.
@@ -1,117 +1,117 @@
1
- # Object Reference
2
-
3
- `Napi::ObjectReference` is a subclass of [`Napi::Reference`](reference.md), and is equivalent to an instance of `Napi::Reference<Object>`. This means that a `Napi::ObjectReference` holds a [`Napi::Object`](object.md), and a count of the number of references to that Object. When the count is greater than 0, an ObjectReference is not eligible for garbage collection. This ensures that the Object being held as a value of the ObjectReference will remain accessible, even if the original Object no longer is. However, ObjectReference is unique from a Reference since properties can be set and get to the Object itself that can be accessed through the ObjectReference.
4
-
5
- For more general information on references, please consult [`Napi::Reference`](reference.md).
6
-
7
- ## Example
8
- ```cpp
9
- #include <napi.h>
10
-
11
- using namespace Napi;
12
-
13
- void Init(Env env) {
14
-
15
- // Create an empty ObjectReference that has an initial reference count of 2.
16
- ObjectReference obj_ref = Reference<Object>::New(Object::New(env), 2);
17
-
18
- // Set a couple of different properties on the reference.
19
- obj_ref.Set("hello", String::New(env, "world"));
20
- obj_ref.Set(42, "The Answer to Life, the Universe, and Everything");
21
-
22
- // Get the properties using the keys.
23
- Value val1 = obj_ref.Get("hello");
24
- Value val2 = obj_ref.Get(42);
25
- }
26
- ```
27
-
28
- ## Methods
29
-
30
- ### Initialization
31
-
32
- ```cpp
33
- static Napi::ObjectReference Napi::ObjectReference::New(const Napi::Object& value, uint32_t initialRefcount = 0);
34
- ```
35
-
36
- * `[in] value`: The `Napi::Object` which is to be referenced.
37
-
38
- * `[in] initialRefcount`: The initial reference count.
39
-
40
- Returns the newly created reference.
41
-
42
- ```cpp
43
- static Napi::ObjectReference Napi::Weak(const Napi::Object& value);
44
- ```
45
-
46
- Creates a "weak" reference to the value, in that the initial count of number of references is set to 0.
47
-
48
- * `[in] value`: The value which is to be referenced.
49
-
50
- Returns the newly created reference.
51
-
52
- ```cpp
53
- static Napi::ObjectReference Napi::Persistent(const Napi::Object& value);
54
- ```
55
-
56
- Creates a "persistent" reference to the value, in that the initial count of number of references is set to 1.
57
-
58
- * `[in] value`: The value which is to be referenced.
59
-
60
- Returns the newly created reference.
61
-
62
- ### Empty Constructor
63
-
64
- ```cpp
65
- Napi::ObjectReference::ObjectReference();
66
- ```
67
-
68
- Returns a new _empty_ `Napi::ObjectReference` instance.
69
-
70
- ### Constructor
71
-
72
- ```cpp
73
- Napi::ObjectReference::ObjectReference(napi_env env, napi_value value);
74
- ```
75
-
76
- * `[in] env`: The `napi_env` environment in which to construct the `Napi::ObjectReference` object.
77
-
78
- * `[in] value`: The Node-API primitive value to be held by the `Napi::ObjectReference`.
79
-
80
- Returns the newly created reference.
81
-
82
- ### Set
83
- ```cpp
84
- bool Napi::ObjectReference::Set(___ key, ___ value);
85
- ```
86
-
87
- * `[in] key`: The name for the property being assigned.
88
-
89
- * `[in] value`: The value being assigned to the property.
90
-
91
- The `key` can be any of the following types:
92
- - `const char*`
93
- - `const std::string`
94
- - `uint32_t`
95
-
96
- The `value` can be any of the following types:
97
- - `napi_value`
98
- - `Napi::Value`
99
- - `const char*`
100
- - `bool`
101
- - `double`
102
-
103
- ### Get
104
-
105
- ```cpp
106
- Napi::Value Napi::ObjectReference::Get(___ key);
107
- ```
108
-
109
- * `[in] key`: The name of the property to return the value for.
110
-
111
- Returns the [`Napi::Value`](value.md) associated with the key property. Returns NULL if no such key exists.
112
-
113
- The `key` can be any of the following types:
114
- - `const char*`
115
- - `const std::string`
116
- - `uint32_t`
117
-
1
+ # Object Reference
2
+
3
+ `Napi::ObjectReference` is a subclass of [`Napi::Reference`](reference.md), and is equivalent to an instance of `Napi::Reference<Object>`. This means that a `Napi::ObjectReference` holds a [`Napi::Object`](object.md), and a count of the number of references to that Object. When the count is greater than 0, an ObjectReference is not eligible for garbage collection. This ensures that the Object being held as a value of the ObjectReference will remain accessible, even if the original Object no longer is. However, ObjectReference is unique from a Reference since properties can be set and get to the Object itself that can be accessed through the ObjectReference.
4
+
5
+ For more general information on references, please consult [`Napi::Reference`](reference.md).
6
+
7
+ ## Example
8
+ ```cpp
9
+ #include <napi.h>
10
+
11
+ using namespace Napi;
12
+
13
+ void Init(Env env) {
14
+
15
+ // Create an empty ObjectReference that has an initial reference count of 2.
16
+ ObjectReference obj_ref = Reference<Object>::New(Object::New(env), 2);
17
+
18
+ // Set a couple of different properties on the reference.
19
+ obj_ref.Set("hello", String::New(env, "world"));
20
+ obj_ref.Set(42, "The Answer to Life, the Universe, and Everything");
21
+
22
+ // Get the properties using the keys.
23
+ Value val1 = obj_ref.Get("hello");
24
+ Value val2 = obj_ref.Get(42);
25
+ }
26
+ ```
27
+
28
+ ## Methods
29
+
30
+ ### Initialization
31
+
32
+ ```cpp
33
+ static Napi::ObjectReference Napi::ObjectReference::New(const Napi::Object& value, uint32_t initialRefcount = 0);
34
+ ```
35
+
36
+ * `[in] value`: The `Napi::Object` which is to be referenced.
37
+
38
+ * `[in] initialRefcount`: The initial reference count.
39
+
40
+ Returns the newly created reference.
41
+
42
+ ```cpp
43
+ static Napi::ObjectReference Napi::Weak(const Napi::Object& value);
44
+ ```
45
+
46
+ Creates a "weak" reference to the value, in that the initial count of number of references is set to 0.
47
+
48
+ * `[in] value`: The value which is to be referenced.
49
+
50
+ Returns the newly created reference.
51
+
52
+ ```cpp
53
+ static Napi::ObjectReference Napi::Persistent(const Napi::Object& value);
54
+ ```
55
+
56
+ Creates a "persistent" reference to the value, in that the initial count of number of references is set to 1.
57
+
58
+ * `[in] value`: The value which is to be referenced.
59
+
60
+ Returns the newly created reference.
61
+
62
+ ### Empty Constructor
63
+
64
+ ```cpp
65
+ Napi::ObjectReference::ObjectReference();
66
+ ```
67
+
68
+ Returns a new _empty_ `Napi::ObjectReference` instance.
69
+
70
+ ### Constructor
71
+
72
+ ```cpp
73
+ Napi::ObjectReference::ObjectReference(napi_env env, napi_value value);
74
+ ```
75
+
76
+ * `[in] env`: The `napi_env` environment in which to construct the `Napi::ObjectReference` object.
77
+
78
+ * `[in] value`: The Node-API primitive value to be held by the `Napi::ObjectReference`.
79
+
80
+ Returns the newly created reference.
81
+
82
+ ### Set
83
+ ```cpp
84
+ bool Napi::ObjectReference::Set(___ key, ___ value);
85
+ ```
86
+
87
+ * `[in] key`: The name for the property being assigned.
88
+
89
+ * `[in] value`: The value being assigned to the property.
90
+
91
+ The `key` can be any of the following types:
92
+ - `const char*`
93
+ - `const std::string`
94
+ - `uint32_t`
95
+
96
+ The `value` can be any of the following types:
97
+ - `napi_value`
98
+ - `Napi::Value`
99
+ - `const char*`
100
+ - `bool`
101
+ - `double`
102
+
103
+ ### Get
104
+
105
+ ```cpp
106
+ Napi::Value Napi::ObjectReference::Get(___ key);
107
+ ```
108
+
109
+ * `[in] key`: The name of the property to return the value for.
110
+
111
+ Returns the [`Napi::Value`](value.md) associated with the key property. Returns NULL if no such key exists.
112
+
113
+ The `key` can be any of the following types:
114
+ - `const char*`
115
+ - `const std::string`
116
+ - `uint32_t`
117
+