koffi 0.9.3 → 0.9.6

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 (330) hide show
  1. package/CMakeLists.txt +63 -60
  2. package/README.md +162 -153
  3. package/package.json +19 -18
  4. package/src/call.hh +27 -27
  5. package/src/call_arm32.cc +514 -0
  6. package/src/call_arm32_fwd.S +108 -0
  7. package/src/call_arm64.cc +497 -482
  8. package/src/call_arm64_fwd.S +110 -115
  9. package/src/call_x64_sysv.cc +477 -477
  10. package/src/call_x64_sysv_fwd.S +131 -131
  11. package/src/call_x64_win.cc +243 -243
  12. package/src/call_x64_win_fwd.asm +105 -105
  13. package/src/call_x86.cc +259 -259
  14. package/src/call_x86_fwd.S +48 -48
  15. package/src/call_x86_fwd.asm +50 -50
  16. package/src/ffi.cc +504 -504
  17. package/src/ffi.hh +136 -135
  18. package/src/util.cc +297 -296
  19. package/src/util.hh +80 -80
  20. package/vendor/dragonbox/CMakeLists.txt +122 -122
  21. package/vendor/dragonbox/LICENSE-Apache2-LLVM +218 -218
  22. package/vendor/dragonbox/LICENSE-Boost +23 -23
  23. package/vendor/dragonbox/README.md +277 -277
  24. package/vendor/dragonbox/cmake/dragonboxConfig.cmake +1 -1
  25. package/vendor/dragonbox/include/dragonbox/dragonbox.h +2674 -2670
  26. package/vendor/dragonbox/include/dragonbox/dragonbox_to_chars.h +108 -108
  27. package/vendor/dragonbox/other_files/Dragonbox.pdf +0 -0
  28. package/vendor/dragonbox/other_files/unknown_win64_vc2019.html +539 -539
  29. package/vendor/dragonbox/source/dragonbox_to_chars.cpp +303 -303
  30. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/CMakeLists.txt +23 -23
  31. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.cpp +238 -238
  32. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/fp_to_chars.h +95 -95
  33. package/vendor/dragonbox/subproject/3rdparty/grisu_exact/grisu_exact.h +2666 -2666
  34. package/vendor/dragonbox/subproject/3rdparty/ryu/CMakeLists.txt +16 -16
  35. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/common.h +114 -114
  36. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s.c +509 -509
  37. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_full_table.h +367 -367
  38. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/d2s_intrinsics.h +357 -357
  39. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/digit_table.h +35 -35
  40. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s.c +345 -345
  41. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_full_table.h +55 -55
  42. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/f2s_intrinsics.h +128 -128
  43. package/vendor/dragonbox/subproject/3rdparty/ryu/ryu/ryu.h +46 -46
  44. package/vendor/dragonbox/subproject/3rdparty/schubfach/CMakeLists.txt +21 -21
  45. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.cc +699 -699
  46. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_32.h +31 -31
  47. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.cc +1354 -1354
  48. package/vendor/dragonbox/subproject/3rdparty/schubfach/schubfach_64.h +31 -31
  49. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/example_shaded_plots.m +68 -68
  50. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/license.txt +25 -25
  51. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution.m +92 -92
  52. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_distribution_prctile.m +121 -121
  53. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_histogram_shaded.m +99 -99
  54. package/vendor/dragonbox/subproject/3rdparty/shaded_plots/plot_shaded.m +93 -93
  55. package/vendor/dragonbox/subproject/benchmark/CMakeLists.txt +64 -64
  56. package/vendor/dragonbox/subproject/benchmark/include/benchmark.h +40 -40
  57. package/vendor/dragonbox/subproject/benchmark/matlab/plot_benchmarks.m +21 -21
  58. package/vendor/dragonbox/subproject/benchmark/matlab/plot_digit_benchmark.m +78 -78
  59. package/vendor/dragonbox/subproject/benchmark/matlab/plot_uniform_benchmark.m +95 -95
  60. package/vendor/dragonbox/subproject/benchmark/source/benchmark.cpp +237 -237
  61. package/vendor/dragonbox/subproject/benchmark/source/dragonbox.cpp +30 -30
  62. package/vendor/dragonbox/subproject/benchmark/source/grisu_exact.cpp +36 -36
  63. package/vendor/dragonbox/subproject/benchmark/source/ryu.cpp +27 -27
  64. package/vendor/dragonbox/subproject/benchmark/source/schubfach.cpp +31 -31
  65. package/vendor/dragonbox/subproject/common/CMakeLists.txt +41 -41
  66. package/vendor/dragonbox/subproject/common/include/best_rational_approx.h +96 -96
  67. package/vendor/dragonbox/subproject/common/include/big_uint.h +217 -217
  68. package/vendor/dragonbox/subproject/common/include/continued_fractions.h +173 -173
  69. package/vendor/dragonbox/subproject/common/include/good_rational_approx.h +266 -266
  70. package/vendor/dragonbox/subproject/common/include/random_float.h +182 -182
  71. package/vendor/dragonbox/subproject/common/include/rational_continued_fractions.h +56 -56
  72. package/vendor/dragonbox/subproject/common/source/big_uint.cpp +601 -601
  73. package/vendor/dragonbox/subproject/meta/CMakeLists.txt +40 -40
  74. package/vendor/dragonbox/subproject/meta/results/binary32_generated_cache.txt +81 -81
  75. package/vendor/dragonbox/subproject/meta/results/binary64_compressed_cache_error_table.txt +9 -9
  76. package/vendor/dragonbox/subproject/meta/results/binary64_generated_cache.txt +622 -622
  77. package/vendor/dragonbox/subproject/meta/source/generate_cache.cpp +126 -126
  78. package/vendor/dragonbox/subproject/meta/source/live_test.cpp +81 -81
  79. package/vendor/dragonbox/subproject/meta/source/perf_test.cpp +104 -104
  80. package/vendor/dragonbox/subproject/meta/source/sandbox.cpp +20 -20
  81. package/vendor/dragonbox/subproject/test/CMakeLists.txt +69 -69
  82. package/vendor/dragonbox/subproject/test/results/binary32.csv +255 -255
  83. package/vendor/dragonbox/subproject/test/results/binary64.csv +2047 -2047
  84. package/vendor/dragonbox/subproject/test/results/plot_required_bits.m +17 -17
  85. package/vendor/dragonbox/subproject/test/source/test_all_shorter_interval_cases.cpp +88 -88
  86. package/vendor/dragonbox/subproject/test/source/uniform_random_test.cpp +95 -95
  87. package/vendor/dragonbox/subproject/test/source/verify_cache_precision.cpp +337 -337
  88. package/vendor/dragonbox/subproject/test/source/verify_compressed_cache.cpp +154 -154
  89. package/vendor/dragonbox/subproject/test/source/verify_fast_multiplication.cpp +168 -168
  90. package/vendor/dragonbox/subproject/test/source/verify_log_computation.cpp +251 -251
  91. package/vendor/dragonbox/subproject/test/source/verify_magic_division.cpp +113 -113
  92. package/vendor/libcc/libcc.cc +7651 -7651
  93. package/vendor/libcc/libcc.hh +4312 -4312
  94. package/vendor/node-addon-api/CHANGELOG.md +859 -859
  95. package/vendor/node-addon-api/CODE_OF_CONDUCT.md +4 -4
  96. package/vendor/node-addon-api/CONTRIBUTING.md +93 -93
  97. package/vendor/node-addon-api/LICENSE.md +12 -12
  98. package/vendor/node-addon-api/README.md +293 -293
  99. package/vendor/node-addon-api/appveyor.yml +37 -37
  100. package/vendor/node-addon-api/benchmark/README.md +47 -47
  101. package/vendor/node-addon-api/benchmark/binding.gyp +25 -25
  102. package/vendor/node-addon-api/benchmark/function_args.cc +217 -217
  103. package/vendor/node-addon-api/benchmark/function_args.js +60 -60
  104. package/vendor/node-addon-api/benchmark/index.js +34 -34
  105. package/vendor/node-addon-api/benchmark/property_descriptor.cc +91 -91
  106. package/vendor/node-addon-api/benchmark/property_descriptor.js +37 -37
  107. package/vendor/node-addon-api/common.gypi +21 -21
  108. package/vendor/node-addon-api/doc/addon.md +163 -163
  109. package/vendor/node-addon-api/doc/array.md +81 -81
  110. package/vendor/node-addon-api/doc/array_buffer.md +155 -155
  111. package/vendor/node-addon-api/doc/async_context.md +86 -86
  112. package/vendor/node-addon-api/doc/async_operations.md +31 -31
  113. package/vendor/node-addon-api/doc/async_worker.md +427 -427
  114. package/vendor/node-addon-api/doc/async_worker_variants.md +557 -557
  115. package/vendor/node-addon-api/doc/bigint.md +97 -97
  116. package/vendor/node-addon-api/doc/boolean.md +68 -68
  117. package/vendor/node-addon-api/doc/buffer.md +150 -150
  118. package/vendor/node-addon-api/doc/callback_scope.md +54 -54
  119. package/vendor/node-addon-api/doc/callbackinfo.md +97 -97
  120. package/vendor/node-addon-api/doc/checker-tool.md +32 -32
  121. package/vendor/node-addon-api/doc/class_property_descriptor.md +115 -115
  122. package/vendor/node-addon-api/doc/cmake-js.md +68 -68
  123. package/vendor/node-addon-api/doc/conversion-tool.md +27 -27
  124. package/vendor/node-addon-api/doc/creating_a_release.md +62 -62
  125. package/vendor/node-addon-api/doc/dataview.md +248 -248
  126. package/vendor/node-addon-api/doc/date.md +68 -68
  127. package/vendor/node-addon-api/doc/env.md +196 -196
  128. package/vendor/node-addon-api/doc/error.md +120 -120
  129. package/vendor/node-addon-api/doc/error_handling.md +254 -254
  130. package/vendor/node-addon-api/doc/escapable_handle_scope.md +80 -80
  131. package/vendor/node-addon-api/doc/external.md +63 -63
  132. package/vendor/node-addon-api/doc/function.md +402 -402
  133. package/vendor/node-addon-api/doc/function_reference.md +238 -238
  134. package/vendor/node-addon-api/doc/generator.md +13 -13
  135. package/vendor/node-addon-api/doc/handle_scope.md +63 -63
  136. package/vendor/node-addon-api/doc/hierarchy.md +91 -91
  137. package/vendor/node-addon-api/doc/instance_wrap.md +408 -408
  138. package/vendor/node-addon-api/doc/maybe.md +76 -76
  139. package/vendor/node-addon-api/doc/memory_management.md +27 -27
  140. package/vendor/node-addon-api/doc/name.md +29 -29
  141. package/vendor/node-addon-api/doc/node-gyp.md +82 -82
  142. package/vendor/node-addon-api/doc/number.md +163 -163
  143. package/vendor/node-addon-api/doc/object.md +432 -432
  144. package/vendor/node-addon-api/doc/object_lifetime_management.md +83 -83
  145. package/vendor/node-addon-api/doc/object_reference.md +117 -117
  146. package/vendor/node-addon-api/doc/object_wrap.md +561 -561
  147. package/vendor/node-addon-api/doc/prebuild_tools.md +16 -16
  148. package/vendor/node-addon-api/doc/promises.md +79 -79
  149. package/vendor/node-addon-api/doc/property_descriptor.md +286 -286
  150. package/vendor/node-addon-api/doc/propertylvalue.md +50 -50
  151. package/vendor/node-addon-api/doc/range_error.md +59 -59
  152. package/vendor/node-addon-api/doc/reference.md +113 -113
  153. package/vendor/node-addon-api/doc/setup.md +110 -110
  154. package/vendor/node-addon-api/doc/string.md +93 -93
  155. package/vendor/node-addon-api/doc/symbol.md +60 -60
  156. package/vendor/node-addon-api/doc/threadsafe.md +121 -121
  157. package/vendor/node-addon-api/doc/threadsafe_function.md +290 -290
  158. package/vendor/node-addon-api/doc/type_error.md +59 -59
  159. package/vendor/node-addon-api/doc/typed_array.md +78 -78
  160. package/vendor/node-addon-api/doc/typed_array_of.md +137 -137
  161. package/vendor/node-addon-api/doc/typed_threadsafe_function.md +306 -306
  162. package/vendor/node-addon-api/doc/value.md +340 -340
  163. package/vendor/node-addon-api/doc/version_management.md +43 -43
  164. package/vendor/node-addon-api/except.gypi +25 -25
  165. package/vendor/node-addon-api/index.js +11 -11
  166. package/vendor/node-addon-api/napi-inl.deprecated.h +192 -192
  167. package/vendor/node-addon-api/napi-inl.h +6209 -6209
  168. package/vendor/node-addon-api/napi.h +2983 -2983
  169. package/vendor/node-addon-api/node_api.gyp +9 -9
  170. package/vendor/node-addon-api/noexcept.gypi +26 -26
  171. package/vendor/node-addon-api/package-support.json +21 -21
  172. package/vendor/node-addon-api/package.json +399 -399
  173. package/vendor/node-addon-api/test/README.md +91 -91
  174. package/vendor/node-addon-api/test/addon.cc +36 -36
  175. package/vendor/node-addon-api/test/addon.js +11 -11
  176. package/vendor/node-addon-api/test/addon_build/index.js +49 -49
  177. package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +17 -17
  178. package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +62 -62
  179. package/vendor/node-addon-api/test/addon_build/tpl/index.js +9 -9
  180. package/vendor/node-addon-api/test/addon_build/tpl/package.json +11 -11
  181. package/vendor/node-addon-api/test/addon_data.cc +99 -99
  182. package/vendor/node-addon-api/test/addon_data.js +46 -46
  183. package/vendor/node-addon-api/test/array_buffer.cc +243 -243
  184. package/vendor/node-addon-api/test/array_buffer.js +69 -69
  185. package/vendor/node-addon-api/test/async_context.cc +21 -21
  186. package/vendor/node-addon-api/test/async_context.js +86 -86
  187. package/vendor/node-addon-api/test/async_progress_queue_worker.cc +83 -83
  188. package/vendor/node-addon-api/test/async_progress_queue_worker.js +46 -46
  189. package/vendor/node-addon-api/test/async_progress_worker.cc +134 -134
  190. package/vendor/node-addon-api/test/async_progress_worker.js +61 -61
  191. package/vendor/node-addon-api/test/async_worker.cc +106 -106
  192. package/vendor/node-addon-api/test/async_worker.js +179 -179
  193. package/vendor/node-addon-api/test/async_worker_nocallback.js +13 -13
  194. package/vendor/node-addon-api/test/async_worker_persistent.cc +63 -63
  195. package/vendor/node-addon-api/test/async_worker_persistent.js +24 -24
  196. package/vendor/node-addon-api/test/basic_types/array.cc +40 -40
  197. package/vendor/node-addon-api/test/basic_types/array.js +35 -35
  198. package/vendor/node-addon-api/test/basic_types/boolean.cc +38 -38
  199. package/vendor/node-addon-api/test/basic_types/boolean.js +35 -35
  200. package/vendor/node-addon-api/test/basic_types/number.cc +99 -99
  201. package/vendor/node-addon-api/test/basic_types/number.js +114 -114
  202. package/vendor/node-addon-api/test/basic_types/value.cc +120 -120
  203. package/vendor/node-addon-api/test/basic_types/value.js +133 -133
  204. package/vendor/node-addon-api/test/bigint.cc +91 -91
  205. package/vendor/node-addon-api/test/bigint.js +53 -53
  206. package/vendor/node-addon-api/test/binding-swallowexcept.cc +12 -12
  207. package/vendor/node-addon-api/test/binding.cc +171 -171
  208. package/vendor/node-addon-api/test/binding.gyp +117 -117
  209. package/vendor/node-addon-api/test/buffer.cc +183 -183
  210. package/vendor/node-addon-api/test/buffer.js +69 -69
  211. package/vendor/node-addon-api/test/callbackscope.cc +22 -22
  212. package/vendor/node-addon-api/test/callbackscope.js +49 -49
  213. package/vendor/node-addon-api/test/common/index.js +113 -113
  214. package/vendor/node-addon-api/test/common/test_helper.h +61 -61
  215. package/vendor/node-addon-api/test/dataview/dataview.cc +48 -48
  216. package/vendor/node-addon-api/test/dataview/dataview.js +35 -35
  217. package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +115 -115
  218. package/vendor/node-addon-api/test/dataview/dataview_read_write.js +90 -90
  219. package/vendor/node-addon-api/test/date.cc +44 -44
  220. package/vendor/node-addon-api/test/date.js +18 -18
  221. package/vendor/node-addon-api/test/env_cleanup.cc +88 -88
  222. package/vendor/node-addon-api/test/env_cleanup.js +56 -56
  223. package/vendor/node-addon-api/test/error.cc +287 -287
  224. package/vendor/node-addon-api/test/error.js +81 -81
  225. package/vendor/node-addon-api/test/error_handling_for_primitives.cc +13 -13
  226. package/vendor/node-addon-api/test/error_handling_for_primitives.js +29 -29
  227. package/vendor/node-addon-api/test/error_terminating_environment.js +94 -94
  228. package/vendor/node-addon-api/test/external.cc +81 -81
  229. package/vendor/node-addon-api/test/external.js +88 -88
  230. package/vendor/node-addon-api/test/function.cc +295 -295
  231. package/vendor/node-addon-api/test/function.js +121 -121
  232. package/vendor/node-addon-api/test/function_reference.cc +202 -202
  233. package/vendor/node-addon-api/test/function_reference.js +157 -157
  234. package/vendor/node-addon-api/test/globalObject/global_object.cc +61 -61
  235. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +31 -31
  236. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +61 -61
  237. package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +40 -40
  238. package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +57 -57
  239. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +28 -28
  240. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +48 -48
  241. package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +30 -30
  242. package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +58 -58
  243. package/vendor/node-addon-api/test/handlescope.cc +60 -60
  244. package/vendor/node-addon-api/test/handlescope.js +14 -14
  245. package/vendor/node-addon-api/test/index.js +136 -136
  246. package/vendor/node-addon-api/test/maybe/check.cc +23 -23
  247. package/vendor/node-addon-api/test/maybe/index.js +38 -38
  248. package/vendor/node-addon-api/test/memory_management.cc +17 -17
  249. package/vendor/node-addon-api/test/memory_management.js +9 -9
  250. package/vendor/node-addon-api/test/movable_callbacks.cc +23 -23
  251. package/vendor/node-addon-api/test/movable_callbacks.js +21 -21
  252. package/vendor/node-addon-api/test/name.cc +108 -108
  253. package/vendor/node-addon-api/test/name.js +59 -59
  254. package/vendor/node-addon-api/test/napi_child.js +14 -14
  255. package/vendor/node-addon-api/test/object/delete_property.cc +38 -38
  256. package/vendor/node-addon-api/test/object/delete_property.js +41 -41
  257. package/vendor/node-addon-api/test/object/finalizer.cc +29 -29
  258. package/vendor/node-addon-api/test/object/finalizer.js +28 -28
  259. package/vendor/node-addon-api/test/object/get_property.cc +34 -34
  260. package/vendor/node-addon-api/test/object/get_property.js +40 -40
  261. package/vendor/node-addon-api/test/object/has_own_property.cc +34 -34
  262. package/vendor/node-addon-api/test/object/has_own_property.js +34 -34
  263. package/vendor/node-addon-api/test/object/has_property.cc +38 -38
  264. package/vendor/node-addon-api/test/object/has_property.js +37 -37
  265. package/vendor/node-addon-api/test/object/object.cc +348 -348
  266. package/vendor/node-addon-api/test/object/object.js +217 -217
  267. package/vendor/node-addon-api/test/object/object_deprecated.cc +66 -66
  268. package/vendor/node-addon-api/test/object/object_deprecated.js +47 -47
  269. package/vendor/node-addon-api/test/object/object_freeze_seal.cc +25 -25
  270. package/vendor/node-addon-api/test/object/object_freeze_seal.js +61 -61
  271. package/vendor/node-addon-api/test/object/set_property.cc +37 -37
  272. package/vendor/node-addon-api/test/object/set_property.js +29 -29
  273. package/vendor/node-addon-api/test/object/subscript_operator.cc +42 -42
  274. package/vendor/node-addon-api/test/object/subscript_operator.js +17 -17
  275. package/vendor/node-addon-api/test/object_reference.cc +219 -219
  276. package/vendor/node-addon-api/test/object_reference.js +259 -259
  277. package/vendor/node-addon-api/test/objectwrap.cc +268 -268
  278. package/vendor/node-addon-api/test/objectwrap.js +284 -284
  279. package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +26 -26
  280. package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +18 -18
  281. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +30 -30
  282. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +13 -13
  283. package/vendor/node-addon-api/test/objectwrap_removewrap.cc +45 -45
  284. package/vendor/node-addon-api/test/objectwrap_removewrap.js +40 -40
  285. package/vendor/node-addon-api/test/objectwrap_worker_thread.js +19 -19
  286. package/vendor/node-addon-api/test/promise.cc +29 -29
  287. package/vendor/node-addon-api/test/promise.js +18 -18
  288. package/vendor/node-addon-api/test/reference.cc +24 -24
  289. package/vendor/node-addon-api/test/reference.js +14 -14
  290. package/vendor/node-addon-api/test/run_script.cc +56 -56
  291. package/vendor/node-addon-api/test/run_script.js +45 -45
  292. package/vendor/node-addon-api/test/symbol.cc +79 -79
  293. package/vendor/node-addon-api/test/symbol.js +73 -73
  294. package/vendor/node-addon-api/test/testUtil.js +54 -54
  295. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +195 -195
  296. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +188 -188
  297. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +63 -63
  298. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +12 -12
  299. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +115 -115
  300. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +14 -14
  301. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +26 -26
  302. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +7 -7
  303. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +225 -225
  304. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +59 -59
  305. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +42 -42
  306. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +53 -53
  307. package/vendor/node-addon-api/test/thunking_manual.cc +140 -140
  308. package/vendor/node-addon-api/test/thunking_manual.js +17 -17
  309. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +215 -215
  310. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +188 -188
  311. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +68 -68
  312. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +12 -12
  313. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +127 -127
  314. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +14 -14
  315. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +28 -28
  316. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +7 -7
  317. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +237 -237
  318. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +59 -59
  319. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +53 -53
  320. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +53 -53
  321. package/vendor/node-addon-api/test/typedarray-bigint.js +58 -58
  322. package/vendor/node-addon-api/test/typedarray.cc +216 -216
  323. package/vendor/node-addon-api/test/typedarray.js +69 -69
  324. package/vendor/node-addon-api/test/version_management.cc +27 -27
  325. package/vendor/node-addon-api/test/version_management.js +31 -31
  326. package/vendor/node-addon-api/tools/README.md +73 -73
  327. package/vendor/node-addon-api/tools/check-napi.js +100 -100
  328. package/vendor/node-addon-api/tools/clang-format.js +68 -68
  329. package/vendor/node-addon-api/tools/conversion.js +309 -309
  330. package/vendor/node-addon-api/tools/eslint-format.js +71 -71
@@ -1,432 +1,432 @@
1
- # Object
2
-
3
- Class `Napi::Object` inherits from class [`Napi::Value`][].
4
-
5
- The `Napi::Object` class corresponds to a JavaScript object. It is extended by the following node-addon-api classes that you may use when working with more specific types:
6
-
7
- - [`Napi::Array`](array.md)
8
- - [`Napi::ArrayBuffer`](array_buffer.md)
9
- - [`Napi::Buffer<T>`](buffer.md)
10
- - [`Napi::Function`](function.md)
11
- - [`Napi::TypedArray`](typed_array.md).
12
-
13
- This class provides a number of convenience methods, most of which are used to set or get properties on a JavaScript object. For example, Set() and Get().
14
-
15
- ## Example
16
- ```cpp
17
- #include <napi.h>
18
-
19
- using namespace Napi;
20
-
21
- Void Init(Env env) {
22
-
23
- // Create a new instance
24
- Object obj = Object::New(env);
25
-
26
- // Assign values to properties
27
- obj.Set("hello", "world");
28
- obj.Set(uint32_t(42), "The Answer to Life, the Universe, and Everything");
29
- obj.Set("Douglas Adams", true);
30
-
31
- // Get properties
32
- Value val1 = obj.Get("hello");
33
- Value val2 = obj.Get(uint32_t(42));
34
- Value val3 = obj.Get("Douglas Adams");
35
-
36
- // Test if objects have properties.
37
- bool obj1 = obj.Has("hello"); // true
38
- bool obj2 = obj.Has("world"); // false
39
-
40
- }
41
- ```
42
-
43
- ## Methods
44
-
45
- ### Empty Constructor
46
-
47
- ```cpp
48
- Napi::Object::Object();
49
- ```
50
- Creates a new empty Object instance.
51
-
52
- ### Constructor
53
-
54
- ```cpp
55
- Napi::Object::Object(napi_env env, napi_value value);
56
- ```
57
- - `[in] env`: The `napi_env` environment in which to construct the Value object.
58
-
59
- - `[in] value`: The `napi_value` which is a handle for a JavaScript object.
60
-
61
- Creates a non-empty `Napi::Object` instance.
62
-
63
- ### New()
64
-
65
- ```cpp
66
- Napi::Object Napi::Object::New(napi_env env);
67
- ```
68
- - `[in] env`: The `napi_env` environment in which to construct the `Napi::Value` object.
69
-
70
- Creates a new `Napi::Object` value.
71
-
72
- ### Set()
73
-
74
- ```cpp
75
- bool Napi::Object::Set (____ key, ____ value);
76
- ```
77
- - `[in] key`: The name for the property being assigned.
78
- - `[in] value`: The value being assigned to the property.
79
-
80
- Add a property with the specified key with the specified value to the object.
81
-
82
- The key can be any of the following types:
83
- - `napi_value`
84
- - [`Napi::Value`](value.md)
85
- - `const char*`
86
- - `const std::string&`
87
- - `uint32_t`
88
-
89
- The `value` can be of any type that is accepted by [`Napi::Value::From`][].
90
-
91
- ### Delete()
92
-
93
- ```cpp
94
- bool Napi::Object::Delete(____ key);
95
- ```
96
- - `[in] key`: The name of the property to delete.
97
-
98
- Deletes the property associated with the given key. Returns `true` if the property was deleted.
99
-
100
- The `key` can be any of the following types:
101
- - `napi_value`
102
- - [`Napi::Value`](value.md)
103
- - `const char *`
104
- - `const std::string &`
105
- - `uint32_t`
106
-
107
- ### Get()
108
-
109
- ```cpp
110
- Napi::Value Napi::Object::Get(____ key);
111
- ```
112
- - `[in] key`: The name of the property to return the value for.
113
-
114
- Returns the [`Napi::Value`](value.md) associated with the key property. Returns the value *undefined* if the key does not exist.
115
-
116
- The `key` can be any of the following types:
117
- - `napi_value`
118
- - [`Napi::Value`](value.md)
119
- - `const char *`
120
- - `const std::string &`
121
- - `uint32_t`
122
-
123
- ### Has()
124
-
125
- ```cpp
126
- bool Napi::Object::Has (____ key) const;
127
- ```
128
- - `[in] key`: The name of the property to check.
129
-
130
- Returns a `bool` that is *true* if the object has a property named `key` and *false* otherwise.
131
-
132
- ### InstanceOf()
133
-
134
- ```cpp
135
- bool Napi::Object::InstanceOf (const Function& constructor) const
136
- ```
137
- - `[in] constructor`: The constructor [`Napi::Function`](function.md) of the value that is being compared with the object.
138
-
139
- Returns a `bool` that is true if the `Napi::Object` is an instance created by the `constructor` and false otherwise.
140
-
141
- Note: This is equivalent to the JavaScript instanceof operator.
142
-
143
- ### AddFinalizer()
144
- ```cpp
145
- template <typename Finalizer, typename T>
146
- inline void AddFinalizer(Finalizer finalizeCallback, T* data);
147
- ```
148
-
149
- - `[in] finalizeCallback`: The function to call when the object is garbage-collected.
150
- - `[in] data`: The data to associate with the object.
151
-
152
- Associates `data` with the object, calling `finalizeCallback` when the object is garbage-collected. `finalizeCallback`
153
- has the signature
154
- ```cpp
155
- void finalizeCallback(Napi::Env env, T* data);
156
- ```
157
- where `data` is the pointer that was passed into the call to `AddFinalizer()`.
158
-
159
- ### AddFinalizer()
160
- ```cpp
161
- template <typename Finalizer, typename T, typename Hint>
162
- inline void AddFinalizer(Finalizer finalizeCallback,
163
- T* data,
164
- Hint* finalizeHint);
165
- ```
166
-
167
- - `[in] data`: The data to associate with the object.
168
- - `[in] finalizeCallback`: The function to call when the object is garbage-collected.
169
-
170
- Associates `data` with the object, calling `finalizeCallback` when the object is garbage-collected. An additional hint
171
- may be given. It will also be passed to `finalizeCallback`, which has the signature
172
- ```cpp
173
- void finalizeCallback(Napi::Env env, T* data, Hint* hint);
174
- ```
175
- where `data` and `hint` are the pointers that were passed into the call to `AddFinalizer()`.
176
-
177
- ### GetPropertyNames()
178
- ```cpp
179
- Napi::Array Napi::Object::GetPropertyNames() const;
180
- ```
181
-
182
- Returns the names of the enumerable properties of the object as a [`Napi::Array`](array.md) of strings.
183
- The properties whose key is a `Symbol` will not be included.
184
-
185
- ### HasOwnProperty()
186
- ```cpp
187
- bool Napi::Object::HasOwnProperty(____ key); const
188
- ```
189
- - `[in] key` The name of the property to check.
190
-
191
- Returns a `bool` that is *true* if the object has an own property named `key` and *false* otherwise.
192
-
193
- The key can be any of the following types:
194
- - `napi_value`
195
- - [`Napi::Value`](value.md)
196
- - `const char*`
197
- - `const std::string&`
198
- - `uint32_t`
199
-
200
- ### DefineProperty()
201
-
202
- ```cpp
203
- bool Napi::Object::DefineProperty (const Napi::PropertyDescriptor& property);
204
- ```
205
- - `[in] property`: A [`Napi::PropertyDescriptor`](property_descriptor.md).
206
-
207
- Define a property on the object.
208
-
209
- ### DefineProperties()
210
-
211
- ```cpp
212
- bool Napi::Object::DefineProperties (____ properties)
213
- ```
214
- - `[in] properties`: A list of [`Napi::PropertyDescriptor`](property_descriptor.md). Can be one of the following types:
215
- - const std::initializer_list<Napi::PropertyDescriptor>&
216
- - const std::vector<Napi::PropertyDescriptor>&
217
-
218
- Defines properties on the object.
219
-
220
- ### Freeze()
221
-
222
- ```cpp
223
- void Napi::Object::Freeze()
224
- ```
225
-
226
- The `Napi::Object::Freeze()` method freezes an object. A frozen object can no
227
- longer changed. Freezing an object prevents new properties from being added to
228
- it, existing properties from being removed, prevents changing the
229
- enumerability, configurability, or writability of existing properties and
230
- prevents the value of existing properties from being changed. In addition,
231
- freezing an object also prevents its prototype from being changed.
232
-
233
- ### Seal()
234
-
235
- ```cpp
236
- void Napi::Object::Seal()
237
- ```
238
-
239
- The `Napi::Object::Seal()` method seals an object, preventing new properties
240
- from being added to it and marking all existing properties as non-configurable.
241
- Values of present properties can still be changed as long as they are
242
- writable.
243
-
244
- ### operator\[\]()
245
-
246
- ```cpp
247
- Napi::PropertyLValue<std::string> Napi::Object::operator[] (const char* utf8name);
248
- ```
249
- - `[in] utf8name`: UTF-8 encoded null-terminated property name.
250
-
251
- Returns a [`Napi::Object::PropertyLValue`](propertylvalue.md) as the named
252
- property or sets the named property.
253
-
254
- ```cpp
255
- Napi::PropertyLValue<std::string> Napi::Object::operator[] (const std::string& utf8name);
256
- ```
257
- - `[in] utf8name`: UTF-8 encoded property name.
258
-
259
- Returns a [`Napi::Object::PropertyLValue`](propertylvalue.md) as the named
260
- property or sets the named property.
261
-
262
- ```cpp
263
- Napi::PropertyLValue<uint32_t> Napi::Object::operator[] (uint32_t index);
264
- ```
265
- - `[in] index`: Element index.
266
-
267
- Returns a [`Napi::Object::PropertyLValue`](propertylvalue.md) or sets an
268
- indexed property or array element.
269
-
270
- ```cpp
271
- Napi::Value Napi::Object::operator[] (const char* utf8name) const;
272
- ```
273
- - `[in] utf8name`: UTF-8 encoded null-terminated property name.
274
-
275
- Returns the named property as a [`Napi::Value`](value.md).
276
-
277
- ```cpp
278
- Napi::Value Napi::Object::operator[] (const std::string& utf8name) const;
279
- ```
280
- - `[in] utf8name`: UTF-8 encoded property name.
281
-
282
- Returns the named property as a [`Napi::Value`](value.md).
283
-
284
- ```cpp
285
- Napi::Value Napi::Object::operator[] (uint32_t index) const;
286
- ```
287
- - `[in] index`: Element index.
288
-
289
- Returns an indexed property or array element as a [`Napi::Value`](value.md).
290
-
291
- ### begin()
292
-
293
- ```cpp
294
- Napi::Object::iterator Napi::Object::begin() const;
295
- ```
296
-
297
- Returns a constant iterator to the beginning of the object.
298
-
299
- ```cpp
300
- Napi::Object::iterator Napi::Object::begin();
301
- ```
302
-
303
- Returns a non constant iterator to the beginning of the object.
304
-
305
- ### end()
306
-
307
- ```cpp
308
- Napi::Object::iterator Napi::Object::end() const;
309
- ```
310
-
311
- Returns a constant iterator to the end of the object.
312
-
313
- ```cpp
314
- Napi::Object::iterator Napi::Object::end();
315
- ```
316
-
317
- Returns a non constant iterator to the end of the object.
318
-
319
- ## Iterator
320
-
321
- Iterators expose an `std::pair<...>`, where the `first` property is a
322
- [`Napi::Value`](value.md) that holds the currently iterated key and the
323
- `second` property is a [`Napi::Object::PropertyLValue`](propertylvalue.md) that
324
- holds the currently iterated value. Iterators are only available if C++
325
- exceptions are enabled (by defining `NAPI_CPP_EXCEPTIONS` during the build).
326
-
327
- ### Constant Iterator
328
-
329
- In constant iterators, the iterated values are immutable.
330
-
331
- #### operator++()
332
-
333
- ```cpp
334
- inline Napi::Object::const_iterator& Napi::Object::const_iterator::operator++();
335
- ```
336
-
337
- Moves the iterator one step forward.
338
-
339
- #### operator==
340
-
341
- ```cpp
342
- inline bool Napi::Object::const_iterator::operator==(const Napi::Object::const_iterator& other) const;
343
- ```
344
- - `[in] other`: Another iterator to compare the current iterator to.
345
-
346
- Returns whether both iterators are at the same index.
347
-
348
- #### operator!=
349
-
350
- ```cpp
351
- inline bool Napi::Object::const_iterator::operator!=(const Napi::Object::const_iterator& other) const;
352
- ```
353
- - `[in] other`: Another iterator to compare the current iterator to.
354
-
355
- Returns whether both iterators are at different indices.
356
-
357
- #### operator*()
358
-
359
- ```cpp
360
- inline const std::pair<Napi::Value, Napi::Object::PropertyLValue<Napi::Value>> Napi::Object::const_iterator::operator*() const;
361
- ```
362
-
363
- Returns the currently iterated key and value.
364
-
365
- #### Example
366
- ```cpp
367
- Value Sum(const CallbackInfo& info) {
368
- Object object = info[0].As<Object>();
369
- int64_t sum = 0;
370
-
371
- for (const auto& e : object) {
372
- sum += static_cast<Value>(e.second).As<Number>().Int64Value();
373
- }
374
-
375
- return Number::New(info.Env(), sum);
376
- }
377
- ```
378
-
379
- ### Non Constant Iterator
380
-
381
- In non constant iterators, the iterated values are mutable.
382
-
383
- #### operator++()
384
-
385
- ```cpp
386
- inline Napi::Object::iterator& Napi::Object::iterator::operator++();
387
- ```
388
-
389
- Moves the iterator one step forward.
390
-
391
- #### operator==
392
-
393
- ```cpp
394
- inline bool Napi::Object::iterator::operator==(const Napi::Object::iterator& other) const;
395
- ```
396
- - `[in] other`: Another iterator to compare the current iterator to.
397
-
398
- Returns whether both iterators are at the same index.
399
-
400
- #### operator!=
401
-
402
- ```cpp
403
- inline bool Napi::Object::iterator::operator!=(const Napi::Object::iterator& other) const;
404
- ```
405
- - `[in] other`: Another iterator to compare the current iterator to.
406
-
407
- Returns whether both iterators are at different indices.
408
-
409
- #### operator*()
410
-
411
- ```cpp
412
- inline std::pair<Napi::Value, Napi::Object::PropertyLValue<Napi::Value>> Napi::Object::iterator::operator*();
413
- ```
414
-
415
- Returns the currently iterated key and value.
416
-
417
- #### Example
418
- ```cpp
419
- void Increment(const CallbackInfo& info) {
420
- Env env = info.Env();
421
- Object object = info[0].As<Object>();
422
-
423
- for (auto e : object) {
424
- int64_t value = static_cast<Value>(e.second).As<Number>().Int64Value();
425
- ++value;
426
- e.second = Napi::Number::New(env, value);
427
- }
428
- }
429
- ```
430
-
431
- [`Napi::Value`]: ./value.md
432
- [`Napi::Value::From`]: ./value.md#from
1
+ # Object
2
+
3
+ Class `Napi::Object` inherits from class [`Napi::Value`][].
4
+
5
+ The `Napi::Object` class corresponds to a JavaScript object. It is extended by the following node-addon-api classes that you may use when working with more specific types:
6
+
7
+ - [`Napi::Array`](array.md)
8
+ - [`Napi::ArrayBuffer`](array_buffer.md)
9
+ - [`Napi::Buffer<T>`](buffer.md)
10
+ - [`Napi::Function`](function.md)
11
+ - [`Napi::TypedArray`](typed_array.md).
12
+
13
+ This class provides a number of convenience methods, most of which are used to set or get properties on a JavaScript object. For example, Set() and Get().
14
+
15
+ ## Example
16
+ ```cpp
17
+ #include <napi.h>
18
+
19
+ using namespace Napi;
20
+
21
+ Void Init(Env env) {
22
+
23
+ // Create a new instance
24
+ Object obj = Object::New(env);
25
+
26
+ // Assign values to properties
27
+ obj.Set("hello", "world");
28
+ obj.Set(uint32_t(42), "The Answer to Life, the Universe, and Everything");
29
+ obj.Set("Douglas Adams", true);
30
+
31
+ // Get properties
32
+ Value val1 = obj.Get("hello");
33
+ Value val2 = obj.Get(uint32_t(42));
34
+ Value val3 = obj.Get("Douglas Adams");
35
+
36
+ // Test if objects have properties.
37
+ bool obj1 = obj.Has("hello"); // true
38
+ bool obj2 = obj.Has("world"); // false
39
+
40
+ }
41
+ ```
42
+
43
+ ## Methods
44
+
45
+ ### Empty Constructor
46
+
47
+ ```cpp
48
+ Napi::Object::Object();
49
+ ```
50
+ Creates a new empty Object instance.
51
+
52
+ ### Constructor
53
+
54
+ ```cpp
55
+ Napi::Object::Object(napi_env env, napi_value value);
56
+ ```
57
+ - `[in] env`: The `napi_env` environment in which to construct the Value object.
58
+
59
+ - `[in] value`: The `napi_value` which is a handle for a JavaScript object.
60
+
61
+ Creates a non-empty `Napi::Object` instance.
62
+
63
+ ### New()
64
+
65
+ ```cpp
66
+ Napi::Object Napi::Object::New(napi_env env);
67
+ ```
68
+ - `[in] env`: The `napi_env` environment in which to construct the `Napi::Value` object.
69
+
70
+ Creates a new `Napi::Object` value.
71
+
72
+ ### Set()
73
+
74
+ ```cpp
75
+ bool Napi::Object::Set (____ key, ____ value);
76
+ ```
77
+ - `[in] key`: The name for the property being assigned.
78
+ - `[in] value`: The value being assigned to the property.
79
+
80
+ Add a property with the specified key with the specified value to the object.
81
+
82
+ The key can be any of the following types:
83
+ - `napi_value`
84
+ - [`Napi::Value`](value.md)
85
+ - `const char*`
86
+ - `const std::string&`
87
+ - `uint32_t`
88
+
89
+ The `value` can be of any type that is accepted by [`Napi::Value::From`][].
90
+
91
+ ### Delete()
92
+
93
+ ```cpp
94
+ bool Napi::Object::Delete(____ key);
95
+ ```
96
+ - `[in] key`: The name of the property to delete.
97
+
98
+ Deletes the property associated with the given key. Returns `true` if the property was deleted.
99
+
100
+ The `key` can be any of the following types:
101
+ - `napi_value`
102
+ - [`Napi::Value`](value.md)
103
+ - `const char *`
104
+ - `const std::string &`
105
+ - `uint32_t`
106
+
107
+ ### Get()
108
+
109
+ ```cpp
110
+ Napi::Value Napi::Object::Get(____ key);
111
+ ```
112
+ - `[in] key`: The name of the property to return the value for.
113
+
114
+ Returns the [`Napi::Value`](value.md) associated with the key property. Returns the value *undefined* if the key does not exist.
115
+
116
+ The `key` can be any of the following types:
117
+ - `napi_value`
118
+ - [`Napi::Value`](value.md)
119
+ - `const char *`
120
+ - `const std::string &`
121
+ - `uint32_t`
122
+
123
+ ### Has()
124
+
125
+ ```cpp
126
+ bool Napi::Object::Has (____ key) const;
127
+ ```
128
+ - `[in] key`: The name of the property to check.
129
+
130
+ Returns a `bool` that is *true* if the object has a property named `key` and *false* otherwise.
131
+
132
+ ### InstanceOf()
133
+
134
+ ```cpp
135
+ bool Napi::Object::InstanceOf (const Function& constructor) const
136
+ ```
137
+ - `[in] constructor`: The constructor [`Napi::Function`](function.md) of the value that is being compared with the object.
138
+
139
+ Returns a `bool` that is true if the `Napi::Object` is an instance created by the `constructor` and false otherwise.
140
+
141
+ Note: This is equivalent to the JavaScript instanceof operator.
142
+
143
+ ### AddFinalizer()
144
+ ```cpp
145
+ template <typename Finalizer, typename T>
146
+ inline void AddFinalizer(Finalizer finalizeCallback, T* data);
147
+ ```
148
+
149
+ - `[in] finalizeCallback`: The function to call when the object is garbage-collected.
150
+ - `[in] data`: The data to associate with the object.
151
+
152
+ Associates `data` with the object, calling `finalizeCallback` when the object is garbage-collected. `finalizeCallback`
153
+ has the signature
154
+ ```cpp
155
+ void finalizeCallback(Napi::Env env, T* data);
156
+ ```
157
+ where `data` is the pointer that was passed into the call to `AddFinalizer()`.
158
+
159
+ ### AddFinalizer()
160
+ ```cpp
161
+ template <typename Finalizer, typename T, typename Hint>
162
+ inline void AddFinalizer(Finalizer finalizeCallback,
163
+ T* data,
164
+ Hint* finalizeHint);
165
+ ```
166
+
167
+ - `[in] data`: The data to associate with the object.
168
+ - `[in] finalizeCallback`: The function to call when the object is garbage-collected.
169
+
170
+ Associates `data` with the object, calling `finalizeCallback` when the object is garbage-collected. An additional hint
171
+ may be given. It will also be passed to `finalizeCallback`, which has the signature
172
+ ```cpp
173
+ void finalizeCallback(Napi::Env env, T* data, Hint* hint);
174
+ ```
175
+ where `data` and `hint` are the pointers that were passed into the call to `AddFinalizer()`.
176
+
177
+ ### GetPropertyNames()
178
+ ```cpp
179
+ Napi::Array Napi::Object::GetPropertyNames() const;
180
+ ```
181
+
182
+ Returns the names of the enumerable properties of the object as a [`Napi::Array`](array.md) of strings.
183
+ The properties whose key is a `Symbol` will not be included.
184
+
185
+ ### HasOwnProperty()
186
+ ```cpp
187
+ bool Napi::Object::HasOwnProperty(____ key); const
188
+ ```
189
+ - `[in] key` The name of the property to check.
190
+
191
+ Returns a `bool` that is *true* if the object has an own property named `key` and *false* otherwise.
192
+
193
+ The key can be any of the following types:
194
+ - `napi_value`
195
+ - [`Napi::Value`](value.md)
196
+ - `const char*`
197
+ - `const std::string&`
198
+ - `uint32_t`
199
+
200
+ ### DefineProperty()
201
+
202
+ ```cpp
203
+ bool Napi::Object::DefineProperty (const Napi::PropertyDescriptor& property);
204
+ ```
205
+ - `[in] property`: A [`Napi::PropertyDescriptor`](property_descriptor.md).
206
+
207
+ Define a property on the object.
208
+
209
+ ### DefineProperties()
210
+
211
+ ```cpp
212
+ bool Napi::Object::DefineProperties (____ properties)
213
+ ```
214
+ - `[in] properties`: A list of [`Napi::PropertyDescriptor`](property_descriptor.md). Can be one of the following types:
215
+ - const std::initializer_list<Napi::PropertyDescriptor>&
216
+ - const std::vector<Napi::PropertyDescriptor>&
217
+
218
+ Defines properties on the object.
219
+
220
+ ### Freeze()
221
+
222
+ ```cpp
223
+ void Napi::Object::Freeze()
224
+ ```
225
+
226
+ The `Napi::Object::Freeze()` method freezes an object. A frozen object can no
227
+ longer changed. Freezing an object prevents new properties from being added to
228
+ it, existing properties from being removed, prevents changing the
229
+ enumerability, configurability, or writability of existing properties and
230
+ prevents the value of existing properties from being changed. In addition,
231
+ freezing an object also prevents its prototype from being changed.
232
+
233
+ ### Seal()
234
+
235
+ ```cpp
236
+ void Napi::Object::Seal()
237
+ ```
238
+
239
+ The `Napi::Object::Seal()` method seals an object, preventing new properties
240
+ from being added to it and marking all existing properties as non-configurable.
241
+ Values of present properties can still be changed as long as they are
242
+ writable.
243
+
244
+ ### operator\[\]()
245
+
246
+ ```cpp
247
+ Napi::PropertyLValue<std::string> Napi::Object::operator[] (const char* utf8name);
248
+ ```
249
+ - `[in] utf8name`: UTF-8 encoded null-terminated property name.
250
+
251
+ Returns a [`Napi::Object::PropertyLValue`](propertylvalue.md) as the named
252
+ property or sets the named property.
253
+
254
+ ```cpp
255
+ Napi::PropertyLValue<std::string> Napi::Object::operator[] (const std::string& utf8name);
256
+ ```
257
+ - `[in] utf8name`: UTF-8 encoded property name.
258
+
259
+ Returns a [`Napi::Object::PropertyLValue`](propertylvalue.md) as the named
260
+ property or sets the named property.
261
+
262
+ ```cpp
263
+ Napi::PropertyLValue<uint32_t> Napi::Object::operator[] (uint32_t index);
264
+ ```
265
+ - `[in] index`: Element index.
266
+
267
+ Returns a [`Napi::Object::PropertyLValue`](propertylvalue.md) or sets an
268
+ indexed property or array element.
269
+
270
+ ```cpp
271
+ Napi::Value Napi::Object::operator[] (const char* utf8name) const;
272
+ ```
273
+ - `[in] utf8name`: UTF-8 encoded null-terminated property name.
274
+
275
+ Returns the named property as a [`Napi::Value`](value.md).
276
+
277
+ ```cpp
278
+ Napi::Value Napi::Object::operator[] (const std::string& utf8name) const;
279
+ ```
280
+ - `[in] utf8name`: UTF-8 encoded property name.
281
+
282
+ Returns the named property as a [`Napi::Value`](value.md).
283
+
284
+ ```cpp
285
+ Napi::Value Napi::Object::operator[] (uint32_t index) const;
286
+ ```
287
+ - `[in] index`: Element index.
288
+
289
+ Returns an indexed property or array element as a [`Napi::Value`](value.md).
290
+
291
+ ### begin()
292
+
293
+ ```cpp
294
+ Napi::Object::iterator Napi::Object::begin() const;
295
+ ```
296
+
297
+ Returns a constant iterator to the beginning of the object.
298
+
299
+ ```cpp
300
+ Napi::Object::iterator Napi::Object::begin();
301
+ ```
302
+
303
+ Returns a non constant iterator to the beginning of the object.
304
+
305
+ ### end()
306
+
307
+ ```cpp
308
+ Napi::Object::iterator Napi::Object::end() const;
309
+ ```
310
+
311
+ Returns a constant iterator to the end of the object.
312
+
313
+ ```cpp
314
+ Napi::Object::iterator Napi::Object::end();
315
+ ```
316
+
317
+ Returns a non constant iterator to the end of the object.
318
+
319
+ ## Iterator
320
+
321
+ Iterators expose an `std::pair<...>`, where the `first` property is a
322
+ [`Napi::Value`](value.md) that holds the currently iterated key and the
323
+ `second` property is a [`Napi::Object::PropertyLValue`](propertylvalue.md) that
324
+ holds the currently iterated value. Iterators are only available if C++
325
+ exceptions are enabled (by defining `NAPI_CPP_EXCEPTIONS` during the build).
326
+
327
+ ### Constant Iterator
328
+
329
+ In constant iterators, the iterated values are immutable.
330
+
331
+ #### operator++()
332
+
333
+ ```cpp
334
+ inline Napi::Object::const_iterator& Napi::Object::const_iterator::operator++();
335
+ ```
336
+
337
+ Moves the iterator one step forward.
338
+
339
+ #### operator==
340
+
341
+ ```cpp
342
+ inline bool Napi::Object::const_iterator::operator==(const Napi::Object::const_iterator& other) const;
343
+ ```
344
+ - `[in] other`: Another iterator to compare the current iterator to.
345
+
346
+ Returns whether both iterators are at the same index.
347
+
348
+ #### operator!=
349
+
350
+ ```cpp
351
+ inline bool Napi::Object::const_iterator::operator!=(const Napi::Object::const_iterator& other) const;
352
+ ```
353
+ - `[in] other`: Another iterator to compare the current iterator to.
354
+
355
+ Returns whether both iterators are at different indices.
356
+
357
+ #### operator*()
358
+
359
+ ```cpp
360
+ inline const std::pair<Napi::Value, Napi::Object::PropertyLValue<Napi::Value>> Napi::Object::const_iterator::operator*() const;
361
+ ```
362
+
363
+ Returns the currently iterated key and value.
364
+
365
+ #### Example
366
+ ```cpp
367
+ Value Sum(const CallbackInfo& info) {
368
+ Object object = info[0].As<Object>();
369
+ int64_t sum = 0;
370
+
371
+ for (const auto& e : object) {
372
+ sum += static_cast<Value>(e.second).As<Number>().Int64Value();
373
+ }
374
+
375
+ return Number::New(info.Env(), sum);
376
+ }
377
+ ```
378
+
379
+ ### Non Constant Iterator
380
+
381
+ In non constant iterators, the iterated values are mutable.
382
+
383
+ #### operator++()
384
+
385
+ ```cpp
386
+ inline Napi::Object::iterator& Napi::Object::iterator::operator++();
387
+ ```
388
+
389
+ Moves the iterator one step forward.
390
+
391
+ #### operator==
392
+
393
+ ```cpp
394
+ inline bool Napi::Object::iterator::operator==(const Napi::Object::iterator& other) const;
395
+ ```
396
+ - `[in] other`: Another iterator to compare the current iterator to.
397
+
398
+ Returns whether both iterators are at the same index.
399
+
400
+ #### operator!=
401
+
402
+ ```cpp
403
+ inline bool Napi::Object::iterator::operator!=(const Napi::Object::iterator& other) const;
404
+ ```
405
+ - `[in] other`: Another iterator to compare the current iterator to.
406
+
407
+ Returns whether both iterators are at different indices.
408
+
409
+ #### operator*()
410
+
411
+ ```cpp
412
+ inline std::pair<Napi::Value, Napi::Object::PropertyLValue<Napi::Value>> Napi::Object::iterator::operator*();
413
+ ```
414
+
415
+ Returns the currently iterated key and value.
416
+
417
+ #### Example
418
+ ```cpp
419
+ void Increment(const CallbackInfo& info) {
420
+ Env env = info.Env();
421
+ Object object = info[0].As<Object>();
422
+
423
+ for (auto e : object) {
424
+ int64_t value = static_cast<Value>(e.second).As<Number>().Int64Value();
425
+ ++value;
426
+ e.second = Napi::Number::New(env, value);
427
+ }
428
+ }
429
+ ```
430
+
431
+ [`Napi::Value`]: ./value.md
432
+ [`Napi::Value::From`]: ./value.md#from