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,217 +1,217 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
-
5
- module.exports = require('../common').runTest(test);
6
-
7
- function test(binding) {
8
- function assertPropertyIs(obj, key, attribute) {
9
- const propDesc = Object.getOwnPropertyDescriptor(obj, key);
10
- assert.ok(propDesc);
11
- assert.ok(propDesc[attribute]);
12
- }
13
-
14
- function assertPropertyIsNot(obj, key, attribute) {
15
- const propDesc = Object.getOwnPropertyDescriptor(obj, key);
16
- assert.ok(propDesc);
17
- assert.ok(!propDesc[attribute]);
18
- }
19
-
20
- function testDefineProperties(nameType) {
21
- const obj = {};
22
- binding.object.defineProperties(obj, nameType);
23
-
24
- // accessors
25
- assertPropertyIsNot(obj, 'readonlyAccessor', 'enumerable');
26
- assertPropertyIsNot(obj, 'readonlyAccessor', 'configurable');
27
- assert.strictEqual(obj.readonlyAccessor, true);
28
-
29
- assertPropertyIsNot(obj, 'readonlyAccessorWithUserData', 'enumerable');
30
- assertPropertyIsNot(obj, 'readonlyAccessorWithUserData', 'configurable');
31
- assert.strictEqual(obj.readonlyAccessorWithUserData, 1234, nameType);
32
-
33
- assertPropertyIsNot(obj, 'readwriteAccessor', 'enumerable');
34
- assertPropertyIsNot(obj, 'readwriteAccessor', 'configurable');
35
- obj.readwriteAccessor = false;
36
- assert.strictEqual(obj.readwriteAccessor, false);
37
- obj.readwriteAccessor = true;
38
- assert.strictEqual(obj.readwriteAccessor, true);
39
-
40
- assertPropertyIsNot(obj, 'readwriteAccessorWithUserData', 'enumerable');
41
- assertPropertyIsNot(obj, 'readwriteAccessorWithUserData', 'configurable');
42
- obj.readwriteAccessorWithUserData = 2;
43
- assert.strictEqual(obj.readwriteAccessorWithUserData, 2);
44
- obj.readwriteAccessorWithUserData = -14;
45
- assert.strictEqual(obj.readwriteAccessorWithUserData, -14);
46
-
47
- // templated accessors
48
- assertPropertyIsNot(obj, 'readonlyAccessorT', 'enumerable');
49
- assertPropertyIsNot(obj, 'readonlyAccessorT', 'configurable');
50
- assert.strictEqual(obj.readonlyAccessorT, true);
51
-
52
- assertPropertyIsNot(obj, 'readonlyAccessorWithUserDataT', 'enumerable');
53
- assertPropertyIsNot(obj, 'readonlyAccessorWithUserDataT', 'configurable');
54
- assert.strictEqual(obj.readonlyAccessorWithUserDataT, -14, nameType);
55
-
56
- assertPropertyIsNot(obj, 'readwriteAccessorT', 'enumerable');
57
- assertPropertyIsNot(obj, 'readwriteAccessorT', 'configurable');
58
- obj.readwriteAccessorT = false;
59
- assert.strictEqual(obj.readwriteAccessorT, false);
60
- obj.readwriteAccessorT = true;
61
- assert.strictEqual(obj.readwriteAccessorT, true);
62
-
63
- assertPropertyIsNot(obj, 'readwriteAccessorWithUserDataT', 'enumerable');
64
- assertPropertyIsNot(obj, 'readwriteAccessorWithUserDataT', 'configurable');
65
- obj.readwriteAccessorWithUserDataT = 2;
66
- assert.strictEqual(obj.readwriteAccessorWithUserDataT, 2);
67
- obj.readwriteAccessorWithUserDataT = -14;
68
- assert.strictEqual(obj.readwriteAccessorWithUserDataT, -14);
69
-
70
- // values
71
- assertPropertyIsNot(obj, 'readonlyValue', 'writable');
72
- assertPropertyIsNot(obj, 'readonlyValue', 'enumerable');
73
- assertPropertyIsNot(obj, 'readonlyValue', 'configurable');
74
- assert.strictEqual(obj.readonlyValue, true);
75
-
76
- assertPropertyIs(obj, 'readwriteValue', 'writable');
77
- assertPropertyIsNot(obj, 'readwriteValue', 'enumerable');
78
- assertPropertyIsNot(obj, 'readwriteValue', 'configurable');
79
- obj.readwriteValue = false;
80
- assert.strictEqual(obj.readwriteValue, false);
81
- obj.readwriteValue = true;
82
- assert.strictEqual(obj.readwriteValue, true);
83
-
84
- assertPropertyIsNot(obj, 'enumerableValue', 'writable');
85
- assertPropertyIs(obj, 'enumerableValue', 'enumerable');
86
- assertPropertyIsNot(obj, 'enumerableValue', 'configurable');
87
-
88
- assertPropertyIsNot(obj, 'configurableValue', 'writable');
89
- assertPropertyIsNot(obj, 'configurableValue', 'enumerable');
90
- assertPropertyIs(obj, 'configurableValue', 'configurable');
91
-
92
- // functions
93
- assertPropertyIsNot(obj, 'function', 'writable');
94
- assertPropertyIsNot(obj, 'function', 'enumerable');
95
- assertPropertyIsNot(obj, 'function', 'configurable');
96
- assert.strictEqual(obj.function(), true);
97
- assert.strictEqual(obj.functionWithUserData(), obj.readonlyAccessorWithUserDataT);
98
- }
99
-
100
- testDefineProperties('literal');
101
- testDefineProperties('string');
102
- testDefineProperties('value');
103
-
104
- {
105
- assert.strictEqual(binding.object.emptyConstructor(true), true);
106
- assert.strictEqual(binding.object.emptyConstructor(false), false);
107
- }
108
-
109
- {
110
- const expected = { 'one': 1, 'two': 2, 'three': 3 };
111
- const actual = binding.object.constructorFromObject(expected);
112
- assert.deepStrictEqual(actual, expected);
113
- }
114
-
115
- {
116
- const obj = {};
117
- const testSym = Symbol();
118
- binding.object.defineValueProperty(obj, testSym, 1);
119
- assert.strictEqual(obj[testSym], 1);
120
- }
121
-
122
- {
123
- const testSym = Symbol();
124
- const obj = { 'one': 1, 'two': 2, 'three': 3, [testSym]: 4 };
125
- var arr = binding.object.GetPropertyNames(obj);
126
- assert.deepStrictEqual(arr, ['one', 'two', 'three']);
127
- }
128
-
129
- {
130
- const magicObject = binding.object.createObjectUsingMagic();
131
- assert.deepStrictEqual(magicObject, {
132
- 0: 0,
133
- 42: 120,
134
- cp_false: false,
135
- cp_true: true,
136
- s_true: true,
137
- s_false: false,
138
- '0.0f': 0,
139
- '0.0': 0,
140
- '-1': -1,
141
- foo2: 'foo',
142
- foo4: 'foo',
143
- foo5: 'foo',
144
- foo6: 'foo',
145
- foo7: 'foo',
146
- circular: magicObject,
147
- circular2: magicObject
148
- });
149
- }
150
-
151
- {
152
- function Ctor() {};
153
-
154
- assert.strictEqual(binding.object.instanceOf(new Ctor(), Ctor), true);
155
- assert.strictEqual(binding.object.instanceOf(new Ctor(), Object), true);
156
- assert.strictEqual(binding.object.instanceOf({}, Ctor), false);
157
- assert.strictEqual(binding.object.instanceOf(null, Ctor), false);
158
- }
159
-
160
- if ('sum' in binding.object) {
161
- {
162
- const obj = {
163
- '-forbid': -0x4B1D,
164
- '-feedcode': -0xFEEDC0DE,
165
- '+office': +0x0FF1CE,
166
- '+forbid': +0x4B1D,
167
- '+deadbeef': +0xDEADBEEF,
168
- '+feedcode': +0xFEEDC0DE,
169
- };
170
-
171
- let sum = 0;
172
- for (const key in obj) {
173
- sum += obj[key];
174
- }
175
-
176
- assert.strictEqual(binding.object.sum(obj), sum);
177
- }
178
-
179
- {
180
- const obj = new Proxy({
181
- '-forbid': -0x4B1D,
182
- '-feedcode': -0xFEEDC0DE,
183
- '+office': +0x0FF1CE,
184
- '+forbid': +0x4B1D,
185
- '+deadbeef': +0xDEADBEEF,
186
- '+feedcode': +0xFEEDC0DE,
187
- }, {
188
- getOwnPropertyDescriptor(target, p) {
189
- throw new Error("getOwnPropertyDescriptor error");
190
- },
191
- ownKeys(target) {
192
- throw new Error("ownKeys error");
193
- },
194
- });
195
-
196
- assert.throws(() => {
197
- binding.object.sum(obj);
198
- }, /ownKeys error/);
199
- }
200
- }
201
-
202
- if ('increment' in binding.object) {
203
- const obj = {
204
- 'a': 0,
205
- 'b': 1,
206
- 'c': 2,
207
- };
208
-
209
- binding.object.increment(obj);
210
-
211
- assert.deepStrictEqual(obj, {
212
- 'a': 1,
213
- 'b': 2,
214
- 'c': 3,
215
- });
216
- }
217
- }
1
+ 'use strict';
2
+
3
+ const assert = require('assert');
4
+
5
+ module.exports = require('../common').runTest(test);
6
+
7
+ function test(binding) {
8
+ function assertPropertyIs(obj, key, attribute) {
9
+ const propDesc = Object.getOwnPropertyDescriptor(obj, key);
10
+ assert.ok(propDesc);
11
+ assert.ok(propDesc[attribute]);
12
+ }
13
+
14
+ function assertPropertyIsNot(obj, key, attribute) {
15
+ const propDesc = Object.getOwnPropertyDescriptor(obj, key);
16
+ assert.ok(propDesc);
17
+ assert.ok(!propDesc[attribute]);
18
+ }
19
+
20
+ function testDefineProperties(nameType) {
21
+ const obj = {};
22
+ binding.object.defineProperties(obj, nameType);
23
+
24
+ // accessors
25
+ assertPropertyIsNot(obj, 'readonlyAccessor', 'enumerable');
26
+ assertPropertyIsNot(obj, 'readonlyAccessor', 'configurable');
27
+ assert.strictEqual(obj.readonlyAccessor, true);
28
+
29
+ assertPropertyIsNot(obj, 'readonlyAccessorWithUserData', 'enumerable');
30
+ assertPropertyIsNot(obj, 'readonlyAccessorWithUserData', 'configurable');
31
+ assert.strictEqual(obj.readonlyAccessorWithUserData, 1234, nameType);
32
+
33
+ assertPropertyIsNot(obj, 'readwriteAccessor', 'enumerable');
34
+ assertPropertyIsNot(obj, 'readwriteAccessor', 'configurable');
35
+ obj.readwriteAccessor = false;
36
+ assert.strictEqual(obj.readwriteAccessor, false);
37
+ obj.readwriteAccessor = true;
38
+ assert.strictEqual(obj.readwriteAccessor, true);
39
+
40
+ assertPropertyIsNot(obj, 'readwriteAccessorWithUserData', 'enumerable');
41
+ assertPropertyIsNot(obj, 'readwriteAccessorWithUserData', 'configurable');
42
+ obj.readwriteAccessorWithUserData = 2;
43
+ assert.strictEqual(obj.readwriteAccessorWithUserData, 2);
44
+ obj.readwriteAccessorWithUserData = -14;
45
+ assert.strictEqual(obj.readwriteAccessorWithUserData, -14);
46
+
47
+ // templated accessors
48
+ assertPropertyIsNot(obj, 'readonlyAccessorT', 'enumerable');
49
+ assertPropertyIsNot(obj, 'readonlyAccessorT', 'configurable');
50
+ assert.strictEqual(obj.readonlyAccessorT, true);
51
+
52
+ assertPropertyIsNot(obj, 'readonlyAccessorWithUserDataT', 'enumerable');
53
+ assertPropertyIsNot(obj, 'readonlyAccessorWithUserDataT', 'configurable');
54
+ assert.strictEqual(obj.readonlyAccessorWithUserDataT, -14, nameType);
55
+
56
+ assertPropertyIsNot(obj, 'readwriteAccessorT', 'enumerable');
57
+ assertPropertyIsNot(obj, 'readwriteAccessorT', 'configurable');
58
+ obj.readwriteAccessorT = false;
59
+ assert.strictEqual(obj.readwriteAccessorT, false);
60
+ obj.readwriteAccessorT = true;
61
+ assert.strictEqual(obj.readwriteAccessorT, true);
62
+
63
+ assertPropertyIsNot(obj, 'readwriteAccessorWithUserDataT', 'enumerable');
64
+ assertPropertyIsNot(obj, 'readwriteAccessorWithUserDataT', 'configurable');
65
+ obj.readwriteAccessorWithUserDataT = 2;
66
+ assert.strictEqual(obj.readwriteAccessorWithUserDataT, 2);
67
+ obj.readwriteAccessorWithUserDataT = -14;
68
+ assert.strictEqual(obj.readwriteAccessorWithUserDataT, -14);
69
+
70
+ // values
71
+ assertPropertyIsNot(obj, 'readonlyValue', 'writable');
72
+ assertPropertyIsNot(obj, 'readonlyValue', 'enumerable');
73
+ assertPropertyIsNot(obj, 'readonlyValue', 'configurable');
74
+ assert.strictEqual(obj.readonlyValue, true);
75
+
76
+ assertPropertyIs(obj, 'readwriteValue', 'writable');
77
+ assertPropertyIsNot(obj, 'readwriteValue', 'enumerable');
78
+ assertPropertyIsNot(obj, 'readwriteValue', 'configurable');
79
+ obj.readwriteValue = false;
80
+ assert.strictEqual(obj.readwriteValue, false);
81
+ obj.readwriteValue = true;
82
+ assert.strictEqual(obj.readwriteValue, true);
83
+
84
+ assertPropertyIsNot(obj, 'enumerableValue', 'writable');
85
+ assertPropertyIs(obj, 'enumerableValue', 'enumerable');
86
+ assertPropertyIsNot(obj, 'enumerableValue', 'configurable');
87
+
88
+ assertPropertyIsNot(obj, 'configurableValue', 'writable');
89
+ assertPropertyIsNot(obj, 'configurableValue', 'enumerable');
90
+ assertPropertyIs(obj, 'configurableValue', 'configurable');
91
+
92
+ // functions
93
+ assertPropertyIsNot(obj, 'function', 'writable');
94
+ assertPropertyIsNot(obj, 'function', 'enumerable');
95
+ assertPropertyIsNot(obj, 'function', 'configurable');
96
+ assert.strictEqual(obj.function(), true);
97
+ assert.strictEqual(obj.functionWithUserData(), obj.readonlyAccessorWithUserDataT);
98
+ }
99
+
100
+ testDefineProperties('literal');
101
+ testDefineProperties('string');
102
+ testDefineProperties('value');
103
+
104
+ {
105
+ assert.strictEqual(binding.object.emptyConstructor(true), true);
106
+ assert.strictEqual(binding.object.emptyConstructor(false), false);
107
+ }
108
+
109
+ {
110
+ const expected = { 'one': 1, 'two': 2, 'three': 3 };
111
+ const actual = binding.object.constructorFromObject(expected);
112
+ assert.deepStrictEqual(actual, expected);
113
+ }
114
+
115
+ {
116
+ const obj = {};
117
+ const testSym = Symbol();
118
+ binding.object.defineValueProperty(obj, testSym, 1);
119
+ assert.strictEqual(obj[testSym], 1);
120
+ }
121
+
122
+ {
123
+ const testSym = Symbol();
124
+ const obj = { 'one': 1, 'two': 2, 'three': 3, [testSym]: 4 };
125
+ var arr = binding.object.GetPropertyNames(obj);
126
+ assert.deepStrictEqual(arr, ['one', 'two', 'three']);
127
+ }
128
+
129
+ {
130
+ const magicObject = binding.object.createObjectUsingMagic();
131
+ assert.deepStrictEqual(magicObject, {
132
+ 0: 0,
133
+ 42: 120,
134
+ cp_false: false,
135
+ cp_true: true,
136
+ s_true: true,
137
+ s_false: false,
138
+ '0.0f': 0,
139
+ '0.0': 0,
140
+ '-1': -1,
141
+ foo2: 'foo',
142
+ foo4: 'foo',
143
+ foo5: 'foo',
144
+ foo6: 'foo',
145
+ foo7: 'foo',
146
+ circular: magicObject,
147
+ circular2: magicObject
148
+ });
149
+ }
150
+
151
+ {
152
+ function Ctor() {};
153
+
154
+ assert.strictEqual(binding.object.instanceOf(new Ctor(), Ctor), true);
155
+ assert.strictEqual(binding.object.instanceOf(new Ctor(), Object), true);
156
+ assert.strictEqual(binding.object.instanceOf({}, Ctor), false);
157
+ assert.strictEqual(binding.object.instanceOf(null, Ctor), false);
158
+ }
159
+
160
+ if ('sum' in binding.object) {
161
+ {
162
+ const obj = {
163
+ '-forbid': -0x4B1D,
164
+ '-feedcode': -0xFEEDC0DE,
165
+ '+office': +0x0FF1CE,
166
+ '+forbid': +0x4B1D,
167
+ '+deadbeef': +0xDEADBEEF,
168
+ '+feedcode': +0xFEEDC0DE,
169
+ };
170
+
171
+ let sum = 0;
172
+ for (const key in obj) {
173
+ sum += obj[key];
174
+ }
175
+
176
+ assert.strictEqual(binding.object.sum(obj), sum);
177
+ }
178
+
179
+ {
180
+ const obj = new Proxy({
181
+ '-forbid': -0x4B1D,
182
+ '-feedcode': -0xFEEDC0DE,
183
+ '+office': +0x0FF1CE,
184
+ '+forbid': +0x4B1D,
185
+ '+deadbeef': +0xDEADBEEF,
186
+ '+feedcode': +0xFEEDC0DE,
187
+ }, {
188
+ getOwnPropertyDescriptor(target, p) {
189
+ throw new Error("getOwnPropertyDescriptor error");
190
+ },
191
+ ownKeys(target) {
192
+ throw new Error("ownKeys error");
193
+ },
194
+ });
195
+
196
+ assert.throws(() => {
197
+ binding.object.sum(obj);
198
+ }, /ownKeys error/);
199
+ }
200
+ }
201
+
202
+ if ('increment' in binding.object) {
203
+ const obj = {
204
+ 'a': 0,
205
+ 'b': 1,
206
+ 'c': 2,
207
+ };
208
+
209
+ binding.object.increment(obj);
210
+
211
+ assert.deepStrictEqual(obj, {
212
+ 'a': 1,
213
+ 'b': 2,
214
+ 'c': 3,
215
+ });
216
+ }
217
+ }
@@ -1,66 +1,66 @@
1
- #include "napi.h"
2
-
3
- using namespace Napi;
4
-
5
- static bool testValue = true;
6
-
7
- namespace {
8
-
9
- Value TestGetter(const CallbackInfo& info) {
10
- return Boolean::New(info.Env(), testValue);
11
- }
12
-
13
- void TestSetter(const CallbackInfo& info) {
14
- testValue = info[0].As<Boolean>();
15
- }
16
-
17
- Value TestFunction(const CallbackInfo& info) {
18
- return Boolean::New(info.Env(), true);
19
- }
20
-
21
- void DefineProperties(const CallbackInfo& info) {
22
- Object obj = info[0].As<Object>();
23
- String nameType = info[1].As<String>();
24
- Env env = info.Env();
25
-
26
- if (nameType.Utf8Value() == "literal") {
27
- obj.DefineProperties({
28
- PropertyDescriptor::Accessor("readonlyAccessor", TestGetter),
29
- PropertyDescriptor::Accessor("readwriteAccessor", TestGetter, TestSetter),
30
- PropertyDescriptor::Function("function", TestFunction),
31
- });
32
- } else if (nameType.Utf8Value() == "string") {
33
- // VS2013 has lifetime issues when passing temporary objects into the constructor of another
34
- // object. It generates code to destruct the object as soon as the constructor call returns.
35
- // Since this isn't a common case for using std::string objects, I'm refactoring the test to
36
- // work around the issue.
37
- std::string str1("readonlyAccessor");
38
- std::string str2("readwriteAccessor");
39
- std::string str7("function");
40
-
41
- obj.DefineProperties({
42
- PropertyDescriptor::Accessor(str1, TestGetter),
43
- PropertyDescriptor::Accessor(str2, TestGetter, TestSetter),
44
- PropertyDescriptor::Function(str7, TestFunction),
45
- });
46
- } else if (nameType.Utf8Value() == "value") {
47
- obj.DefineProperties({
48
- PropertyDescriptor::Accessor(
49
- Napi::String::New(env, "readonlyAccessor"), TestGetter),
50
- PropertyDescriptor::Accessor(
51
- Napi::String::New(env, "readwriteAccessor"), TestGetter, TestSetter),
52
- PropertyDescriptor::Function(
53
- Napi::String::New(env, "function"), TestFunction),
54
- });
55
- }
56
- }
57
-
58
- } // end of anonymous namespace
59
-
60
- Object InitObjectDeprecated(Env env) {
61
- Object exports = Object::New(env);
62
-
63
- exports["defineProperties"] = Function::New(env, DefineProperties);
64
-
65
- return exports;
66
- }
1
+ #include "napi.h"
2
+
3
+ using namespace Napi;
4
+
5
+ static bool testValue = true;
6
+
7
+ namespace {
8
+
9
+ Value TestGetter(const CallbackInfo& info) {
10
+ return Boolean::New(info.Env(), testValue);
11
+ }
12
+
13
+ void TestSetter(const CallbackInfo& info) {
14
+ testValue = info[0].As<Boolean>();
15
+ }
16
+
17
+ Value TestFunction(const CallbackInfo& info) {
18
+ return Boolean::New(info.Env(), true);
19
+ }
20
+
21
+ void DefineProperties(const CallbackInfo& info) {
22
+ Object obj = info[0].As<Object>();
23
+ String nameType = info[1].As<String>();
24
+ Env env = info.Env();
25
+
26
+ if (nameType.Utf8Value() == "literal") {
27
+ obj.DefineProperties({
28
+ PropertyDescriptor::Accessor("readonlyAccessor", TestGetter),
29
+ PropertyDescriptor::Accessor("readwriteAccessor", TestGetter, TestSetter),
30
+ PropertyDescriptor::Function("function", TestFunction),
31
+ });
32
+ } else if (nameType.Utf8Value() == "string") {
33
+ // VS2013 has lifetime issues when passing temporary objects into the constructor of another
34
+ // object. It generates code to destruct the object as soon as the constructor call returns.
35
+ // Since this isn't a common case for using std::string objects, I'm refactoring the test to
36
+ // work around the issue.
37
+ std::string str1("readonlyAccessor");
38
+ std::string str2("readwriteAccessor");
39
+ std::string str7("function");
40
+
41
+ obj.DefineProperties({
42
+ PropertyDescriptor::Accessor(str1, TestGetter),
43
+ PropertyDescriptor::Accessor(str2, TestGetter, TestSetter),
44
+ PropertyDescriptor::Function(str7, TestFunction),
45
+ });
46
+ } else if (nameType.Utf8Value() == "value") {
47
+ obj.DefineProperties({
48
+ PropertyDescriptor::Accessor(
49
+ Napi::String::New(env, "readonlyAccessor"), TestGetter),
50
+ PropertyDescriptor::Accessor(
51
+ Napi::String::New(env, "readwriteAccessor"), TestGetter, TestSetter),
52
+ PropertyDescriptor::Function(
53
+ Napi::String::New(env, "function"), TestFunction),
54
+ });
55
+ }
56
+ }
57
+
58
+ } // end of anonymous namespace
59
+
60
+ Object InitObjectDeprecated(Env env) {
61
+ Object exports = Object::New(env);
62
+
63
+ exports["defineProperties"] = Function::New(env, DefineProperties);
64
+
65
+ return exports;
66
+ }
@@ -1,47 +1,47 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
-
5
- module.exports = require('../common').runTest(test);
6
-
7
- function test(binding) {
8
- if (!('object_deprecated' in binding)) {
9
- return;
10
- }
11
- function assertPropertyIs(obj, key, attribute) {
12
- const propDesc = Object.getOwnPropertyDescriptor(obj, key);
13
- assert.ok(propDesc);
14
- assert.ok(propDesc[attribute]);
15
- }
16
-
17
- function assertPropertyIsNot(obj, key, attribute) {
18
- const propDesc = Object.getOwnPropertyDescriptor(obj, key);
19
- assert.ok(propDesc);
20
- assert.ok(!propDesc[attribute]);
21
- }
22
-
23
- function testDefineProperties(nameType) {
24
- const obj = {};
25
- binding.object.defineProperties(obj, nameType);
26
-
27
- assertPropertyIsNot(obj, 'readonlyAccessor', 'enumerable');
28
- assertPropertyIsNot(obj, 'readonlyAccessor', 'configurable');
29
- assert.strictEqual(obj.readonlyAccessor, true);
30
-
31
- assertPropertyIsNot(obj, 'readwriteAccessor', 'enumerable');
32
- assertPropertyIsNot(obj, 'readwriteAccessor', 'configurable');
33
- obj.readwriteAccessor = false;
34
- assert.strictEqual(obj.readwriteAccessor, false);
35
- obj.readwriteAccessor = true;
36
- assert.strictEqual(obj.readwriteAccessor, true);
37
-
38
- assertPropertyIsNot(obj, 'function', 'writable');
39
- assertPropertyIsNot(obj, 'function', 'enumerable');
40
- assertPropertyIsNot(obj, 'function', 'configurable');
41
- assert.strictEqual(obj.function(), true);
42
- }
43
-
44
- testDefineProperties('literal');
45
- testDefineProperties('string');
46
- testDefineProperties('value');
47
- }
1
+ 'use strict';
2
+
3
+ const assert = require('assert');
4
+
5
+ module.exports = require('../common').runTest(test);
6
+
7
+ function test(binding) {
8
+ if (!('object_deprecated' in binding)) {
9
+ return;
10
+ }
11
+ function assertPropertyIs(obj, key, attribute) {
12
+ const propDesc = Object.getOwnPropertyDescriptor(obj, key);
13
+ assert.ok(propDesc);
14
+ assert.ok(propDesc[attribute]);
15
+ }
16
+
17
+ function assertPropertyIsNot(obj, key, attribute) {
18
+ const propDesc = Object.getOwnPropertyDescriptor(obj, key);
19
+ assert.ok(propDesc);
20
+ assert.ok(!propDesc[attribute]);
21
+ }
22
+
23
+ function testDefineProperties(nameType) {
24
+ const obj = {};
25
+ binding.object.defineProperties(obj, nameType);
26
+
27
+ assertPropertyIsNot(obj, 'readonlyAccessor', 'enumerable');
28
+ assertPropertyIsNot(obj, 'readonlyAccessor', 'configurable');
29
+ assert.strictEqual(obj.readonlyAccessor, true);
30
+
31
+ assertPropertyIsNot(obj, 'readwriteAccessor', 'enumerable');
32
+ assertPropertyIsNot(obj, 'readwriteAccessor', 'configurable');
33
+ obj.readwriteAccessor = false;
34
+ assert.strictEqual(obj.readwriteAccessor, false);
35
+ obj.readwriteAccessor = true;
36
+ assert.strictEqual(obj.readwriteAccessor, true);
37
+
38
+ assertPropertyIsNot(obj, 'function', 'writable');
39
+ assertPropertyIsNot(obj, 'function', 'enumerable');
40
+ assertPropertyIsNot(obj, 'function', 'configurable');
41
+ assert.strictEqual(obj.function(), true);
42
+ }
43
+
44
+ testDefineProperties('literal');
45
+ testDefineProperties('string');
46
+ testDefineProperties('value');
47
+ }