koffi 0.9.33 → 0.9.34

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 (360) hide show
  1. package/README.md +65 -95
  2. package/package.json +1 -1
  3. package/src/call_arm32.cc +18 -8
  4. package/src/ffi.cc +1 -2
  5. package/vendor/node-addon-api/CODE_OF_CONDUCT.md +0 -4
  6. package/vendor/node-addon-api/CONTRIBUTING.md +0 -93
  7. package/vendor/node-addon-api/appveyor.yml +0 -37
  8. package/vendor/node-addon-api/benchmark/README.md +0 -47
  9. package/vendor/node-addon-api/benchmark/binding.gyp +0 -25
  10. package/vendor/node-addon-api/benchmark/function_args.cc +0 -217
  11. package/vendor/node-addon-api/benchmark/function_args.js +0 -60
  12. package/vendor/node-addon-api/benchmark/index.js +0 -34
  13. package/vendor/node-addon-api/benchmark/property_descriptor.cc +0 -91
  14. package/vendor/node-addon-api/benchmark/property_descriptor.js +0 -37
  15. package/vendor/node-addon-api/doc/addon.md +0 -163
  16. package/vendor/node-addon-api/doc/array.md +0 -81
  17. package/vendor/node-addon-api/doc/array_buffer.md +0 -155
  18. package/vendor/node-addon-api/doc/async_context.md +0 -86
  19. package/vendor/node-addon-api/doc/async_operations.md +0 -31
  20. package/vendor/node-addon-api/doc/async_worker.md +0 -427
  21. package/vendor/node-addon-api/doc/async_worker_variants.md +0 -557
  22. package/vendor/node-addon-api/doc/bigint.md +0 -97
  23. package/vendor/node-addon-api/doc/boolean.md +0 -68
  24. package/vendor/node-addon-api/doc/buffer.md +0 -150
  25. package/vendor/node-addon-api/doc/callback_scope.md +0 -54
  26. package/vendor/node-addon-api/doc/callbackinfo.md +0 -97
  27. package/vendor/node-addon-api/doc/checker-tool.md +0 -32
  28. package/vendor/node-addon-api/doc/class_property_descriptor.md +0 -123
  29. package/vendor/node-addon-api/doc/cmake-js.md +0 -68
  30. package/vendor/node-addon-api/doc/conversion-tool.md +0 -28
  31. package/vendor/node-addon-api/doc/creating_a_release.md +0 -62
  32. package/vendor/node-addon-api/doc/dataview.md +0 -248
  33. package/vendor/node-addon-api/doc/date.md +0 -68
  34. package/vendor/node-addon-api/doc/env.md +0 -196
  35. package/vendor/node-addon-api/doc/error.md +0 -120
  36. package/vendor/node-addon-api/doc/error_handling.md +0 -254
  37. package/vendor/node-addon-api/doc/escapable_handle_scope.md +0 -80
  38. package/vendor/node-addon-api/doc/external.md +0 -63
  39. package/vendor/node-addon-api/doc/function.md +0 -402
  40. package/vendor/node-addon-api/doc/function_reference.md +0 -238
  41. package/vendor/node-addon-api/doc/generator.md +0 -13
  42. package/vendor/node-addon-api/doc/handle_scope.md +0 -63
  43. package/vendor/node-addon-api/doc/hierarchy.md +0 -91
  44. package/vendor/node-addon-api/doc/instance_wrap.md +0 -408
  45. package/vendor/node-addon-api/doc/maybe.md +0 -76
  46. package/vendor/node-addon-api/doc/memory_management.md +0 -27
  47. package/vendor/node-addon-api/doc/name.md +0 -29
  48. package/vendor/node-addon-api/doc/node-gyp.md +0 -82
  49. package/vendor/node-addon-api/doc/number.md +0 -163
  50. package/vendor/node-addon-api/doc/object.md +0 -411
  51. package/vendor/node-addon-api/doc/object_lifetime_management.md +0 -83
  52. package/vendor/node-addon-api/doc/object_reference.md +0 -117
  53. package/vendor/node-addon-api/doc/object_wrap.md +0 -588
  54. package/vendor/node-addon-api/doc/prebuild_tools.md +0 -16
  55. package/vendor/node-addon-api/doc/promises.md +0 -79
  56. package/vendor/node-addon-api/doc/property_descriptor.md +0 -286
  57. package/vendor/node-addon-api/doc/propertylvalue.md +0 -50
  58. package/vendor/node-addon-api/doc/range_error.md +0 -59
  59. package/vendor/node-addon-api/doc/reference.md +0 -113
  60. package/vendor/node-addon-api/doc/setup.md +0 -110
  61. package/vendor/node-addon-api/doc/string.md +0 -93
  62. package/vendor/node-addon-api/doc/symbol.md +0 -61
  63. package/vendor/node-addon-api/doc/threadsafe.md +0 -121
  64. package/vendor/node-addon-api/doc/threadsafe_function.md +0 -290
  65. package/vendor/node-addon-api/doc/type_error.md +0 -59
  66. package/vendor/node-addon-api/doc/typed_array.md +0 -78
  67. package/vendor/node-addon-api/doc/typed_array_of.md +0 -137
  68. package/vendor/node-addon-api/doc/typed_threadsafe_function.md +0 -306
  69. package/vendor/node-addon-api/doc/value.md +0 -340
  70. package/vendor/node-addon-api/doc/version_management.md +0 -43
  71. package/vendor/node-addon-api/package.json +0 -415
  72. package/vendor/node-addon-api/test/README.md +0 -91
  73. package/vendor/node-addon-api/test/addon.cc +0 -36
  74. package/vendor/node-addon-api/test/addon.js +0 -11
  75. package/vendor/node-addon-api/test/addon_build/index.js +0 -49
  76. package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +0 -17
  77. package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +0 -62
  78. package/vendor/node-addon-api/test/addon_build/tpl/index.js +0 -9
  79. package/vendor/node-addon-api/test/addon_build/tpl/package.json +0 -11
  80. package/vendor/node-addon-api/test/addon_data.cc +0 -99
  81. package/vendor/node-addon-api/test/addon_data.js +0 -46
  82. package/vendor/node-addon-api/test/array_buffer.cc +0 -243
  83. package/vendor/node-addon-api/test/array_buffer.js +0 -69
  84. package/vendor/node-addon-api/test/async_context.cc +0 -36
  85. package/vendor/node-addon-api/test/async_context.js +0 -122
  86. package/vendor/node-addon-api/test/async_progress_queue_worker.cc +0 -83
  87. package/vendor/node-addon-api/test/async_progress_queue_worker.js +0 -46
  88. package/vendor/node-addon-api/test/async_progress_worker.cc +0 -134
  89. package/vendor/node-addon-api/test/async_progress_worker.js +0 -61
  90. package/vendor/node-addon-api/test/async_worker.cc +0 -106
  91. package/vendor/node-addon-api/test/async_worker.js +0 -179
  92. package/vendor/node-addon-api/test/async_worker_nocallback.js +0 -13
  93. package/vendor/node-addon-api/test/async_worker_persistent.cc +0 -63
  94. package/vendor/node-addon-api/test/async_worker_persistent.js +0 -24
  95. package/vendor/node-addon-api/test/basic_types/array.cc +0 -40
  96. package/vendor/node-addon-api/test/basic_types/array.js +0 -35
  97. package/vendor/node-addon-api/test/basic_types/boolean.cc +0 -38
  98. package/vendor/node-addon-api/test/basic_types/boolean.js +0 -35
  99. package/vendor/node-addon-api/test/basic_types/number.cc +0 -99
  100. package/vendor/node-addon-api/test/basic_types/number.js +0 -114
  101. package/vendor/node-addon-api/test/basic_types/value.cc +0 -120
  102. package/vendor/node-addon-api/test/basic_types/value.js +0 -133
  103. package/vendor/node-addon-api/test/bigint.cc +0 -91
  104. package/vendor/node-addon-api/test/bigint.js +0 -53
  105. package/vendor/node-addon-api/test/binding-swallowexcept.cc +0 -12
  106. package/vendor/node-addon-api/test/binding.cc +0 -173
  107. package/vendor/node-addon-api/test/binding.gyp +0 -124
  108. package/vendor/node-addon-api/test/buffer.cc +0 -183
  109. package/vendor/node-addon-api/test/buffer.js +0 -69
  110. package/vendor/node-addon-api/test/callbackscope.cc +0 -22
  111. package/vendor/node-addon-api/test/callbackscope.js +0 -49
  112. package/vendor/node-addon-api/test/common/index.js +0 -114
  113. package/vendor/node-addon-api/test/common/test_helper.h +0 -71
  114. package/vendor/node-addon-api/test/dataview/dataview.cc +0 -48
  115. package/vendor/node-addon-api/test/dataview/dataview.js +0 -35
  116. package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +0 -115
  117. package/vendor/node-addon-api/test/dataview/dataview_read_write.js +0 -90
  118. package/vendor/node-addon-api/test/date.cc +0 -44
  119. package/vendor/node-addon-api/test/date.js +0 -18
  120. package/vendor/node-addon-api/test/env_cleanup.cc +0 -88
  121. package/vendor/node-addon-api/test/env_cleanup.js +0 -56
  122. package/vendor/node-addon-api/test/error.cc +0 -287
  123. package/vendor/node-addon-api/test/error.js +0 -81
  124. package/vendor/node-addon-api/test/error_handling_for_primitives.cc +0 -13
  125. package/vendor/node-addon-api/test/error_handling_for_primitives.js +0 -29
  126. package/vendor/node-addon-api/test/error_terminating_environment.js +0 -95
  127. package/vendor/node-addon-api/test/external.cc +0 -81
  128. package/vendor/node-addon-api/test/external.js +0 -88
  129. package/vendor/node-addon-api/test/function.cc +0 -324
  130. package/vendor/node-addon-api/test/function.js +0 -133
  131. package/vendor/node-addon-api/test/function_reference.cc +0 -202
  132. package/vendor/node-addon-api/test/function_reference.js +0 -157
  133. package/vendor/node-addon-api/test/globalObject/global_object.cc +0 -61
  134. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +0 -31
  135. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +0 -61
  136. package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +0 -40
  137. package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +0 -57
  138. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +0 -28
  139. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +0 -48
  140. package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +0 -31
  141. package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +0 -58
  142. package/vendor/node-addon-api/test/handlescope.cc +0 -60
  143. package/vendor/node-addon-api/test/handlescope.js +0 -14
  144. package/vendor/node-addon-api/test/index.js +0 -159
  145. package/vendor/node-addon-api/test/maybe/check.cc +0 -23
  146. package/vendor/node-addon-api/test/maybe/index.js +0 -38
  147. package/vendor/node-addon-api/test/memory_management.cc +0 -17
  148. package/vendor/node-addon-api/test/memory_management.js +0 -9
  149. package/vendor/node-addon-api/test/movable_callbacks.cc +0 -23
  150. package/vendor/node-addon-api/test/movable_callbacks.js +0 -21
  151. package/vendor/node-addon-api/test/name.cc +0 -108
  152. package/vendor/node-addon-api/test/name.js +0 -59
  153. package/vendor/node-addon-api/test/napi_child.js +0 -14
  154. package/vendor/node-addon-api/test/object/delete_property.cc +0 -38
  155. package/vendor/node-addon-api/test/object/delete_property.js +0 -41
  156. package/vendor/node-addon-api/test/object/finalizer.cc +0 -29
  157. package/vendor/node-addon-api/test/object/finalizer.js +0 -28
  158. package/vendor/node-addon-api/test/object/get_property.cc +0 -34
  159. package/vendor/node-addon-api/test/object/get_property.js +0 -40
  160. package/vendor/node-addon-api/test/object/has_own_property.cc +0 -34
  161. package/vendor/node-addon-api/test/object/has_own_property.js +0 -34
  162. package/vendor/node-addon-api/test/object/has_property.cc +0 -38
  163. package/vendor/node-addon-api/test/object/has_property.js +0 -37
  164. package/vendor/node-addon-api/test/object/object.cc +0 -350
  165. package/vendor/node-addon-api/test/object/object.js +0 -217
  166. package/vendor/node-addon-api/test/object/object_deprecated.cc +0 -66
  167. package/vendor/node-addon-api/test/object/object_deprecated.js +0 -47
  168. package/vendor/node-addon-api/test/object/object_freeze_seal.cc +0 -25
  169. package/vendor/node-addon-api/test/object/object_freeze_seal.js +0 -61
  170. package/vendor/node-addon-api/test/object/set_property.cc +0 -45
  171. package/vendor/node-addon-api/test/object/set_property.js +0 -30
  172. package/vendor/node-addon-api/test/object/subscript_operator.cc +0 -58
  173. package/vendor/node-addon-api/test/object/subscript_operator.js +0 -17
  174. package/vendor/node-addon-api/test/object_reference.cc +0 -219
  175. package/vendor/node-addon-api/test/object_reference.js +0 -259
  176. package/vendor/node-addon-api/test/objectwrap.cc +0 -268
  177. package/vendor/node-addon-api/test/objectwrap.js +0 -284
  178. package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +0 -26
  179. package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +0 -18
  180. package/vendor/node-addon-api/test/objectwrap_function.cc +0 -45
  181. package/vendor/node-addon-api/test/objectwrap_function.js +0 -22
  182. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +0 -30
  183. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +0 -13
  184. package/vendor/node-addon-api/test/objectwrap_removewrap.cc +0 -45
  185. package/vendor/node-addon-api/test/objectwrap_removewrap.js +0 -40
  186. package/vendor/node-addon-api/test/objectwrap_worker_thread.js +0 -19
  187. package/vendor/node-addon-api/test/promise.cc +0 -29
  188. package/vendor/node-addon-api/test/promise.js +0 -18
  189. package/vendor/node-addon-api/test/reference.cc +0 -24
  190. package/vendor/node-addon-api/test/reference.js +0 -14
  191. package/vendor/node-addon-api/test/run_script.cc +0 -56
  192. package/vendor/node-addon-api/test/run_script.js +0 -45
  193. package/vendor/node-addon-api/test/symbol.cc +0 -79
  194. package/vendor/node-addon-api/test/symbol.js +0 -73
  195. package/vendor/node-addon-api/test/testUtil.js +0 -54
  196. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +0 -195
  197. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +0 -188
  198. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +0 -63
  199. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +0 -12
  200. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +0 -115
  201. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +0 -14
  202. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +0 -26
  203. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +0 -7
  204. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +0 -225
  205. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +0 -59
  206. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +0 -42
  207. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +0 -53
  208. package/vendor/node-addon-api/test/thunking_manual.cc +0 -140
  209. package/vendor/node-addon-api/test/thunking_manual.js +0 -17
  210. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +0 -215
  211. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +0 -188
  212. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +0 -68
  213. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +0 -12
  214. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +0 -127
  215. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +0 -14
  216. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +0 -28
  217. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +0 -7
  218. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +0 -237
  219. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +0 -59
  220. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +0 -53
  221. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +0 -53
  222. package/vendor/node-addon-api/test/typedarray-bigint.js +0 -58
  223. package/vendor/node-addon-api/test/typedarray.cc +0 -216
  224. package/vendor/node-addon-api/test/typedarray.js +0 -69
  225. package/vendor/node-addon-api/test/version_management.cc +0 -27
  226. package/vendor/node-addon-api/test/version_management.js +0 -31
  227. package/vendor/node-addon-api/unit-test/README.md +0 -28
  228. package/vendor/node-addon-api/unit-test/binding-file-template.js +0 -39
  229. package/vendor/node-addon-api/unit-test/binding.gyp +0 -72
  230. package/vendor/node-addon-api/unit-test/exceptions.js +0 -32
  231. package/vendor/node-addon-api/unit-test/generate-binding-cc.js +0 -61
  232. package/vendor/node-addon-api/unit-test/injectTestParams.js +0 -101
  233. package/vendor/node-addon-api/unit-test/listOfTestModules.js +0 -88
  234. package/vendor/node-addon-api/unit-test/matchModules.js +0 -65
  235. package/vendor/node-addon-api/unit-test/setup.js +0 -13
  236. package/vendor/node-addon-api/unit-test/spawnTask.js +0 -26
  237. package/vendor/node-addon-api/unit-test/test.js +0 -30
  238. package/vendor/raylib/projects/VS2019/examples/audio_module_playing.vcxproj +0 -387
  239. package/vendor/raylib/projects/VS2019/examples/audio_multichannel_sound.vcxproj +0 -387
  240. package/vendor/raylib/projects/VS2019/examples/audio_music_stream.vcxproj +0 -387
  241. package/vendor/raylib/projects/VS2019/examples/audio_raw_stream.vcxproj +0 -387
  242. package/vendor/raylib/projects/VS2019/examples/audio_sound_loading.vcxproj +0 -387
  243. package/vendor/raylib/projects/VS2019/examples/core_2d_camera.vcxproj +0 -387
  244. package/vendor/raylib/projects/VS2019/examples/core_2d_camera_platformer.vcxproj +0 -387
  245. package/vendor/raylib/projects/VS2019/examples/core_3d_camera_first_person.vcxproj +0 -387
  246. package/vendor/raylib/projects/VS2019/examples/core_3d_camera_free.vcxproj +0 -387
  247. package/vendor/raylib/projects/VS2019/examples/core_3d_camera_mode.vcxproj +0 -387
  248. package/vendor/raylib/projects/VS2019/examples/core_3d_picking.vcxproj +0 -387
  249. package/vendor/raylib/projects/VS2019/examples/core_basic_window.vcxproj +0 -387
  250. package/vendor/raylib/projects/VS2019/examples/core_custom_logging.vcxproj +0 -387
  251. package/vendor/raylib/projects/VS2019/examples/core_drop_files.vcxproj +0 -387
  252. package/vendor/raylib/projects/VS2019/examples/core_input_gamepad.vcxproj +0 -387
  253. package/vendor/raylib/projects/VS2019/examples/core_input_gestures.vcxproj +0 -387
  254. package/vendor/raylib/projects/VS2019/examples/core_input_keys.vcxproj +0 -387
  255. package/vendor/raylib/projects/VS2019/examples/core_input_mouse.vcxproj +0 -387
  256. package/vendor/raylib/projects/VS2019/examples/core_input_mouse_wheel.vcxproj +0 -387
  257. package/vendor/raylib/projects/VS2019/examples/core_input_multitouch.vcxproj +0 -387
  258. package/vendor/raylib/projects/VS2019/examples/core_loading_thread.vcxproj +0 -387
  259. package/vendor/raylib/projects/VS2019/examples/core_quat_conversion.vcxproj +0 -387
  260. package/vendor/raylib/projects/VS2019/examples/core_random_values.vcxproj +0 -387
  261. package/vendor/raylib/projects/VS2019/examples/core_scissor_test.vcxproj +0 -387
  262. package/vendor/raylib/projects/VS2019/examples/core_split_screen.vcxproj +0 -387
  263. package/vendor/raylib/projects/VS2019/examples/core_storage_values.vcxproj +0 -387
  264. package/vendor/raylib/projects/VS2019/examples/core_vr_simulator.vcxproj +0 -387
  265. package/vendor/raylib/projects/VS2019/examples/core_window_flags.vcxproj +0 -387
  266. package/vendor/raylib/projects/VS2019/examples/core_window_letterbox.vcxproj +0 -387
  267. package/vendor/raylib/projects/VS2019/examples/core_world_screen.vcxproj +0 -387
  268. package/vendor/raylib/projects/VS2019/examples/easings_testbed.vcxproj +0 -387
  269. package/vendor/raylib/projects/VS2019/examples/embedded_files_loading.vcxproj +0 -387
  270. package/vendor/raylib/projects/VS2019/examples/models_animation.vcxproj +0 -387
  271. package/vendor/raylib/projects/VS2019/examples/models_billboard.vcxproj +0 -387
  272. package/vendor/raylib/projects/VS2019/examples/models_box_collisions.vcxproj +0 -387
  273. package/vendor/raylib/projects/VS2019/examples/models_cubicmap.vcxproj +0 -387
  274. package/vendor/raylib/projects/VS2019/examples/models_first_person_maze.vcxproj +0 -387
  275. package/vendor/raylib/projects/VS2019/examples/models_geometric_shapes.vcxproj +0 -387
  276. package/vendor/raylib/projects/VS2019/examples/models_heightmap.vcxproj +0 -387
  277. package/vendor/raylib/projects/VS2019/examples/models_loading.vcxproj +0 -387
  278. package/vendor/raylib/projects/VS2019/examples/models_loading_gltf.vcxproj +0 -387
  279. package/vendor/raylib/projects/VS2019/examples/models_loading_vox.vcxproj +0 -387
  280. package/vendor/raylib/projects/VS2019/examples/models_mesh_generation.vcxproj +0 -387
  281. package/vendor/raylib/projects/VS2019/examples/models_mesh_picking.vcxproj +0 -387
  282. package/vendor/raylib/projects/VS2019/examples/models_orthographic_projection.vcxproj +0 -387
  283. package/vendor/raylib/projects/VS2019/examples/models_rlgl_solar_system.vcxproj +0 -387
  284. package/vendor/raylib/projects/VS2019/examples/models_skybox.vcxproj +0 -387
  285. package/vendor/raylib/projects/VS2019/examples/models_waving_cubes.vcxproj +0 -387
  286. package/vendor/raylib/projects/VS2019/examples/models_yaw_pitch_roll.vcxproj +0 -387
  287. package/vendor/raylib/projects/VS2019/examples/physics_demo.vcxproj +0 -387
  288. package/vendor/raylib/projects/VS2019/examples/physics_friction.vcxproj +0 -387
  289. package/vendor/raylib/projects/VS2019/examples/physics_movement.vcxproj +0 -387
  290. package/vendor/raylib/projects/VS2019/examples/physics_restitution.vcxproj +0 -387
  291. package/vendor/raylib/projects/VS2019/examples/physics_shatter.vcxproj +0 -387
  292. package/vendor/raylib/projects/VS2019/examples/raudio_standalone.vcxproj +0 -387
  293. package/vendor/raylib/projects/VS2019/examples/rlgl_standalone.vcxproj +0 -391
  294. package/vendor/raylib/projects/VS2019/examples/shaders_basic_lighting.vcxproj +0 -387
  295. package/vendor/raylib/projects/VS2019/examples/shaders_custom_uniform.vcxproj +0 -387
  296. package/vendor/raylib/projects/VS2019/examples/shaders_eratosthenes.vcxproj +0 -387
  297. package/vendor/raylib/projects/VS2019/examples/shaders_fog.vcxproj +0 -387
  298. package/vendor/raylib/projects/VS2019/examples/shaders_hot_reloading.vcxproj +0 -387
  299. package/vendor/raylib/projects/VS2019/examples/shaders_julia_set.vcxproj +0 -387
  300. package/vendor/raylib/projects/VS2019/examples/shaders_mesh_instancing.vcxproj +0 -387
  301. package/vendor/raylib/projects/VS2019/examples/shaders_model_shader.vcxproj +0 -387
  302. package/vendor/raylib/projects/VS2019/examples/shaders_multi_sample2d.vcxproj +0 -387
  303. package/vendor/raylib/projects/VS2019/examples/shaders_palette_switch.vcxproj +0 -387
  304. package/vendor/raylib/projects/VS2019/examples/shaders_postprocessing.vcxproj +0 -387
  305. package/vendor/raylib/projects/VS2019/examples/shaders_raymarching.vcxproj +0 -387
  306. package/vendor/raylib/projects/VS2019/examples/shaders_shapes_textures.vcxproj +0 -387
  307. package/vendor/raylib/projects/VS2019/examples/shaders_simple_mask.vcxproj +0 -387
  308. package/vendor/raylib/projects/VS2019/examples/shaders_spotlight.vcxproj +0 -387
  309. package/vendor/raylib/projects/VS2019/examples/shaders_texture_drawing.vcxproj +0 -387
  310. package/vendor/raylib/projects/VS2019/examples/shaders_texture_waves.vcxproj +0 -387
  311. package/vendor/raylib/projects/VS2019/examples/shapes_basic_shapes.vcxproj +0 -387
  312. package/vendor/raylib/projects/VS2019/examples/shapes_bouncing_ball.vcxproj +0 -387
  313. package/vendor/raylib/projects/VS2019/examples/shapes_collision_area.vcxproj +0 -387
  314. package/vendor/raylib/projects/VS2019/examples/shapes_colors_palette.vcxproj +0 -387
  315. package/vendor/raylib/projects/VS2019/examples/shapes_draw_circle_sector.vcxproj +0 -387
  316. package/vendor/raylib/projects/VS2019/examples/shapes_draw_rectangle_rounded.vcxproj +0 -387
  317. package/vendor/raylib/projects/VS2019/examples/shapes_draw_ring.vcxproj +0 -387
  318. package/vendor/raylib/projects/VS2019/examples/shapes_easings_ball_anim.vcxproj +0 -387
  319. package/vendor/raylib/projects/VS2019/examples/shapes_easings_box_anim.vcxproj +0 -387
  320. package/vendor/raylib/projects/VS2019/examples/shapes_easings_rectangle_array.vcxproj +0 -387
  321. package/vendor/raylib/projects/VS2019/examples/shapes_following_eyes.vcxproj +0 -387
  322. package/vendor/raylib/projects/VS2019/examples/shapes_lines_bezier.vcxproj +0 -387
  323. package/vendor/raylib/projects/VS2019/examples/shapes_logo_raylib.vcxproj +0 -387
  324. package/vendor/raylib/projects/VS2019/examples/shapes_logo_raylib_anim.vcxproj +0 -387
  325. package/vendor/raylib/projects/VS2019/examples/shapes_rectangle_scaling.vcxproj +0 -387
  326. package/vendor/raylib/projects/VS2019/examples/text_font_filters.vcxproj +0 -387
  327. package/vendor/raylib/projects/VS2019/examples/text_font_loading.vcxproj +0 -387
  328. package/vendor/raylib/projects/VS2019/examples/text_font_sdf.vcxproj +0 -387
  329. package/vendor/raylib/projects/VS2019/examples/text_font_spritefont.vcxproj +0 -387
  330. package/vendor/raylib/projects/VS2019/examples/text_format_text.vcxproj +0 -387
  331. package/vendor/raylib/projects/VS2019/examples/text_input_box.vcxproj +0 -387
  332. package/vendor/raylib/projects/VS2019/examples/text_raylib_fonts.vcxproj +0 -387
  333. package/vendor/raylib/projects/VS2019/examples/text_rectangle_bounds.vcxproj +0 -387
  334. package/vendor/raylib/projects/VS2019/examples/text_unicode.vcxproj +0 -387
  335. package/vendor/raylib/projects/VS2019/examples/text_writing_anim.vcxproj +0 -387
  336. package/vendor/raylib/projects/VS2019/examples/textures_background_scrolling.vcxproj +0 -387
  337. package/vendor/raylib/projects/VS2019/examples/textures_blend_modes.vcxproj +0 -387
  338. package/vendor/raylib/projects/VS2019/examples/textures_bunnymark.vcxproj +0 -387
  339. package/vendor/raylib/projects/VS2019/examples/textures_draw_tiled.vcxproj +0 -387
  340. package/vendor/raylib/projects/VS2019/examples/textures_image_drawing.vcxproj +0 -387
  341. package/vendor/raylib/projects/VS2019/examples/textures_image_generation.vcxproj +0 -387
  342. package/vendor/raylib/projects/VS2019/examples/textures_image_loading.vcxproj +0 -387
  343. package/vendor/raylib/projects/VS2019/examples/textures_image_processing.vcxproj +0 -387
  344. package/vendor/raylib/projects/VS2019/examples/textures_image_text.vcxproj +0 -387
  345. package/vendor/raylib/projects/VS2019/examples/textures_logo_raylib.vcxproj +0 -387
  346. package/vendor/raylib/projects/VS2019/examples/textures_mouse_painting.vcxproj +0 -387
  347. package/vendor/raylib/projects/VS2019/examples/textures_npatch_drawing.vcxproj +0 -387
  348. package/vendor/raylib/projects/VS2019/examples/textures_particles_blending.vcxproj +0 -387
  349. package/vendor/raylib/projects/VS2019/examples/textures_raw_data.vcxproj +0 -387
  350. package/vendor/raylib/projects/VS2019/examples/textures_rectangle.vcxproj +0 -387
  351. package/vendor/raylib/projects/VS2019/examples/textures_sprite_button.vcxproj +0 -387
  352. package/vendor/raylib/projects/VS2019/examples/textures_sprite_explosion.vcxproj +0 -387
  353. package/vendor/raylib/projects/VS2019/examples/textures_srcrec_dstrec.vcxproj +0 -387
  354. package/vendor/raylib/projects/VS2019/examples/textures_to_image.vcxproj +0 -387
  355. package/vendor/raylib/projects/VS2019/raylib/raylib.vcxproj +0 -341
  356. package/vendor/raylib/projects/VS2019/raylib.sln +0 -2274
  357. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj +0 -226
  358. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.filters +0 -10
  359. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.user +0 -4
  360. package/vendor/raylib/projects/VS2019-Android/raylib_android.sln +0 -75
@@ -1,93 +0,0 @@
1
- # String
2
-
3
- Class `Napi::String` inherits from class [`Napi::Name`][].
4
-
5
- ## Constructor
6
-
7
- ```cpp
8
- Napi::String::String();
9
- ```
10
-
11
- Returns a new **empty** `Napi::String` instance.
12
-
13
- If an error occurs, a `Napi::Error` will get thrown. If C++ exceptions are not
14
- being used, callers should check the result of `Env::IsExceptionPending` before
15
- attempting to use the returned value.
16
-
17
- ```cpp
18
- Napi::String::String(napi_env env, napi_value value); ///< Wraps a Node-API value primitive.
19
- ```
20
- - `[in] env` - The environment in which to create the string.
21
- - `[in] value` - The primitive to wrap.
22
-
23
- Returns a `Napi::String` wrapping a `napi_value`.
24
-
25
- If an error occurs, a `Napi::Error` will get thrown. If C++ exceptions are not
26
- being used, callers should check the result of `Env::IsExceptionPending` before
27
- attempting to use the returned value.
28
-
29
- ## Operators
30
-
31
- ### operator std::string
32
-
33
- ```cpp
34
- Napi::String::operator std::string() const;
35
- ```
36
-
37
- Returns a UTF-8 encoded C++ string.
38
-
39
- ### operator std::u16string
40
- ```cpp
41
- Napi::String::operator std::u16string() const;
42
- ```
43
-
44
- Returns a UTF-16 encoded C++ string.
45
-
46
- ## Methods
47
-
48
- ### New
49
- ```cpp
50
- Napi::String::New();
51
- ```
52
-
53
- Returns a new empty `Napi::String`.
54
-
55
- ### New
56
- ```cpp
57
- Napi::String::New(napi_env env, const std::string& value);
58
- Napi::String::New(napi_env env, const std::u16::string& value);
59
- Napi::String::New(napi_env env, const char* value);
60
- Napi::String::New(napi_env env, const char16_t* value);
61
- Napi::String::New(napi_env env, const char* value, size_t length);
62
- Napi::String::New(napi_env env, const char16_t* value, size_t length);
63
- ```
64
-
65
- - `[in] env`: The `napi_env` environment in which to construct the `Napi::Value` object.
66
- - `[in] value`: The C++ primitive from which to instantiate the `Napi::Value`. `value` may be any of:
67
- - `std::string&` - represents a UTF8 string.
68
- - `std::u16string&` - represents a UTF16-LE string.
69
- - `const char*` - represents a UTF8 string.
70
- - `const char16_t*` - represents a UTF16-LE string.
71
- - `[in] length`: The length of the string (not necessarily null-terminated) in code units.
72
-
73
- Returns a new `Napi::String` that represents the passed in C++ string.
74
-
75
- If an error occurs, a `Napi::Error` will get thrown. If C++ exceptions are not
76
- being used, callers should check the result of `Env::IsExceptionPending` before
77
- attempting to use the returned value.
78
-
79
- ### Utf8Value
80
- ```cpp
81
- std::string Napi::String::Utf8Value() const;
82
- ```
83
-
84
- Returns a UTF-8 encoded C++ string.
85
-
86
- ### Utf16Value
87
- ```cpp
88
- std::u16string Napi::String::Utf16Value() const;
89
- ```
90
-
91
- Returns a UTF-16 encoded C++ string.
92
-
93
- [`Napi::Name`]: ./name.md
@@ -1,61 +0,0 @@
1
- # Symbol
2
-
3
- Class `Napi::Symbol` inherits from class [`Napi::Name`][].
4
-
5
- ## Methods
6
-
7
- ### Constructor
8
-
9
- Instantiates a new `Napi::Symbol` value.
10
-
11
- ```cpp
12
- Napi::Symbol::Symbol();
13
- ```
14
-
15
- Returns a new empty `Napi::Symbol`.
16
-
17
- ### New
18
- ```cpp
19
- Napi::Symbol::New(napi_env env, const std::string& description);
20
- Napi::Symbol::New(napi_env env, const char* description);
21
- Napi::Symbol::New(napi_env env, Napi::String description);
22
- Napi::Symbol::New(napi_env env, napi_value description);
23
- ```
24
-
25
- - `[in] env`: The `napi_env` environment in which to construct the `Napi::Symbol` object.
26
- - `[in] value`: The C++ primitive which represents the description hint for the `Napi::Symbol`.
27
- `description` may be any of:
28
- - `std::string&` - UTF8 string description.
29
- - `const char*` - represents a UTF8 string description.
30
- - `String` - Node addon API String description.
31
- - `napi_value` - Node-API `napi_value` description.
32
-
33
- If an error occurs, a `Napi::Error` will get thrown. If C++ exceptions are not
34
- being used, callers should check the result of `Napi::Env::IsExceptionPending` before
35
- attempting to use the returned value.
36
-
37
- ### WellKnown
38
- ```cpp
39
- static Napi::Symbol Napi::Symbol::WellKnown(napi_env env, const std::string& name);
40
- ```
41
-
42
- - `[in] env`: The `napi_env` environment in which to construct the `Napi::Symbol` object.
43
- - `[in] name`: The C++ string representing the `Napi::Symbol` to retrieve.
44
-
45
- Returns a `Napi::Symbol` representing a well-known `Symbol` from the
46
- `Symbol` registry.
47
-
48
- ### For
49
- ```cpp
50
- static Napi::Symbol Napi::Symbol::For(napi_env env, const std::string& description);
51
- static Napi::Symbol Napi::Symbol::For(napi_env env, const char* description);
52
- static Napi::Symbol Napi::Symbol::For(napi_env env, String description);
53
- static Napi::Symbol Napi::Symbol::For(napi_env env, napi_value description);
54
- ```
55
-
56
- - `[in] env`: The `napi_env` environment in which to construct the `Napi::Symbol` object.
57
- - `[in] description`: The C++ string representing the `Napi::Symbol` in the global registry to retrieve.
58
-
59
- Searches in the global registry for existing symbol with the given name. If the symbol already exist it will be returned, otherwise a new symbol will be created in the registry. It's equivalent to Symbol.for() called from JavaScript.
60
-
61
- [`Napi::Name`]: ./name.md
@@ -1,121 +0,0 @@
1
- # Thread-safe Functions
2
-
3
- JavaScript functions can normally only be called from a native addon's main
4
- thread. If an addon creates additional threads, then node-addon-api functions
5
- that require a `Napi::Env`, `Napi::Value`, or `Napi::Reference` must not be
6
- called from those threads.
7
-
8
- When an addon has additional threads and JavaScript functions need to be invoked
9
- based on the processing completed by those threads, those threads must
10
- communicate with the addon's main thread so that the main thread can invoke the
11
- JavaScript function on their behalf. The thread-safe function APIs provide an
12
- easy way to do this. These APIs provide two types --
13
- [`Napi::ThreadSafeFunction`](threadsafe_function.md) and
14
- [`Napi::TypedThreadSafeFunction`](typed_threadsafe_function.md) -- as well as
15
- APIs to create, destroy, and call objects of this type. The differences between
16
- the two are subtle and are [highlighted below](#implementation-differences).
17
- Regardless of which type you choose, the APIs between the two are similar.
18
-
19
- `Napi::[Typed]ThreadSafeFunction::New()` creates a persistent reference that
20
- holds a JavaScript function which can be called from multiple threads. The calls
21
- happen asynchronously. This means that values with which the JavaScript callback
22
- is to be called will be placed in a queue, and, for each value in the queue, a
23
- call will eventually be made to the JavaScript function.
24
-
25
- `Napi::[Typed]ThreadSafeFunction` objects are destroyed when every thread which
26
- uses the object has called `Release()` or has received a return status of
27
- `napi_closing` in response to a call to `BlockingCall()` or `NonBlockingCall()`.
28
- The queue is emptied before the `Napi::[Typed]ThreadSafeFunction` is destroyed.
29
- It is important that `Release()` be the last API call made in conjunction with a
30
- given `Napi::[Typed]ThreadSafeFunction`, because after the call completes, there
31
- is no guarantee that the `Napi::[Typed]ThreadSafeFunction` is still allocated.
32
- For the same reason it is also important that no more use be made of a
33
- thread-safe function after receiving a return value of `napi_closing` in
34
- response to a call to `BlockingCall()` or `NonBlockingCall()`. Data associated
35
- with the `Napi::[Typed]ThreadSafeFunction` can be freed in its `Finalizer`
36
- callback which was passed to `[Typed]ThreadSafeFunction::New()`.
37
-
38
- Once the number of threads making use of a `Napi::[Typed]ThreadSafeFunction`
39
- reaches zero, no further threads can start making use of it by calling
40
- `Acquire()`. In fact, all subsequent API calls associated with it, except
41
- `Release()`, will return an error value of `napi_closing`.
42
-
43
- ## Implementation Differences
44
-
45
- The choice between `Napi::ThreadSafeFunction` and
46
- `Napi::TypedThreadSafeFunction` depends largely on how you plan to execute your
47
- native C++ code (the "callback") on the Node.js thread.
48
-
49
- ### [`Napi::ThreadSafeFunction`](threadsafe_function.md)
50
-
51
- This API is designed without Node-API 5 native support for [the optional JavaScript
52
- function callback feature](https://github.com/nodejs/node/commit/53297e66cb).
53
-
54
- This API has some dynamic functionality, in that:
55
- - The `[Non]BlockingCall()` methods provide a `Napi::Function` parameter as the
56
- callback to run when processing the data item on the main thread -- the
57
- `CallJs` callback. Since the callback is a parameter, it can be changed for
58
- every call.
59
- - Different C++ data types may be passed with each call of `[Non]BlockingCall()`
60
- to match the specific data type as specified in the `CallJs` callback.
61
-
62
- Note that this functionality comes with some **additional overhead** and
63
- situational **memory leaks**:
64
- - The API acts as a "broker" between the underlying `napi_threadsafe_function`,
65
- and dynamically constructs a wrapper for your callback on the heap for every
66
- call to `[Non]BlockingCall()`.
67
- - In acting in this "broker" fashion, the API will call the underlying "make
68
- call" Node-API method on this packaged item. If the API has determined the
69
- thread-safe function is no longer accessible (eg. all threads have released
70
- yet there are still items on the queue), **the callback passed to
71
- [Non]BlockingCall will not execute**. This means it is impossible to perform
72
- clean-up for calls that never execute their `CallJs` callback. **This may lead
73
- to memory leaks** if you are dynamically allocating memory.
74
- - The `CallJs` does not receive the thread-safe function's context as a
75
- parameter. In order for the callback to access the context, it must have a
76
- reference to either (1) the context directly, or (2) the thread-safe function
77
- to call `GetContext()`. Furthermore, the `GetContext()` method is not
78
- _type-safe_, as the method returns an object that can be "any-casted", instead
79
- of having a static type.
80
-
81
- ### [`Napi::TypedThreadSafeFunction`](typed_threadsafe_function.md)
82
-
83
- The `TypedThreadSafeFunction` class is a new implementation to address the
84
- drawbacks listed above. The API is designed with Node-API 5's support of an
85
- optional function callback. The API will correctly allow developers to pass
86
- `std::nullptr` instead of a `const Function&` for the callback function
87
- specified in `::New`. It also provides helper APIs to _target_ Node-API 4 and
88
- construct a no-op `Function` **or** to target Node-API 5 and "construct" a
89
- `std::nullptr` callback. This allows a single codebase to use the same APIs,
90
- with just a switch of the `NAPI_VERSION` compile-time constant.
91
-
92
- The removal of the dynamic call functionality has the following implications:
93
- - The API does _not_ act as a "broker" compared to the
94
- `Napi::ThreadSafeFunction`. Once Node.js finalizes the thread-safe function,
95
- the `CallJs` callback will execute with an empty `Napi::Env` for any remaining
96
- items on the queue. This provides the ability to handle any necessary cleanup
97
- of the item's data.
98
- - The callback _does_ receive the context as a parameter, so a call to
99
- `GetContext()` is _not_ necessary. This context type is specified as the
100
- **first template argument** specified to `::New`, ensuring type safety.
101
- - The `New()` constructor accepts the `CallJs` callback as the **second type
102
- argument**. The callback must be statically defined for the API to access it.
103
- This affords the ability to statically pass the context as the correct type
104
- across all methods.
105
- - Only one C++ data type may be specified to every call to `[Non]BlockingCall()`
106
- -- the **third template argument** specified to `::New`. Any "dynamic call
107
- data" must be implemented by the user.
108
-
109
-
110
- ### Usage Suggestions
111
-
112
- In summary, it may be best to use `Napi::TypedThreadSafeFunction` if:
113
-
114
- - static, compile-time support for targeting Node-API 4 or 5+ with an optional
115
- JavaScript callback feature is desired;
116
- - the callback can have `static` storage class and will not change across calls
117
- to `[Non]BlockingCall()`;
118
- - cleanup of items' data is required (eg. deleting dynamically-allocated data
119
- that is created at the caller level).
120
-
121
- Otherwise, `Napi::ThreadSafeFunction` may be a better choice.
@@ -1,290 +0,0 @@
1
- # ThreadSafeFunction
2
-
3
- The `Napi::ThreadSafeFunction` type provides APIs for threads to communicate
4
- with the addon's main thread to invoke JavaScript functions on their behalf.
5
- Documentation can be found for an [overview of the API](threadsafe.md), as well
6
- as [differences between the two thread-safe function
7
- APIs](threadsafe.md#implementation-differences).
8
-
9
- ## Methods
10
-
11
- ### Constructor
12
-
13
- Creates a new empty instance of `Napi::ThreadSafeFunction`.
14
-
15
- ```cpp
16
- Napi::Function::ThreadSafeFunction();
17
- ```
18
-
19
- ### Constructor
20
-
21
- Creates a new instance of the `Napi::ThreadSafeFunction` object.
22
-
23
- ```cpp
24
- Napi::ThreadSafeFunction::ThreadSafeFunction(napi_threadsafe_function tsfn);
25
- ```
26
-
27
- - `tsfn`: The `napi_threadsafe_function` which is a handle for an existing
28
- thread-safe function.
29
-
30
- Returns a non-empty `Napi::ThreadSafeFunction` instance. When using this
31
- constructor, only use the `Blocking(void*)` / `NonBlocking(void*)` overloads;
32
- the `Callback` and templated `data*` overloads should _not_ be used. See below
33
- for additional details.
34
-
35
- ### New
36
-
37
- Creates a new instance of the `Napi::ThreadSafeFunction` object. The `New`
38
- function has several overloads for the various optional parameters: skip the
39
- optional parameter for that specific overload.
40
-
41
- ```cpp
42
- New(napi_env env,
43
- const Function& callback,
44
- const Object& resource,
45
- ResourceString resourceName,
46
- size_t maxQueueSize,
47
- size_t initialThreadCount,
48
- ContextType* context,
49
- Finalizer finalizeCallback,
50
- FinalizerDataType* data);
51
- ```
52
-
53
- - `env`: The `napi_env` environment in which to construct the
54
- `Napi::ThreadSafeFunction` object.
55
- - `callback`: The `Function` to call from another thread.
56
- - `[optional] resource`: An object associated with the async work that will be
57
- passed to possible async_hooks init hooks.
58
- - `resourceName`: A JavaScript string to provide an identifier for the kind of
59
- resource that is being provided for diagnostic information exposed by the
60
- async_hooks API.
61
- - `maxQueueSize`: Maximum size of the queue. `0` for no limit.
62
- - `initialThreadCount`: The initial number of threads, including the main
63
- thread, which will be making use of this function.
64
- - `[optional] context`: Data to attach to the resulting `ThreadSafeFunction`. It
65
- can be retreived by calling `GetContext()`.
66
- - `[optional] finalizeCallback`: Function to call when the `ThreadSafeFunction`
67
- is being destroyed. This callback will be invoked on the main thread when the
68
- thread-safe function is about to be destroyed. It receives the context and the
69
- finalize data given during construction (if given), and provides an
70
- opportunity for cleaning up after the threads e.g. by calling
71
- `uv_thread_join()`. It is important that, aside from the main loop thread,
72
- there be no threads left using the thread-safe function after the finalize
73
- callback completes. Must implement `void operator()(Env env, DataType* data,
74
- ContextType* hint)`, skipping `data` or `hint` if they are not provided. Can
75
- be retrieved via `GetContext()`.
76
- - `[optional] data`: Data to be passed to `finalizeCallback`.
77
-
78
- Returns a non-empty `Napi::ThreadSafeFunction` instance.
79
-
80
- ### Acquire
81
-
82
- Add a thread to this thread-safe function object, indicating that a new thread
83
- will start making use of the thread-safe function.
84
-
85
- ```cpp
86
- napi_status Napi::ThreadSafeFunction::Acquire() const
87
- ```
88
-
89
- Returns one of:
90
- - `napi_ok`: The thread has successfully acquired the thread-safe function
91
- for its use.
92
- - `napi_closing`: The thread-safe function has been marked as closing via a
93
- previous call to `Abort()`.
94
-
95
- ### Release
96
-
97
- Indicate that an existing thread will stop making use of the thread-safe
98
- function. A thread should call this API when it stops making use of this
99
- thread-safe function. Using any thread-safe APIs after having called this API
100
- has undefined results in the current thread, as it may have been destroyed.
101
-
102
- ```cpp
103
- napi_status Napi::ThreadSafeFunction::Release() const
104
- ```
105
-
106
- Returns one of:
107
- - `napi_ok`: The thread-safe function has been successfully released.
108
- - `napi_invalid_arg`: The thread-safe function's thread-count is zero.
109
- - `napi_generic_failure`: A generic error occurred when attempting to release
110
- the thread-safe function.
111
-
112
- ### Abort
113
-
114
- "Abort" the thread-safe function. This will cause all subsequent APIs associated
115
- with the thread-safe function except `Release()` to return `napi_closing` even
116
- before its reference count reaches zero. In particular, `BlockingCall` and
117
- `NonBlockingCall()` will return `napi_closing`, thus informing the threads that
118
- it is no longer possible to make asynchronous calls to the thread-safe function.
119
- This can be used as a criterion for terminating the thread. Upon receiving a
120
- return value of `napi_closing` from a thread-safe function call a thread must
121
- make no further use of the thread-safe function because it is no longer
122
- guaranteed to be allocated.
123
-
124
- ```cpp
125
- napi_status Napi::ThreadSafeFunction::Abort() const
126
- ```
127
-
128
- Returns one of:
129
- - `napi_ok`: The thread-safe function has been successfully aborted.
130
- - `napi_invalid_arg`: The thread-safe function's thread-count is zero.
131
- - `napi_generic_failure`: A generic error occurred when attempting to abort
132
- the thread-safe function.
133
-
134
- ### BlockingCall / NonBlockingCall
135
-
136
- Calls the Javascript function in either a blocking or non-blocking fashion.
137
- - `BlockingCall()`: the API blocks until space becomes available in the queue.
138
- Will never block if the thread-safe function was created with a maximum queue
139
- size of `0`.
140
- - `NonBlockingCall()`: will return `napi_queue_full` if the queue was full,
141
- preventing data from being successfully added to the queue.
142
-
143
- There are several overloaded implementations of `BlockingCall()` and
144
- `NonBlockingCall()` for use with optional parameters: skip the optional
145
- parameter for that specific overload.
146
-
147
- **These specific function overloads should only be used on a `ThreadSafeFunction`
148
- created via `ThreadSafeFunction::New`.**
149
-
150
- ```cpp
151
- napi_status Napi::ThreadSafeFunction::BlockingCall(DataType* data, Callback callback) const
152
-
153
- napi_status Napi::ThreadSafeFunction::NonBlockingCall(DataType* data, Callback callback) const
154
- ```
155
-
156
- - `[optional] data`: Data to pass to `callback`.
157
- - `[optional] callback`: C++ function that is invoked on the main thread. The
158
- callback receives the `ThreadSafeFunction`'s JavaScript callback function to
159
- call as an `Napi::Function` in its parameters and the `DataType*` data pointer
160
- (if provided). Must implement `void operator()(Napi::Env env, Function
161
- jsCallback, DataType* data)`, skipping `data` if not provided. It is not
162
- necessary to call into JavaScript via `MakeCallback()` because Node-API runs
163
- `callback` in a context appropriate for callbacks.
164
-
165
- **These specific function overloads should only be used on a `ThreadSafeFunction`
166
- created via `ThreadSafeFunction(napi_threadsafe_function)`.**
167
-
168
- ```cpp
169
- napi_status Napi::ThreadSafeFunction::BlockingCall(void* data) const
170
-
171
- napi_status Napi::ThreadSafeFunction::NonBlockingCall(void* data) const
172
- ```
173
- - `data`: Data to pass to `call_js_cb` specified when creating the thread-safe
174
- function via `napi_create_threadsafe_function`.
175
-
176
- Returns one of:
177
- - `napi_ok`: The call was successfully added to the queue.
178
- - `napi_queue_full`: The queue was full when trying to call in a non-blocking
179
- method.
180
- - `napi_closing`: The thread-safe function is aborted and cannot accept more
181
- calls.
182
- - `napi_invalid_arg`: The thread-safe function is closed.
183
- - `napi_generic_failure`: A generic error occurred when attempting to add to the
184
- queue.
185
-
186
- ## Example
187
-
188
- ```cpp
189
- #include <chrono>
190
- #include <thread>
191
- #include <napi.h>
192
-
193
- using namespace Napi;
194
-
195
- std::thread nativeThread;
196
- ThreadSafeFunction tsfn;
197
-
198
- Value Start( const CallbackInfo& info )
199
- {
200
- Napi::Env env = info.Env();
201
-
202
- if ( info.Length() < 2 )
203
- {
204
- throw TypeError::New( env, "Expected two arguments" );
205
- }
206
- else if ( !info[0].IsFunction() )
207
- {
208
- throw TypeError::New( env, "Expected first arg to be function" );
209
- }
210
- else if ( !info[1].IsNumber() )
211
- {
212
- throw TypeError::New( env, "Expected second arg to be number" );
213
- }
214
-
215
- int count = info[1].As<Number>().Int32Value();
216
-
217
- // Create a ThreadSafeFunction
218
- tsfn = ThreadSafeFunction::New(
219
- env,
220
- info[0].As<Function>(), // JavaScript function called asynchronously
221
- "Resource Name", // Name
222
- 0, // Unlimited queue
223
- 1, // Only one thread will use this initially
224
- []( Napi::Env ) { // Finalizer used to clean threads up
225
- nativeThread.join();
226
- } );
227
-
228
- // Create a native thread
229
- nativeThread = std::thread( [count] {
230
- auto callback = []( Napi::Env env, Function jsCallback, int* value ) {
231
- // Transform native data into JS data, passing it to the provided
232
- // `jsCallback` -- the TSFN's JavaScript function.
233
- jsCallback.Call( {Number::New( env, *value )} );
234
-
235
- // We're finished with the data.
236
- delete value;
237
- };
238
-
239
- for ( int i = 0; i < count; i++ )
240
- {
241
- // Create new data
242
- int* value = new int( clock() );
243
-
244
- // Perform a blocking call
245
- napi_status status = tsfn.BlockingCall( value, callback );
246
- if ( status != napi_ok )
247
- {
248
- // Handle error
249
- break;
250
- }
251
-
252
- std::this_thread::sleep_for( std::chrono::seconds( 1 ) );
253
- }
254
-
255
- // Release the thread-safe function
256
- tsfn.Release();
257
- } );
258
-
259
- return Boolean::New(env, true);
260
- }
261
-
262
- Napi::Object Init( Napi::Env env, Object exports )
263
- {
264
- exports.Set( "start", Function::New( env, Start ) );
265
- return exports;
266
- }
267
-
268
- NODE_API_MODULE( clock, Init )
269
- ```
270
-
271
- The above code can be used from JavaScript as follows:
272
-
273
- ```js
274
- const { start } = require('bindings')('clock');
275
-
276
- start(function () {
277
- console.log("JavaScript callback called with arguments", Array.from(arguments));
278
- }, 5);
279
- ```
280
-
281
- When executed, the output will show the value of `clock()` five times at one
282
- second intervals:
283
-
284
- ```
285
- JavaScript callback called with arguments [ 84745 ]
286
- JavaScript callback called with arguments [ 103211 ]
287
- JavaScript callback called with arguments [ 104516 ]
288
- JavaScript callback called with arguments [ 105104 ]
289
- JavaScript callback called with arguments [ 105691 ]
290
- ```
@@ -1,59 +0,0 @@
1
- # TypeError
2
-
3
- The `Napi::TypeError` class is a representation of the JavaScript `TypeError` that is
4
- thrown when an operand or argument passed to a function is incompatible with the
5
- type expected by the operator or function.
6
-
7
- The `Napi::TypeError` class inherits its behaviors from the `Napi::Error` class (for more info
8
- see: [`Napi::Error`](error.md)).
9
-
10
- For more details about error handling refer to the section titled [Error handling](error_handling.md).
11
-
12
- ## Methods
13
-
14
- ### New
15
-
16
- Creates a new instance of the `Napi::TypeError` object.
17
-
18
- ```cpp
19
- Napi::TypeError::New(Napi::Env env, const char* message);
20
- ```
21
-
22
- - `[in] Env`: The environment in which to construct the `Napi::TypeError` object.
23
- - `[in] message`: Null-terminated string to be used as the message for the `Napi::TypeError`.
24
-
25
- Returns an instance of a `Napi::TypeError` object.
26
-
27
- ### New
28
-
29
- Creates a new instance of a `Napi::TypeError` object.
30
-
31
- ```cpp
32
- Napi::TypeError::New(Napi::Env env, const std::string& message);
33
- ```
34
-
35
- - `[in] Env`: The environment in which to construct the `Napi::TypeError` object.
36
- - `[in] message`: Reference string to be used as the message for the `Napi::TypeError`.
37
-
38
- Returns an instance of a `Napi::TypeError` object.
39
-
40
- ### Constructor
41
-
42
- Creates a new empty instance of a `Napi::TypeError`.
43
-
44
- ```cpp
45
- Napi::TypeError::TypeError();
46
- ```
47
-
48
- ### Constructor
49
-
50
- Initializes a `Napi::TypeError` instance from an existing JavaScript error object.
51
-
52
- ```cpp
53
- Napi::TypeError::TypeError(napi_env env, napi_value value);
54
- ```
55
-
56
- - `[in] Env`: The environment in which to construct the `Napi::TypeError` object.
57
- - `[in] value`: The `Napi::Error` reference to wrap.
58
-
59
- Returns an instance of a `Napi::TypeError` object.