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,402 +1,402 @@
1
- # Function
2
-
3
- The `Napi::Function` class provides a set of methods for creating a function object in
4
- native code that can later be called from JavaScript. The created function is not
5
- automatically visible from JavaScript. Instead it needs to be part of the add-on's
6
- module exports or be returned by one of the module's exported functions.
7
-
8
- In addition the `Napi::Function` class also provides methods that can be used to call
9
- functions that were created in JavaScript and passed to the native add-on.
10
-
11
- The `Napi::Function` class inherits its behavior from the `Napi::Object` class (for more info
12
- see: [`Napi::Object`](object.md)).
13
-
14
- > For callbacks that will be called with asynchronous events from a
15
- > non-JavaScript thread, please refer to [`Napi::ThreadSafeFunction`][] for more
16
- > examples.
17
-
18
- ## Example
19
-
20
- ```cpp
21
- #include <napi.h>
22
-
23
- using namespace Napi;
24
-
25
- Value Fn(const CallbackInfo& info) {
26
- Env env = info.Env();
27
- // ...
28
- return String::New(env, "Hello World");
29
- }
30
-
31
- Object Init(Env env, Object exports) {
32
- exports.Set(String::New(env, "fn"), Function::New<Fn>(env));
33
- return exports;
34
- }
35
-
36
- NODE_API_MODULE(NODE_GYP_MODULE_NAME, Init)
37
- ```
38
-
39
- The above code can be used from JavaScript as follows:
40
-
41
- ```js
42
- const addon = require('./addon');
43
- addon.fn();
44
- ```
45
-
46
- With the `Napi::Function` class it is possible to call a JavaScript function object
47
- from a native add-on with two different methods: `Call` and `MakeCallback`.
48
- The API of these two methods is very similar, but they are used in different
49
- contexts. The `MakeCallback` method is used to call from native code back into
50
- JavaScript after returning from an [asynchronous operation](async_operations.md)
51
- and in general in situations which don't have an existing JavaScript function on
52
- the stack. The `Call` method is used when there is already a JavaScript function
53
- on the stack (for example when running a native method called from JavaScript).
54
-
55
- ## Type definitions
56
-
57
- ### Napi::Function::VoidCallback
58
-
59
- This is the type describing a callback returning `void` that will be invoked
60
- from JavaScript.
61
-
62
- ```cpp
63
- using VoidCallback = void (*)(const Napi::CallbackInfo& info);
64
- ```
65
-
66
- ### Napi::Function::Callback
67
-
68
- This is the type describing a callback returning a value that will be invoked
69
- from JavaScript.
70
-
71
-
72
- ```cpp
73
- using Callback = Value (*)(const Napi::CallbackInfo& info);
74
- ```
75
-
76
- ## Methods
77
-
78
- ### Constructor
79
-
80
- Creates a new empty instance of `Napi::Function`.
81
-
82
- ```cpp
83
- Napi::Function::Function();
84
- ```
85
-
86
- ### Constructor
87
-
88
- Creates a new instance of the `Napi::Function` object.
89
-
90
- ```cpp
91
- Napi::Function::Function(napi_env env, napi_value value);
92
- ```
93
-
94
- - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
95
- - `[in] value`: The `napi_value` which is a handle for a JavaScript function.
96
-
97
- Returns a non-empty `Napi::Function` instance.
98
-
99
- ### New
100
-
101
- Creates an instance of a `Napi::Function` object.
102
-
103
- ```cpp
104
- template <Napi::VoidCallback cb>
105
- static Napi::Function New(napi_env env,
106
- const char* utf8name = nullptr,
107
- void* data = nullptr);
108
- ```
109
-
110
- - `[template] cb`: The native function to invoke when the JavaScript function is
111
- invoked.
112
- - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
113
- - `[in] utf8name`: Null-terminated string to be used as the name of the function.
114
- - `[in] data`: User-provided data context. This will be passed back into the
115
- function when invoked later.
116
-
117
- Returns an instance of a `Napi::Function` object.
118
-
119
- ### New
120
-
121
- Creates an instance of a `Napi::Function` object.
122
-
123
- ```cpp
124
- template <Napi::Callback cb>
125
- static Napi::Function New(napi_env env,
126
- const char* utf8name = nullptr,
127
- void* data = nullptr);
128
- ```
129
-
130
- - `[template] cb`: The native function to invoke when the JavaScript function is
131
- invoked.
132
- - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
133
- - `[in] utf8name`: Null-terminated string to be used as the name of the function.
134
- - `[in] data`: User-provided data context. This will be passed back into the
135
- function when invoked later.
136
-
137
- Returns an instance of a `Napi::Function` object.
138
-
139
- ### New
140
-
141
- Creates an instance of a `Napi::Function` object.
142
-
143
- ```cpp
144
- template <Napi::VoidCallback cb>
145
- static Napi::Function New(napi_env env,
146
- const std::string& utf8name,
147
- void* data = nullptr);
148
- ```
149
-
150
- - `[template] cb`: The native function to invoke when the JavaScript function is
151
- invoked.
152
- - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
153
- - `[in] utf8name`: String to be used as the name of the function.
154
- - `[in] data`: User-provided data context. This will be passed back into the
155
- function when invoked later.
156
-
157
- Returns an instance of a `Napi::Function` object.
158
-
159
- ### New
160
-
161
- Creates an instance of a `Napi::Function` object.
162
-
163
- ```cpp
164
- template <Napi::Callback cb>
165
- static Napi::Function New(napi_env env,
166
- const std::string& utf8name,
167
- void* data = nullptr);
168
- ```
169
-
170
- - `[template] cb`: The native function to invoke when the JavaScript function is
171
- invoked.
172
- - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
173
- - `[in] utf8name`: String to be used as the name of the function.
174
- - `[in] data`: User-provided data context. This will be passed back into the
175
- function when invoked later.
176
-
177
- Returns an instance of a `Napi::Function` object.
178
-
179
- ### New
180
-
181
- Creates an instance of a `Napi::Function` object.
182
-
183
- ```cpp
184
- template <typename Callable>
185
- static Napi::Function Napi::Function::New(napi_env env, Callable cb, const char* utf8name = nullptr, void* data = nullptr);
186
- ```
187
-
188
- - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
189
- - `[in] cb`: Object that implements `Callable`.
190
- - `[in] utf8name`: Null-terminated string to be used as the name of the function.
191
- - `[in] data`: User-provided data context. This will be passed back into the
192
- function when invoked later.
193
-
194
- Returns an instance of a `Napi::Function` object.
195
-
196
- ### New
197
-
198
- ```cpp
199
- template <typename Callable>
200
- static Napi::Function Napi::Function::New(napi_env env, Callable cb, const std::string& utf8name, void* data = nullptr);
201
- ```
202
-
203
- - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
204
- - `[in] cb`: Object that implements `Callable`.
205
- - `[in] utf8name`: String to be used as the name of the function.
206
- - `[in] data`: User-provided data context. This will be passed back into the
207
- function when invoked later.
208
-
209
- Returns an instance of a `Napi::Function` object.
210
-
211
- ### New
212
-
213
- Creates a new JavaScript value from one that represents the constructor for the
214
- object.
215
-
216
- ```cpp
217
- Napi::Object Napi::Function::New(const std::initializer_list<napi_value>& args) const;
218
- ```
219
-
220
- - `[in] args`: Initializer list of JavaScript values as `napi_value` representing
221
- the arguments of the constructor function.
222
-
223
- Returns a new JavaScript object.
224
-
225
- ### New
226
-
227
- Creates a new JavaScript value from one that represents the constructor for the
228
- object.
229
-
230
- ```cpp
231
- Napi::Object Napi::Function::New(const std::vector<napi_value>& args) const;
232
- ```
233
-
234
- - `[in] args`: Vector of JavaScript values as `napi_value` representing the
235
- arguments of the constructor function.
236
-
237
- Returns a new JavaScript object.
238
-
239
- ### New
240
-
241
- Creates a new JavaScript value from one that represents the constructor for the
242
- object.
243
-
244
- ```cpp
245
- Napi::Object Napi::Function::New(size_t argc, const napi_value* args) const;
246
- ```
247
-
248
- - `[in] argc`: The number of the arguments passed to the constructor function.
249
- - `[in] args`: Array of JavaScript values as `napi_value` representing the
250
- arguments of the constructor function.
251
-
252
- Returns a new JavaScript object.
253
-
254
- ### Call
255
-
256
- Calls a Javascript function from a native add-on.
257
-
258
- ```cpp
259
- Napi::Value Napi::Function::Call(const std::initializer_list<napi_value>& args) const;
260
- ```
261
-
262
- - `[in] args`: Initializer list of JavaScript values as `napi_value` representing
263
- the arguments of the function.
264
-
265
- Returns a `Napi::Value` representing the JavaScript value returned by the function.
266
-
267
- ### Call
268
-
269
- Calls a JavaScript function from a native add-on.
270
-
271
- ```cpp
272
- Napi::Value Napi::Function::Call(const std::vector<napi_value>& args) const;
273
- ```
274
-
275
- - `[in] args`: Vector of JavaScript values as `napi_value` representing the
276
- arguments of the function.
277
-
278
- Returns a `Napi::Value` representing the JavaScript value returned by the function.
279
-
280
- ### Call
281
-
282
- Calls a Javascript function from a native add-on.
283
-
284
- ```cpp
285
- Napi::Value Napi::Function::Call(size_t argc, const napi_value* args) const;
286
- ```
287
-
288
- - `[in] argc`: The number of the arguments passed to the function.
289
- - `[in] args`: Array of JavaScript values as `napi_value` representing the
290
- arguments of the function.
291
-
292
- Returns a `Napi::Value` representing the JavaScript value returned by the function.
293
-
294
- ### Call
295
-
296
- Calls a Javascript function from a native add-on.
297
-
298
- ```cpp
299
- Napi::Value Napi::Function::Call(napi_value recv, const std::initializer_list<napi_value>& args) const;
300
- ```
301
-
302
- - `[in] recv`: The `this` object passed to the called function.
303
- - `[in] args`: Initializer list of JavaScript values as `napi_value` representing
304
- the arguments of the function.
305
-
306
- Returns a `Napi::Value` representing the JavaScript value returned by the function.
307
-
308
- ### Call
309
-
310
- Calls a Javascript function from a native add-on.
311
-
312
- ```cpp
313
- Napi::Value Napi::Function::Call(napi_value recv, const std::vector<napi_value>& args) const;
314
- ```
315
-
316
- - `[in] recv`: The `this` object passed to the called function.
317
- - `[in] args`: Vector of JavaScript values as `napi_value` representing the
318
- arguments of the function.
319
-
320
- Returns a `Napi::Value` representing the JavaScript value returned by the function.
321
-
322
- ### Call
323
-
324
- Calls a Javascript function from a native add-on.
325
-
326
- ```cpp
327
- Napi::Value Napi::Function::Call(napi_value recv, size_t argc, const napi_value* args) const;
328
- ```
329
-
330
- - `[in] recv`: The `this` object passed to the called function.
331
- - `[in] argc`: The number of the arguments passed to the function.
332
- - `[in] args`: Array of JavaScript values as `napi_value` representing the
333
- arguments of the function.
334
-
335
- Returns a `Napi::Value` representing the JavaScript value returned by the function.
336
-
337
- ### MakeCallback
338
-
339
- Calls a Javascript function from a native add-on after an asynchronous operation.
340
-
341
- ```cpp
342
- Napi::Value Napi::Function::MakeCallback(napi_value recv, const std::initializer_list<napi_value>& args, napi_async_context context = nullptr) const;
343
- ```
344
-
345
- - `[in] recv`: The `this` object passed to the called function.
346
- - `[in] args`: Initializer list of JavaScript values as `napi_value` representing
347
- the arguments of the function.
348
- - `[in] context`: Context for the async operation that is invoking the callback.
349
- This should normally be a value previously obtained from [Napi::AsyncContext](async_context.md).
350
- However `nullptr` is also allowed, which indicates the current async context
351
- (if any) is to be used for the callback.
352
-
353
- Returns a `Napi::Value` representing the JavaScript value returned by the function.
354
-
355
- ### MakeCallback
356
-
357
- Calls a Javascript function from a native add-on after an asynchronous operation.
358
-
359
- ```cpp
360
- Napi::Value Napi::Function::MakeCallback(napi_value recv, const std::vector<napi_value>& args, napi_async_context context = nullptr) const;
361
- ```
362
-
363
- - `[in] recv`: The `this` object passed to the called function.
364
- - `[in] args`: List of JavaScript values as `napi_value` representing the
365
- arguments of the function.
366
- - `[in] context`: Context for the async operation that is invoking the callback.
367
- This should normally be a value previously obtained from [Napi::AsyncContext](async_context.md).
368
- However `nullptr` is also allowed, which indicates the current async context
369
- (if any) is to be used for the callback.
370
-
371
- Returns a `Napi::Value` representing the JavaScript value returned by the function.
372
-
373
- ### MakeCallback
374
-
375
- Calls a Javascript function from a native add-on after an asynchronous operation.
376
-
377
- ```cpp
378
- Napi::Value Napi::Function::MakeCallback(napi_value recv, size_t argc, const napi_value* args, napi_async_context context = nullptr) const;
379
- ```
380
-
381
- - `[in] recv`: The `this` object passed to the called function.
382
- - `[in] argc`: The number of the arguments passed to the function.
383
- - `[in] args`: Array of JavaScript values as `napi_value` representing the
384
- arguments of the function.
385
- - `[in] context`: Context for the async operation that is invoking the callback.
386
- This should normally be a value previously obtained from [Napi::AsyncContext](async_context.md).
387
- However `nullptr` is also allowed, which indicates the current async context
388
- (if any) is to be used for the callback.
389
-
390
- Returns a `Napi::Value` representing the JavaScript value returned by the function.
391
-
392
- ## Operator
393
-
394
- ```cpp
395
- Napi::Value Napi::Function::operator ()(const std::initializer_list<napi_value>& args) const;
396
- ```
397
-
398
- - `[in] args`: Initializer list of JavaScript values as `napi_value`.
399
-
400
- Returns a `Napi::Value` representing the JavaScript value returned by the function.
401
-
402
- [`Napi::ThreadSafeFunction`]: ./threadsafe_function.md
1
+ # Function
2
+
3
+ The `Napi::Function` class provides a set of methods for creating a function object in
4
+ native code that can later be called from JavaScript. The created function is not
5
+ automatically visible from JavaScript. Instead it needs to be part of the add-on's
6
+ module exports or be returned by one of the module's exported functions.
7
+
8
+ In addition the `Napi::Function` class also provides methods that can be used to call
9
+ functions that were created in JavaScript and passed to the native add-on.
10
+
11
+ The `Napi::Function` class inherits its behavior from the `Napi::Object` class (for more info
12
+ see: [`Napi::Object`](object.md)).
13
+
14
+ > For callbacks that will be called with asynchronous events from a
15
+ > non-JavaScript thread, please refer to [`Napi::ThreadSafeFunction`][] for more
16
+ > examples.
17
+
18
+ ## Example
19
+
20
+ ```cpp
21
+ #include <napi.h>
22
+
23
+ using namespace Napi;
24
+
25
+ Value Fn(const CallbackInfo& info) {
26
+ Env env = info.Env();
27
+ // ...
28
+ return String::New(env, "Hello World");
29
+ }
30
+
31
+ Object Init(Env env, Object exports) {
32
+ exports.Set(String::New(env, "fn"), Function::New<Fn>(env));
33
+ return exports;
34
+ }
35
+
36
+ NODE_API_MODULE(NODE_GYP_MODULE_NAME, Init)
37
+ ```
38
+
39
+ The above code can be used from JavaScript as follows:
40
+
41
+ ```js
42
+ const addon = require('./addon');
43
+ addon.fn();
44
+ ```
45
+
46
+ With the `Napi::Function` class it is possible to call a JavaScript function object
47
+ from a native add-on with two different methods: `Call` and `MakeCallback`.
48
+ The API of these two methods is very similar, but they are used in different
49
+ contexts. The `MakeCallback` method is used to call from native code back into
50
+ JavaScript after returning from an [asynchronous operation](async_operations.md)
51
+ and in general in situations which don't have an existing JavaScript function on
52
+ the stack. The `Call` method is used when there is already a JavaScript function
53
+ on the stack (for example when running a native method called from JavaScript).
54
+
55
+ ## Type definitions
56
+
57
+ ### Napi::Function::VoidCallback
58
+
59
+ This is the type describing a callback returning `void` that will be invoked
60
+ from JavaScript.
61
+
62
+ ```cpp
63
+ using VoidCallback = void (*)(const Napi::CallbackInfo& info);
64
+ ```
65
+
66
+ ### Napi::Function::Callback
67
+
68
+ This is the type describing a callback returning a value that will be invoked
69
+ from JavaScript.
70
+
71
+
72
+ ```cpp
73
+ using Callback = Value (*)(const Napi::CallbackInfo& info);
74
+ ```
75
+
76
+ ## Methods
77
+
78
+ ### Constructor
79
+
80
+ Creates a new empty instance of `Napi::Function`.
81
+
82
+ ```cpp
83
+ Napi::Function::Function();
84
+ ```
85
+
86
+ ### Constructor
87
+
88
+ Creates a new instance of the `Napi::Function` object.
89
+
90
+ ```cpp
91
+ Napi::Function::Function(napi_env env, napi_value value);
92
+ ```
93
+
94
+ - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
95
+ - `[in] value`: The `napi_value` which is a handle for a JavaScript function.
96
+
97
+ Returns a non-empty `Napi::Function` instance.
98
+
99
+ ### New
100
+
101
+ Creates an instance of a `Napi::Function` object.
102
+
103
+ ```cpp
104
+ template <Napi::VoidCallback cb>
105
+ static Napi::Function New(napi_env env,
106
+ const char* utf8name = nullptr,
107
+ void* data = nullptr);
108
+ ```
109
+
110
+ - `[template] cb`: The native function to invoke when the JavaScript function is
111
+ invoked.
112
+ - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
113
+ - `[in] utf8name`: Null-terminated string to be used as the name of the function.
114
+ - `[in] data`: User-provided data context. This will be passed back into the
115
+ function when invoked later.
116
+
117
+ Returns an instance of a `Napi::Function` object.
118
+
119
+ ### New
120
+
121
+ Creates an instance of a `Napi::Function` object.
122
+
123
+ ```cpp
124
+ template <Napi::Callback cb>
125
+ static Napi::Function New(napi_env env,
126
+ const char* utf8name = nullptr,
127
+ void* data = nullptr);
128
+ ```
129
+
130
+ - `[template] cb`: The native function to invoke when the JavaScript function is
131
+ invoked.
132
+ - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
133
+ - `[in] utf8name`: Null-terminated string to be used as the name of the function.
134
+ - `[in] data`: User-provided data context. This will be passed back into the
135
+ function when invoked later.
136
+
137
+ Returns an instance of a `Napi::Function` object.
138
+
139
+ ### New
140
+
141
+ Creates an instance of a `Napi::Function` object.
142
+
143
+ ```cpp
144
+ template <Napi::VoidCallback cb>
145
+ static Napi::Function New(napi_env env,
146
+ const std::string& utf8name,
147
+ void* data = nullptr);
148
+ ```
149
+
150
+ - `[template] cb`: The native function to invoke when the JavaScript function is
151
+ invoked.
152
+ - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
153
+ - `[in] utf8name`: String to be used as the name of the function.
154
+ - `[in] data`: User-provided data context. This will be passed back into the
155
+ function when invoked later.
156
+
157
+ Returns an instance of a `Napi::Function` object.
158
+
159
+ ### New
160
+
161
+ Creates an instance of a `Napi::Function` object.
162
+
163
+ ```cpp
164
+ template <Napi::Callback cb>
165
+ static Napi::Function New(napi_env env,
166
+ const std::string& utf8name,
167
+ void* data = nullptr);
168
+ ```
169
+
170
+ - `[template] cb`: The native function to invoke when the JavaScript function is
171
+ invoked.
172
+ - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
173
+ - `[in] utf8name`: String to be used as the name of the function.
174
+ - `[in] data`: User-provided data context. This will be passed back into the
175
+ function when invoked later.
176
+
177
+ Returns an instance of a `Napi::Function` object.
178
+
179
+ ### New
180
+
181
+ Creates an instance of a `Napi::Function` object.
182
+
183
+ ```cpp
184
+ template <typename Callable>
185
+ static Napi::Function Napi::Function::New(napi_env env, Callable cb, const char* utf8name = nullptr, void* data = nullptr);
186
+ ```
187
+
188
+ - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
189
+ - `[in] cb`: Object that implements `Callable`.
190
+ - `[in] utf8name`: Null-terminated string to be used as the name of the function.
191
+ - `[in] data`: User-provided data context. This will be passed back into the
192
+ function when invoked later.
193
+
194
+ Returns an instance of a `Napi::Function` object.
195
+
196
+ ### New
197
+
198
+ ```cpp
199
+ template <typename Callable>
200
+ static Napi::Function Napi::Function::New(napi_env env, Callable cb, const std::string& utf8name, void* data = nullptr);
201
+ ```
202
+
203
+ - `[in] env`: The `napi_env` environment in which to construct the `Napi::Function` object.
204
+ - `[in] cb`: Object that implements `Callable`.
205
+ - `[in] utf8name`: String to be used as the name of the function.
206
+ - `[in] data`: User-provided data context. This will be passed back into the
207
+ function when invoked later.
208
+
209
+ Returns an instance of a `Napi::Function` object.
210
+
211
+ ### New
212
+
213
+ Creates a new JavaScript value from one that represents the constructor for the
214
+ object.
215
+
216
+ ```cpp
217
+ Napi::Object Napi::Function::New(const std::initializer_list<napi_value>& args) const;
218
+ ```
219
+
220
+ - `[in] args`: Initializer list of JavaScript values as `napi_value` representing
221
+ the arguments of the constructor function.
222
+
223
+ Returns a new JavaScript object.
224
+
225
+ ### New
226
+
227
+ Creates a new JavaScript value from one that represents the constructor for the
228
+ object.
229
+
230
+ ```cpp
231
+ Napi::Object Napi::Function::New(const std::vector<napi_value>& args) const;
232
+ ```
233
+
234
+ - `[in] args`: Vector of JavaScript values as `napi_value` representing the
235
+ arguments of the constructor function.
236
+
237
+ Returns a new JavaScript object.
238
+
239
+ ### New
240
+
241
+ Creates a new JavaScript value from one that represents the constructor for the
242
+ object.
243
+
244
+ ```cpp
245
+ Napi::Object Napi::Function::New(size_t argc, const napi_value* args) const;
246
+ ```
247
+
248
+ - `[in] argc`: The number of the arguments passed to the constructor function.
249
+ - `[in] args`: Array of JavaScript values as `napi_value` representing the
250
+ arguments of the constructor function.
251
+
252
+ Returns a new JavaScript object.
253
+
254
+ ### Call
255
+
256
+ Calls a Javascript function from a native add-on.
257
+
258
+ ```cpp
259
+ Napi::Value Napi::Function::Call(const std::initializer_list<napi_value>& args) const;
260
+ ```
261
+
262
+ - `[in] args`: Initializer list of JavaScript values as `napi_value` representing
263
+ the arguments of the function.
264
+
265
+ Returns a `Napi::Value` representing the JavaScript value returned by the function.
266
+
267
+ ### Call
268
+
269
+ Calls a JavaScript function from a native add-on.
270
+
271
+ ```cpp
272
+ Napi::Value Napi::Function::Call(const std::vector<napi_value>& args) const;
273
+ ```
274
+
275
+ - `[in] args`: Vector of JavaScript values as `napi_value` representing the
276
+ arguments of the function.
277
+
278
+ Returns a `Napi::Value` representing the JavaScript value returned by the function.
279
+
280
+ ### Call
281
+
282
+ Calls a Javascript function from a native add-on.
283
+
284
+ ```cpp
285
+ Napi::Value Napi::Function::Call(size_t argc, const napi_value* args) const;
286
+ ```
287
+
288
+ - `[in] argc`: The number of the arguments passed to the function.
289
+ - `[in] args`: Array of JavaScript values as `napi_value` representing the
290
+ arguments of the function.
291
+
292
+ Returns a `Napi::Value` representing the JavaScript value returned by the function.
293
+
294
+ ### Call
295
+
296
+ Calls a Javascript function from a native add-on.
297
+
298
+ ```cpp
299
+ Napi::Value Napi::Function::Call(napi_value recv, const std::initializer_list<napi_value>& args) const;
300
+ ```
301
+
302
+ - `[in] recv`: The `this` object passed to the called function.
303
+ - `[in] args`: Initializer list of JavaScript values as `napi_value` representing
304
+ the arguments of the function.
305
+
306
+ Returns a `Napi::Value` representing the JavaScript value returned by the function.
307
+
308
+ ### Call
309
+
310
+ Calls a Javascript function from a native add-on.
311
+
312
+ ```cpp
313
+ Napi::Value Napi::Function::Call(napi_value recv, const std::vector<napi_value>& args) const;
314
+ ```
315
+
316
+ - `[in] recv`: The `this` object passed to the called function.
317
+ - `[in] args`: Vector of JavaScript values as `napi_value` representing the
318
+ arguments of the function.
319
+
320
+ Returns a `Napi::Value` representing the JavaScript value returned by the function.
321
+
322
+ ### Call
323
+
324
+ Calls a Javascript function from a native add-on.
325
+
326
+ ```cpp
327
+ Napi::Value Napi::Function::Call(napi_value recv, size_t argc, const napi_value* args) const;
328
+ ```
329
+
330
+ - `[in] recv`: The `this` object passed to the called function.
331
+ - `[in] argc`: The number of the arguments passed to the function.
332
+ - `[in] args`: Array of JavaScript values as `napi_value` representing the
333
+ arguments of the function.
334
+
335
+ Returns a `Napi::Value` representing the JavaScript value returned by the function.
336
+
337
+ ### MakeCallback
338
+
339
+ Calls a Javascript function from a native add-on after an asynchronous operation.
340
+
341
+ ```cpp
342
+ Napi::Value Napi::Function::MakeCallback(napi_value recv, const std::initializer_list<napi_value>& args, napi_async_context context = nullptr) const;
343
+ ```
344
+
345
+ - `[in] recv`: The `this` object passed to the called function.
346
+ - `[in] args`: Initializer list of JavaScript values as `napi_value` representing
347
+ the arguments of the function.
348
+ - `[in] context`: Context for the async operation that is invoking the callback.
349
+ This should normally be a value previously obtained from [Napi::AsyncContext](async_context.md).
350
+ However `nullptr` is also allowed, which indicates the current async context
351
+ (if any) is to be used for the callback.
352
+
353
+ Returns a `Napi::Value` representing the JavaScript value returned by the function.
354
+
355
+ ### MakeCallback
356
+
357
+ Calls a Javascript function from a native add-on after an asynchronous operation.
358
+
359
+ ```cpp
360
+ Napi::Value Napi::Function::MakeCallback(napi_value recv, const std::vector<napi_value>& args, napi_async_context context = nullptr) const;
361
+ ```
362
+
363
+ - `[in] recv`: The `this` object passed to the called function.
364
+ - `[in] args`: List of JavaScript values as `napi_value` representing the
365
+ arguments of the function.
366
+ - `[in] context`: Context for the async operation that is invoking the callback.
367
+ This should normally be a value previously obtained from [Napi::AsyncContext](async_context.md).
368
+ However `nullptr` is also allowed, which indicates the current async context
369
+ (if any) is to be used for the callback.
370
+
371
+ Returns a `Napi::Value` representing the JavaScript value returned by the function.
372
+
373
+ ### MakeCallback
374
+
375
+ Calls a Javascript function from a native add-on after an asynchronous operation.
376
+
377
+ ```cpp
378
+ Napi::Value Napi::Function::MakeCallback(napi_value recv, size_t argc, const napi_value* args, napi_async_context context = nullptr) const;
379
+ ```
380
+
381
+ - `[in] recv`: The `this` object passed to the called function.
382
+ - `[in] argc`: The number of the arguments passed to the function.
383
+ - `[in] args`: Array of JavaScript values as `napi_value` representing the
384
+ arguments of the function.
385
+ - `[in] context`: Context for the async operation that is invoking the callback.
386
+ This should normally be a value previously obtained from [Napi::AsyncContext](async_context.md).
387
+ However `nullptr` is also allowed, which indicates the current async context
388
+ (if any) is to be used for the callback.
389
+
390
+ Returns a `Napi::Value` representing the JavaScript value returned by the function.
391
+
392
+ ## Operator
393
+
394
+ ```cpp
395
+ Napi::Value Napi::Function::operator ()(const std::initializer_list<napi_value>& args) const;
396
+ ```
397
+
398
+ - `[in] args`: Initializer list of JavaScript values as `napi_value`.
399
+
400
+ Returns a `Napi::Value` representing the JavaScript value returned by the function.
401
+
402
+ [`Napi::ThreadSafeFunction`]: ./threadsafe_function.md