koffi 0.9.34 → 0.9.37

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 (375) hide show
  1. package/CMakeLists.txt +2 -1
  2. package/README.md +16 -13
  3. package/package.json +5 -4
  4. package/src/call_arm32.cc +6 -2
  5. package/src/call_arm64.cc +6 -2
  6. package/src/call_x64_sysv.cc +6 -2
  7. package/src/call_x64_win.cc +6 -2
  8. package/src/call_x86.cc +7 -3
  9. package/src/ffi.cc +77 -59
  10. package/src/ffi.hh +2 -2
  11. package/src/parser.cc +246 -0
  12. package/src/parser.hh +63 -0
  13. package/src/util.cc +23 -0
  14. package/src/util.hh +3 -0
  15. package/test/registry/machines.json +70 -0
  16. package/test/test.js +116 -7
  17. package/test/tests/misc.js +16 -16
  18. package/test/tests/raylib.js +8 -8
  19. package/test/tests/sqlite.js +9 -9
  20. package/vendor/node-addon-api/CODE_OF_CONDUCT.md +4 -0
  21. package/vendor/node-addon-api/CONTRIBUTING.md +93 -0
  22. package/vendor/node-addon-api/appveyor.yml +37 -0
  23. package/vendor/node-addon-api/benchmark/README.md +47 -0
  24. package/vendor/node-addon-api/benchmark/binding.gyp +25 -0
  25. package/vendor/node-addon-api/benchmark/function_args.cc +217 -0
  26. package/vendor/node-addon-api/benchmark/function_args.js +60 -0
  27. package/vendor/node-addon-api/benchmark/index.js +34 -0
  28. package/vendor/node-addon-api/benchmark/property_descriptor.cc +91 -0
  29. package/vendor/node-addon-api/benchmark/property_descriptor.js +37 -0
  30. package/vendor/node-addon-api/doc/addon.md +163 -0
  31. package/vendor/node-addon-api/doc/array.md +81 -0
  32. package/vendor/node-addon-api/doc/array_buffer.md +155 -0
  33. package/vendor/node-addon-api/doc/async_context.md +86 -0
  34. package/vendor/node-addon-api/doc/async_operations.md +31 -0
  35. package/vendor/node-addon-api/doc/async_worker.md +427 -0
  36. package/vendor/node-addon-api/doc/async_worker_variants.md +557 -0
  37. package/vendor/node-addon-api/doc/bigint.md +97 -0
  38. package/vendor/node-addon-api/doc/boolean.md +68 -0
  39. package/vendor/node-addon-api/doc/buffer.md +150 -0
  40. package/vendor/node-addon-api/doc/callback_scope.md +54 -0
  41. package/vendor/node-addon-api/doc/callbackinfo.md +97 -0
  42. package/vendor/node-addon-api/doc/checker-tool.md +32 -0
  43. package/vendor/node-addon-api/doc/class_property_descriptor.md +123 -0
  44. package/vendor/node-addon-api/doc/cmake-js.md +68 -0
  45. package/vendor/node-addon-api/doc/conversion-tool.md +28 -0
  46. package/vendor/node-addon-api/doc/creating_a_release.md +62 -0
  47. package/vendor/node-addon-api/doc/dataview.md +248 -0
  48. package/vendor/node-addon-api/doc/date.md +68 -0
  49. package/vendor/node-addon-api/doc/env.md +196 -0
  50. package/vendor/node-addon-api/doc/error.md +120 -0
  51. package/vendor/node-addon-api/doc/error_handling.md +254 -0
  52. package/vendor/node-addon-api/doc/escapable_handle_scope.md +80 -0
  53. package/vendor/node-addon-api/doc/external.md +63 -0
  54. package/vendor/node-addon-api/doc/function.md +402 -0
  55. package/vendor/node-addon-api/doc/function_reference.md +238 -0
  56. package/vendor/node-addon-api/doc/generator.md +13 -0
  57. package/vendor/node-addon-api/doc/handle_scope.md +63 -0
  58. package/vendor/node-addon-api/doc/hierarchy.md +91 -0
  59. package/vendor/node-addon-api/doc/instance_wrap.md +408 -0
  60. package/vendor/node-addon-api/doc/maybe.md +76 -0
  61. package/vendor/node-addon-api/doc/memory_management.md +27 -0
  62. package/vendor/node-addon-api/doc/name.md +29 -0
  63. package/vendor/node-addon-api/doc/node-gyp.md +82 -0
  64. package/vendor/node-addon-api/doc/number.md +163 -0
  65. package/vendor/node-addon-api/doc/object.md +411 -0
  66. package/vendor/node-addon-api/doc/object_lifetime_management.md +83 -0
  67. package/vendor/node-addon-api/doc/object_reference.md +117 -0
  68. package/vendor/node-addon-api/doc/object_wrap.md +588 -0
  69. package/vendor/node-addon-api/doc/prebuild_tools.md +16 -0
  70. package/vendor/node-addon-api/doc/promises.md +79 -0
  71. package/vendor/node-addon-api/doc/property_descriptor.md +286 -0
  72. package/vendor/node-addon-api/doc/propertylvalue.md +50 -0
  73. package/vendor/node-addon-api/doc/range_error.md +59 -0
  74. package/vendor/node-addon-api/doc/reference.md +113 -0
  75. package/vendor/node-addon-api/doc/setup.md +110 -0
  76. package/vendor/node-addon-api/doc/string.md +93 -0
  77. package/vendor/node-addon-api/doc/symbol.md +61 -0
  78. package/vendor/node-addon-api/doc/threadsafe.md +121 -0
  79. package/vendor/node-addon-api/doc/threadsafe_function.md +290 -0
  80. package/vendor/node-addon-api/doc/type_error.md +59 -0
  81. package/vendor/node-addon-api/doc/typed_array.md +78 -0
  82. package/vendor/node-addon-api/doc/typed_array_of.md +137 -0
  83. package/vendor/node-addon-api/doc/typed_threadsafe_function.md +306 -0
  84. package/vendor/node-addon-api/doc/value.md +340 -0
  85. package/vendor/node-addon-api/doc/version_management.md +43 -0
  86. package/vendor/node-addon-api/package.json +415 -0
  87. package/vendor/node-addon-api/test/README.md +91 -0
  88. package/vendor/node-addon-api/test/addon.cc +36 -0
  89. package/vendor/node-addon-api/test/addon.js +11 -0
  90. package/vendor/node-addon-api/test/addon_build/index.js +49 -0
  91. package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +17 -0
  92. package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +62 -0
  93. package/vendor/node-addon-api/test/addon_build/tpl/index.js +9 -0
  94. package/vendor/node-addon-api/test/addon_build/tpl/package.json +11 -0
  95. package/vendor/node-addon-api/test/addon_data.cc +99 -0
  96. package/vendor/node-addon-api/test/addon_data.js +46 -0
  97. package/vendor/node-addon-api/test/array_buffer.cc +243 -0
  98. package/vendor/node-addon-api/test/array_buffer.js +69 -0
  99. package/vendor/node-addon-api/test/async_context.cc +36 -0
  100. package/vendor/node-addon-api/test/async_context.js +122 -0
  101. package/vendor/node-addon-api/test/async_progress_queue_worker.cc +83 -0
  102. package/vendor/node-addon-api/test/async_progress_queue_worker.js +46 -0
  103. package/vendor/node-addon-api/test/async_progress_worker.cc +134 -0
  104. package/vendor/node-addon-api/test/async_progress_worker.js +61 -0
  105. package/vendor/node-addon-api/test/async_worker.cc +106 -0
  106. package/vendor/node-addon-api/test/async_worker.js +179 -0
  107. package/vendor/node-addon-api/test/async_worker_nocallback.js +13 -0
  108. package/vendor/node-addon-api/test/async_worker_persistent.cc +63 -0
  109. package/vendor/node-addon-api/test/async_worker_persistent.js +24 -0
  110. package/vendor/node-addon-api/test/basic_types/array.cc +40 -0
  111. package/vendor/node-addon-api/test/basic_types/array.js +35 -0
  112. package/vendor/node-addon-api/test/basic_types/boolean.cc +38 -0
  113. package/vendor/node-addon-api/test/basic_types/boolean.js +35 -0
  114. package/vendor/node-addon-api/test/basic_types/number.cc +99 -0
  115. package/vendor/node-addon-api/test/basic_types/number.js +114 -0
  116. package/vendor/node-addon-api/test/basic_types/value.cc +120 -0
  117. package/vendor/node-addon-api/test/basic_types/value.js +133 -0
  118. package/vendor/node-addon-api/test/bigint.cc +91 -0
  119. package/vendor/node-addon-api/test/bigint.js +53 -0
  120. package/vendor/node-addon-api/test/binding-swallowexcept.cc +12 -0
  121. package/vendor/node-addon-api/test/binding.cc +173 -0
  122. package/vendor/node-addon-api/test/binding.gyp +124 -0
  123. package/vendor/node-addon-api/test/buffer.cc +183 -0
  124. package/vendor/node-addon-api/test/buffer.js +69 -0
  125. package/vendor/node-addon-api/test/callbackscope.cc +22 -0
  126. package/vendor/node-addon-api/test/callbackscope.js +49 -0
  127. package/vendor/node-addon-api/test/common/index.js +114 -0
  128. package/vendor/node-addon-api/test/common/test_helper.h +71 -0
  129. package/vendor/node-addon-api/test/dataview/dataview.cc +48 -0
  130. package/vendor/node-addon-api/test/dataview/dataview.js +35 -0
  131. package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +115 -0
  132. package/vendor/node-addon-api/test/dataview/dataview_read_write.js +90 -0
  133. package/vendor/node-addon-api/test/date.cc +44 -0
  134. package/vendor/node-addon-api/test/date.js +18 -0
  135. package/vendor/node-addon-api/test/env_cleanup.cc +88 -0
  136. package/vendor/node-addon-api/test/env_cleanup.js +56 -0
  137. package/vendor/node-addon-api/test/error.cc +287 -0
  138. package/vendor/node-addon-api/test/error.js +81 -0
  139. package/vendor/node-addon-api/test/error_handling_for_primitives.cc +13 -0
  140. package/vendor/node-addon-api/test/error_handling_for_primitives.js +29 -0
  141. package/vendor/node-addon-api/test/error_terminating_environment.js +95 -0
  142. package/vendor/node-addon-api/test/external.cc +81 -0
  143. package/vendor/node-addon-api/test/external.js +88 -0
  144. package/vendor/node-addon-api/test/function.cc +324 -0
  145. package/vendor/node-addon-api/test/function.js +133 -0
  146. package/vendor/node-addon-api/test/function_reference.cc +202 -0
  147. package/vendor/node-addon-api/test/function_reference.js +157 -0
  148. package/vendor/node-addon-api/test/globalObject/global_object.cc +61 -0
  149. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +31 -0
  150. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +61 -0
  151. package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +40 -0
  152. package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +57 -0
  153. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +28 -0
  154. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +48 -0
  155. package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +31 -0
  156. package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +58 -0
  157. package/vendor/node-addon-api/test/handlescope.cc +60 -0
  158. package/vendor/node-addon-api/test/handlescope.js +14 -0
  159. package/vendor/node-addon-api/test/index.js +159 -0
  160. package/vendor/node-addon-api/test/maybe/check.cc +23 -0
  161. package/vendor/node-addon-api/test/maybe/index.js +38 -0
  162. package/vendor/node-addon-api/test/memory_management.cc +17 -0
  163. package/vendor/node-addon-api/test/memory_management.js +9 -0
  164. package/vendor/node-addon-api/test/movable_callbacks.cc +23 -0
  165. package/vendor/node-addon-api/test/movable_callbacks.js +21 -0
  166. package/vendor/node-addon-api/test/name.cc +108 -0
  167. package/vendor/node-addon-api/test/name.js +59 -0
  168. package/vendor/node-addon-api/test/napi_child.js +14 -0
  169. package/vendor/node-addon-api/test/object/delete_property.cc +38 -0
  170. package/vendor/node-addon-api/test/object/delete_property.js +41 -0
  171. package/vendor/node-addon-api/test/object/finalizer.cc +29 -0
  172. package/vendor/node-addon-api/test/object/finalizer.js +28 -0
  173. package/vendor/node-addon-api/test/object/get_property.cc +34 -0
  174. package/vendor/node-addon-api/test/object/get_property.js +40 -0
  175. package/vendor/node-addon-api/test/object/has_own_property.cc +34 -0
  176. package/vendor/node-addon-api/test/object/has_own_property.js +34 -0
  177. package/vendor/node-addon-api/test/object/has_property.cc +38 -0
  178. package/vendor/node-addon-api/test/object/has_property.js +37 -0
  179. package/vendor/node-addon-api/test/object/object.cc +350 -0
  180. package/vendor/node-addon-api/test/object/object.js +217 -0
  181. package/vendor/node-addon-api/test/object/object_deprecated.cc +66 -0
  182. package/vendor/node-addon-api/test/object/object_deprecated.js +47 -0
  183. package/vendor/node-addon-api/test/object/object_freeze_seal.cc +25 -0
  184. package/vendor/node-addon-api/test/object/object_freeze_seal.js +61 -0
  185. package/vendor/node-addon-api/test/object/set_property.cc +45 -0
  186. package/vendor/node-addon-api/test/object/set_property.js +30 -0
  187. package/vendor/node-addon-api/test/object/subscript_operator.cc +58 -0
  188. package/vendor/node-addon-api/test/object/subscript_operator.js +17 -0
  189. package/vendor/node-addon-api/test/object_reference.cc +219 -0
  190. package/vendor/node-addon-api/test/object_reference.js +259 -0
  191. package/vendor/node-addon-api/test/objectwrap.cc +268 -0
  192. package/vendor/node-addon-api/test/objectwrap.js +284 -0
  193. package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +26 -0
  194. package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +18 -0
  195. package/vendor/node-addon-api/test/objectwrap_function.cc +45 -0
  196. package/vendor/node-addon-api/test/objectwrap_function.js +22 -0
  197. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +30 -0
  198. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +13 -0
  199. package/vendor/node-addon-api/test/objectwrap_removewrap.cc +45 -0
  200. package/vendor/node-addon-api/test/objectwrap_removewrap.js +40 -0
  201. package/vendor/node-addon-api/test/objectwrap_worker_thread.js +19 -0
  202. package/vendor/node-addon-api/test/promise.cc +29 -0
  203. package/vendor/node-addon-api/test/promise.js +18 -0
  204. package/vendor/node-addon-api/test/reference.cc +24 -0
  205. package/vendor/node-addon-api/test/reference.js +14 -0
  206. package/vendor/node-addon-api/test/run_script.cc +56 -0
  207. package/vendor/node-addon-api/test/run_script.js +45 -0
  208. package/vendor/node-addon-api/test/symbol.cc +79 -0
  209. package/vendor/node-addon-api/test/symbol.js +73 -0
  210. package/vendor/node-addon-api/test/testUtil.js +54 -0
  211. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +195 -0
  212. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +188 -0
  213. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +63 -0
  214. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +12 -0
  215. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +115 -0
  216. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +14 -0
  217. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +26 -0
  218. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +7 -0
  219. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +225 -0
  220. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +59 -0
  221. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +42 -0
  222. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +53 -0
  223. package/vendor/node-addon-api/test/thunking_manual.cc +140 -0
  224. package/vendor/node-addon-api/test/thunking_manual.js +17 -0
  225. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +215 -0
  226. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +188 -0
  227. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +68 -0
  228. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +12 -0
  229. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +127 -0
  230. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +14 -0
  231. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +28 -0
  232. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +7 -0
  233. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +237 -0
  234. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +59 -0
  235. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +53 -0
  236. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +53 -0
  237. package/vendor/node-addon-api/test/typedarray-bigint.js +58 -0
  238. package/vendor/node-addon-api/test/typedarray.cc +216 -0
  239. package/vendor/node-addon-api/test/typedarray.js +69 -0
  240. package/vendor/node-addon-api/test/version_management.cc +27 -0
  241. package/vendor/node-addon-api/test/version_management.js +31 -0
  242. package/vendor/node-addon-api/unit-test/README.md +28 -0
  243. package/vendor/node-addon-api/unit-test/binding-file-template.js +39 -0
  244. package/vendor/node-addon-api/unit-test/binding.gyp +72 -0
  245. package/vendor/node-addon-api/unit-test/exceptions.js +32 -0
  246. package/vendor/node-addon-api/unit-test/generate-binding-cc.js +61 -0
  247. package/vendor/node-addon-api/unit-test/injectTestParams.js +101 -0
  248. package/vendor/node-addon-api/unit-test/listOfTestModules.js +88 -0
  249. package/vendor/node-addon-api/unit-test/matchModules.js +65 -0
  250. package/vendor/node-addon-api/unit-test/setup.js +13 -0
  251. package/vendor/node-addon-api/unit-test/spawnTask.js +26 -0
  252. package/vendor/node-addon-api/unit-test/test.js +30 -0
  253. package/vendor/raylib/projects/VS2019/examples/audio_module_playing.vcxproj +387 -0
  254. package/vendor/raylib/projects/VS2019/examples/audio_multichannel_sound.vcxproj +387 -0
  255. package/vendor/raylib/projects/VS2019/examples/audio_music_stream.vcxproj +387 -0
  256. package/vendor/raylib/projects/VS2019/examples/audio_raw_stream.vcxproj +387 -0
  257. package/vendor/raylib/projects/VS2019/examples/audio_sound_loading.vcxproj +387 -0
  258. package/vendor/raylib/projects/VS2019/examples/core_2d_camera.vcxproj +387 -0
  259. package/vendor/raylib/projects/VS2019/examples/core_2d_camera_platformer.vcxproj +387 -0
  260. package/vendor/raylib/projects/VS2019/examples/core_3d_camera_first_person.vcxproj +387 -0
  261. package/vendor/raylib/projects/VS2019/examples/core_3d_camera_free.vcxproj +387 -0
  262. package/vendor/raylib/projects/VS2019/examples/core_3d_camera_mode.vcxproj +387 -0
  263. package/vendor/raylib/projects/VS2019/examples/core_3d_picking.vcxproj +387 -0
  264. package/vendor/raylib/projects/VS2019/examples/core_basic_window.vcxproj +387 -0
  265. package/vendor/raylib/projects/VS2019/examples/core_custom_logging.vcxproj +387 -0
  266. package/vendor/raylib/projects/VS2019/examples/core_drop_files.vcxproj +387 -0
  267. package/vendor/raylib/projects/VS2019/examples/core_input_gamepad.vcxproj +387 -0
  268. package/vendor/raylib/projects/VS2019/examples/core_input_gestures.vcxproj +387 -0
  269. package/vendor/raylib/projects/VS2019/examples/core_input_keys.vcxproj +387 -0
  270. package/vendor/raylib/projects/VS2019/examples/core_input_mouse.vcxproj +387 -0
  271. package/vendor/raylib/projects/VS2019/examples/core_input_mouse_wheel.vcxproj +387 -0
  272. package/vendor/raylib/projects/VS2019/examples/core_input_multitouch.vcxproj +387 -0
  273. package/vendor/raylib/projects/VS2019/examples/core_loading_thread.vcxproj +387 -0
  274. package/vendor/raylib/projects/VS2019/examples/core_quat_conversion.vcxproj +387 -0
  275. package/vendor/raylib/projects/VS2019/examples/core_random_values.vcxproj +387 -0
  276. package/vendor/raylib/projects/VS2019/examples/core_scissor_test.vcxproj +387 -0
  277. package/vendor/raylib/projects/VS2019/examples/core_split_screen.vcxproj +387 -0
  278. package/vendor/raylib/projects/VS2019/examples/core_storage_values.vcxproj +387 -0
  279. package/vendor/raylib/projects/VS2019/examples/core_vr_simulator.vcxproj +387 -0
  280. package/vendor/raylib/projects/VS2019/examples/core_window_flags.vcxproj +387 -0
  281. package/vendor/raylib/projects/VS2019/examples/core_window_letterbox.vcxproj +387 -0
  282. package/vendor/raylib/projects/VS2019/examples/core_world_screen.vcxproj +387 -0
  283. package/vendor/raylib/projects/VS2019/examples/easings_testbed.vcxproj +387 -0
  284. package/vendor/raylib/projects/VS2019/examples/embedded_files_loading.vcxproj +387 -0
  285. package/vendor/raylib/projects/VS2019/examples/models_animation.vcxproj +387 -0
  286. package/vendor/raylib/projects/VS2019/examples/models_billboard.vcxproj +387 -0
  287. package/vendor/raylib/projects/VS2019/examples/models_box_collisions.vcxproj +387 -0
  288. package/vendor/raylib/projects/VS2019/examples/models_cubicmap.vcxproj +387 -0
  289. package/vendor/raylib/projects/VS2019/examples/models_first_person_maze.vcxproj +387 -0
  290. package/vendor/raylib/projects/VS2019/examples/models_geometric_shapes.vcxproj +387 -0
  291. package/vendor/raylib/projects/VS2019/examples/models_heightmap.vcxproj +387 -0
  292. package/vendor/raylib/projects/VS2019/examples/models_loading.vcxproj +387 -0
  293. package/vendor/raylib/projects/VS2019/examples/models_loading_gltf.vcxproj +387 -0
  294. package/vendor/raylib/projects/VS2019/examples/models_loading_vox.vcxproj +387 -0
  295. package/vendor/raylib/projects/VS2019/examples/models_mesh_generation.vcxproj +387 -0
  296. package/vendor/raylib/projects/VS2019/examples/models_mesh_picking.vcxproj +387 -0
  297. package/vendor/raylib/projects/VS2019/examples/models_orthographic_projection.vcxproj +387 -0
  298. package/vendor/raylib/projects/VS2019/examples/models_rlgl_solar_system.vcxproj +387 -0
  299. package/vendor/raylib/projects/VS2019/examples/models_skybox.vcxproj +387 -0
  300. package/vendor/raylib/projects/VS2019/examples/models_waving_cubes.vcxproj +387 -0
  301. package/vendor/raylib/projects/VS2019/examples/models_yaw_pitch_roll.vcxproj +387 -0
  302. package/vendor/raylib/projects/VS2019/examples/physics_demo.vcxproj +387 -0
  303. package/vendor/raylib/projects/VS2019/examples/physics_friction.vcxproj +387 -0
  304. package/vendor/raylib/projects/VS2019/examples/physics_movement.vcxproj +387 -0
  305. package/vendor/raylib/projects/VS2019/examples/physics_restitution.vcxproj +387 -0
  306. package/vendor/raylib/projects/VS2019/examples/physics_shatter.vcxproj +387 -0
  307. package/vendor/raylib/projects/VS2019/examples/raudio_standalone.vcxproj +387 -0
  308. package/vendor/raylib/projects/VS2019/examples/rlgl_standalone.vcxproj +391 -0
  309. package/vendor/raylib/projects/VS2019/examples/shaders_basic_lighting.vcxproj +387 -0
  310. package/vendor/raylib/projects/VS2019/examples/shaders_custom_uniform.vcxproj +387 -0
  311. package/vendor/raylib/projects/VS2019/examples/shaders_eratosthenes.vcxproj +387 -0
  312. package/vendor/raylib/projects/VS2019/examples/shaders_fog.vcxproj +387 -0
  313. package/vendor/raylib/projects/VS2019/examples/shaders_hot_reloading.vcxproj +387 -0
  314. package/vendor/raylib/projects/VS2019/examples/shaders_julia_set.vcxproj +387 -0
  315. package/vendor/raylib/projects/VS2019/examples/shaders_mesh_instancing.vcxproj +387 -0
  316. package/vendor/raylib/projects/VS2019/examples/shaders_model_shader.vcxproj +387 -0
  317. package/vendor/raylib/projects/VS2019/examples/shaders_multi_sample2d.vcxproj +387 -0
  318. package/vendor/raylib/projects/VS2019/examples/shaders_palette_switch.vcxproj +387 -0
  319. package/vendor/raylib/projects/VS2019/examples/shaders_postprocessing.vcxproj +387 -0
  320. package/vendor/raylib/projects/VS2019/examples/shaders_raymarching.vcxproj +387 -0
  321. package/vendor/raylib/projects/VS2019/examples/shaders_shapes_textures.vcxproj +387 -0
  322. package/vendor/raylib/projects/VS2019/examples/shaders_simple_mask.vcxproj +387 -0
  323. package/vendor/raylib/projects/VS2019/examples/shaders_spotlight.vcxproj +387 -0
  324. package/vendor/raylib/projects/VS2019/examples/shaders_texture_drawing.vcxproj +387 -0
  325. package/vendor/raylib/projects/VS2019/examples/shaders_texture_waves.vcxproj +387 -0
  326. package/vendor/raylib/projects/VS2019/examples/shapes_basic_shapes.vcxproj +387 -0
  327. package/vendor/raylib/projects/VS2019/examples/shapes_bouncing_ball.vcxproj +387 -0
  328. package/vendor/raylib/projects/VS2019/examples/shapes_collision_area.vcxproj +387 -0
  329. package/vendor/raylib/projects/VS2019/examples/shapes_colors_palette.vcxproj +387 -0
  330. package/vendor/raylib/projects/VS2019/examples/shapes_draw_circle_sector.vcxproj +387 -0
  331. package/vendor/raylib/projects/VS2019/examples/shapes_draw_rectangle_rounded.vcxproj +387 -0
  332. package/vendor/raylib/projects/VS2019/examples/shapes_draw_ring.vcxproj +387 -0
  333. package/vendor/raylib/projects/VS2019/examples/shapes_easings_ball_anim.vcxproj +387 -0
  334. package/vendor/raylib/projects/VS2019/examples/shapes_easings_box_anim.vcxproj +387 -0
  335. package/vendor/raylib/projects/VS2019/examples/shapes_easings_rectangle_array.vcxproj +387 -0
  336. package/vendor/raylib/projects/VS2019/examples/shapes_following_eyes.vcxproj +387 -0
  337. package/vendor/raylib/projects/VS2019/examples/shapes_lines_bezier.vcxproj +387 -0
  338. package/vendor/raylib/projects/VS2019/examples/shapes_logo_raylib.vcxproj +387 -0
  339. package/vendor/raylib/projects/VS2019/examples/shapes_logo_raylib_anim.vcxproj +387 -0
  340. package/vendor/raylib/projects/VS2019/examples/shapes_rectangle_scaling.vcxproj +387 -0
  341. package/vendor/raylib/projects/VS2019/examples/text_font_filters.vcxproj +387 -0
  342. package/vendor/raylib/projects/VS2019/examples/text_font_loading.vcxproj +387 -0
  343. package/vendor/raylib/projects/VS2019/examples/text_font_sdf.vcxproj +387 -0
  344. package/vendor/raylib/projects/VS2019/examples/text_font_spritefont.vcxproj +387 -0
  345. package/vendor/raylib/projects/VS2019/examples/text_format_text.vcxproj +387 -0
  346. package/vendor/raylib/projects/VS2019/examples/text_input_box.vcxproj +387 -0
  347. package/vendor/raylib/projects/VS2019/examples/text_raylib_fonts.vcxproj +387 -0
  348. package/vendor/raylib/projects/VS2019/examples/text_rectangle_bounds.vcxproj +387 -0
  349. package/vendor/raylib/projects/VS2019/examples/text_unicode.vcxproj +387 -0
  350. package/vendor/raylib/projects/VS2019/examples/text_writing_anim.vcxproj +387 -0
  351. package/vendor/raylib/projects/VS2019/examples/textures_background_scrolling.vcxproj +387 -0
  352. package/vendor/raylib/projects/VS2019/examples/textures_blend_modes.vcxproj +387 -0
  353. package/vendor/raylib/projects/VS2019/examples/textures_bunnymark.vcxproj +387 -0
  354. package/vendor/raylib/projects/VS2019/examples/textures_draw_tiled.vcxproj +387 -0
  355. package/vendor/raylib/projects/VS2019/examples/textures_image_drawing.vcxproj +387 -0
  356. package/vendor/raylib/projects/VS2019/examples/textures_image_generation.vcxproj +387 -0
  357. package/vendor/raylib/projects/VS2019/examples/textures_image_loading.vcxproj +387 -0
  358. package/vendor/raylib/projects/VS2019/examples/textures_image_processing.vcxproj +387 -0
  359. package/vendor/raylib/projects/VS2019/examples/textures_image_text.vcxproj +387 -0
  360. package/vendor/raylib/projects/VS2019/examples/textures_logo_raylib.vcxproj +387 -0
  361. package/vendor/raylib/projects/VS2019/examples/textures_mouse_painting.vcxproj +387 -0
  362. package/vendor/raylib/projects/VS2019/examples/textures_npatch_drawing.vcxproj +387 -0
  363. package/vendor/raylib/projects/VS2019/examples/textures_particles_blending.vcxproj +387 -0
  364. package/vendor/raylib/projects/VS2019/examples/textures_raw_data.vcxproj +387 -0
  365. package/vendor/raylib/projects/VS2019/examples/textures_rectangle.vcxproj +387 -0
  366. package/vendor/raylib/projects/VS2019/examples/textures_sprite_button.vcxproj +387 -0
  367. package/vendor/raylib/projects/VS2019/examples/textures_sprite_explosion.vcxproj +387 -0
  368. package/vendor/raylib/projects/VS2019/examples/textures_srcrec_dstrec.vcxproj +387 -0
  369. package/vendor/raylib/projects/VS2019/examples/textures_to_image.vcxproj +387 -0
  370. package/vendor/raylib/projects/VS2019/raylib/raylib.vcxproj +341 -0
  371. package/vendor/raylib/projects/VS2019/raylib.sln +2274 -0
  372. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj +226 -0
  373. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.filters +10 -0
  374. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.user +4 -0
  375. package/vendor/raylib/projects/VS2019-Android/raylib_android.sln +75 -0
@@ -0,0 +1,588 @@
1
+ # Object Wrap
2
+
3
+ Class `Napi::ObjectWrap<T>` inherits from class [`Napi::InstanceWrap<T>`][].
4
+
5
+ The `Napi::ObjectWrap<T>` class is used to bind the lifetime of C++ code to a
6
+ JavaScript object. Once bound, each time an instance of the JavaScript object
7
+ is created, an instance of the C++ class will also be created. When a method
8
+ is called on the JavaScript object which is defined as an InstanceMethod, the
9
+ corresponding C++ method on the wrapped C++ class will be invoked.
10
+
11
+ In order to create a wrapper it's necessary to extend the
12
+ `Napi::ObjectWrap<T>` class which contains all the plumbing to connect
13
+ JavaScript code with a C++ object. Classes extending `Napi::ObjectWrap` can be
14
+ instantiated from JavaScript using the **new** operator, and their methods can
15
+ be directly invoked from JavaScript. The **wrap** word refers to a way of
16
+ grouping methods and state of the class because it will be necessary write
17
+ custom code to bridge each of your C++ class methods.
18
+
19
+ **Caution:** When the JavaScript object is garbage collected, the call to the
20
+ C++ destructor may be deferred until a later time. Within that period,
21
+ `Value()` will return an empty value.
22
+
23
+ ## Example
24
+
25
+ ```cpp
26
+ #include <napi.h>
27
+
28
+ class Example : public Napi::ObjectWrap<Example> {
29
+ public:
30
+ static Napi::Object Init(Napi::Env env, Napi::Object exports);
31
+ Example(const Napi::CallbackInfo& info);
32
+ static Napi::Value CreateNewItem(const Napi::CallbackInfo& info);
33
+
34
+ private:
35
+ double _value;
36
+ Napi::Value GetValue(const Napi::CallbackInfo& info);
37
+ Napi::Value SetValue(const Napi::CallbackInfo& info);
38
+ };
39
+
40
+ Napi::Object Example::Init(Napi::Env env, Napi::Object exports) {
41
+ // This method is used to hook the accessor and method callbacks
42
+ Napi::Function func = DefineClass(env, "Example", {
43
+ InstanceMethod<&Example::GetValue>("GetValue", static_cast<napi_property_attributes>(napi_writable | napi_configurable)),
44
+ InstanceMethod<&Example::SetValue>("SetValue", static_cast<napi_property_attributes>(napi_writable | napi_configurable)),
45
+ StaticMethod<&Example::CreateNewItem>("CreateNewItem", static_cast<napi_property_attributes>(napi_writable | napi_configurable)),
46
+ });
47
+
48
+ Napi::FunctionReference* constructor = new Napi::FunctionReference();
49
+
50
+ // Create a persistent reference to the class constructor. This will allow
51
+ // a function called on a class prototype and a function
52
+ // called on instance of a class to be distinguished from each other.
53
+ *constructor = Napi::Persistent(func);
54
+ exports.Set("Example", func);
55
+
56
+ // Store the constructor as the add-on instance data. This will allow this
57
+ // add-on to support multiple instances of itself running on multiple worker
58
+ // threads, as well as multiple instances of itself running in different
59
+ // contexts on the same thread.
60
+ //
61
+ // By default, the value set on the environment here will be destroyed when
62
+ // the add-on is unloaded using the `delete` operator, but it is also
63
+ // possible to supply a custom deleter.
64
+ env.SetInstanceData<Napi::FunctionReference>(constructor);
65
+
66
+ return exports;
67
+ }
68
+
69
+ Example::Example(const Napi::CallbackInfo& info) :
70
+ Napi::ObjectWrap<Example>(info) {
71
+ Napi::Env env = info.Env();
72
+ // ...
73
+ Napi::Number value = info[0].As<Napi::Number>();
74
+ this->_value = value.DoubleValue();
75
+ }
76
+
77
+ Napi::Value Example::GetValue(const Napi::CallbackInfo& info){
78
+ Napi::Env env = info.Env();
79
+ return Napi::Number::New(env, this->_value);
80
+ }
81
+
82
+ Napi::Value Example::SetValue(const Napi::CallbackInfo& info){
83
+ Napi::Env env = info.Env();
84
+ // ...
85
+ Napi::Number value = info[0].As<Napi::Number>();
86
+ this->_value = value.DoubleValue();
87
+ return this->GetValue(info);
88
+ }
89
+
90
+ // Initialize native add-on
91
+ Napi::Object Init (Napi::Env env, Napi::Object exports) {
92
+ Example::Init(env, exports);
93
+ return exports;
94
+ }
95
+
96
+ // Create a new item using the constructor stored during Init.
97
+ Napi::Value Example::CreateNewItem(const Napi::CallbackInfo& info) {
98
+ // Retrieve the instance data we stored during `Init()`. We only stored the
99
+ // constructor there, so we retrieve it here to create a new instance of the
100
+ // JS class the constructor represents.
101
+ Napi::FunctionReference* constructor =
102
+ info.Env().GetInstanceData<Napi::FunctionReference>();
103
+ return constructor->New({ Napi::Number::New(info.Env(), 42) });
104
+ }
105
+
106
+ // Register and initialize native add-on
107
+ NODE_API_MODULE(NODE_GYP_MODULE_NAME, Init)
108
+ ```
109
+
110
+ The above code can be used from JavaScript as follows:
111
+
112
+ ```js
113
+ 'use strict'
114
+
115
+ const { Example } = require('bindings')('addon')
116
+
117
+ const example = new Example(11)
118
+ console.log(example.GetValue())
119
+ // It prints 11
120
+ example.SetValue(19)
121
+ console.log(example.GetValue());
122
+ // It prints 19
123
+ ```
124
+
125
+ At initialization time, the `Napi::ObjectWrap::DefineClass()` method must be
126
+ used to hook up the accessor and method callbacks. It takes a list of property
127
+ descriptors, which can be constructed via the various static methods on the base
128
+ class.
129
+
130
+ When JavaScript code invokes the constructor, the constructor callback will
131
+ create a new C++ instance and "wrap" it into the newly created JavaScript
132
+ object.
133
+
134
+ When JavaScript code invokes a method or a property accessor on the class the
135
+ corresponding C++ callback function will be executed.
136
+
137
+ For a wrapped object it could be difficult to distinguish between a function
138
+ called on a class prototype and a function called on instance of a class.
139
+ Therefore it is good practice to save a persistent reference to the class
140
+ constructor. This allows the two cases to be distinguished from each other by
141
+ checking the this object against the class constructor.
142
+
143
+ ## Methods
144
+
145
+ ### Constructor
146
+
147
+ Creates a new instance of a JavaScript object that wraps native instance.
148
+
149
+ ```cpp
150
+ Napi::ObjectWrap(const Napi::CallbackInfo& callbackInfo);
151
+ ```
152
+
153
+ - `[in] callbackInfo`: The object representing the components of the JavaScript
154
+ request being made.
155
+
156
+ ### Unwrap
157
+
158
+ Retrieves a native instance wrapped in a JavaScript object.
159
+
160
+ ```cpp
161
+ static T* Napi::ObjectWrap::Unwrap(Napi::Object wrapper);
162
+ ```
163
+
164
+ * `[in] wrapper`: The JavaScript object that wraps the native instance.
165
+
166
+ Returns a native instance wrapped in a JavaScript object. Given the
167
+ `Napi::Object`, this allows a method to get a pointer to the wrapped
168
+ C++ object and then reference fields, call methods, etc. within that class.
169
+ In many cases calling Unwrap is not required, as methods can
170
+ use the `this` field for ObjectWrap when running in a method on a
171
+ class that extends ObjectWrap.
172
+
173
+ ### DefineClass
174
+
175
+ Defnines a JavaScript class with constructor, static and instance properties and
176
+ methods.
177
+
178
+ ```cpp
179
+ static Napi::Function Napi::ObjectWrap::DefineClass(Napi::Env env,
180
+ const char* utf8name,
181
+ const std::initializer_list<PropertyDescriptor>& properties,
182
+ void* data = nullptr);
183
+ ```
184
+
185
+ * `[in] env`: The environment in which to construct a JavaScript class.
186
+ * `[in] utf8name`: Null-terminated string that represents the name of the
187
+ JavaScript constructor function.
188
+ * `[in] properties`: Initializer list of class property descriptor describing
189
+ static and instance properties and methods of the class.
190
+ See: [`Class property and descriptor`](class_property_descriptor.md).
191
+ * `[in] data`: User-provided data passed to the constructor callback as `data`
192
+ property of the `Napi::CallbackInfo`.
193
+
194
+ Returns a `Napi::Function` representing the constructor function for the class.
195
+
196
+ ### DefineClass
197
+
198
+ Defnines a JavaScript class with constructor, static and instance properties and
199
+ methods.
200
+
201
+ ```cpp
202
+ static Napi::Function Napi::ObjectWrap::DefineClass(Napi::Env env,
203
+ const char* utf8name,
204
+ const std::vector<PropertyDescriptor>& properties,
205
+ void* data = nullptr);
206
+ ```
207
+
208
+ * `[in] env`: The environment in which to construct a JavaScript class.
209
+ * `[in] utf8name`: Null-terminated string that represents the name of the
210
+ JavaScript constructor function.
211
+ * `[in] properties`: Vector of class property descriptor describing static and
212
+ instance properties and methods of the class.
213
+ See: [`Class property and descriptor`](class_property_descriptor.md).
214
+ * `[in] data`: User-provided data passed to the constructor callback as `data`
215
+ property of the `Napi::CallbackInfo`.
216
+
217
+ Returns a `Napi::Function` representing the constructor function for the class.
218
+
219
+ ### OnCalledAsFunction
220
+
221
+ Provides an opportunity to customize the behavior when a `Napi::ObjectWrap<T>`
222
+ class is called from JavaScript as a function (without the **new** operator).
223
+
224
+ The default behavior in this scenario is to throw a `Napi::TypeError` with the
225
+ message `Class constructors cannot be invoked without 'new'`. Define this
226
+ public method on your derived class to override that behavior.
227
+
228
+ For example, you could internally re-call the JavaScript contstructor _with_
229
+ the **new** operator (via
230
+ `Napi::Function::New(const std::vector<napi_value> &args)`), and return the
231
+ resulting object. Or you might do something else entirely, such as the way
232
+ [`Date()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#constructor)
233
+ produces a string when called as a function.
234
+
235
+ ```cpp
236
+ static Napi::Value OnCalledAsFunction(const Napi::CallbackInfo& callbackInfo);
237
+ ```
238
+
239
+ - `[in] callbackInfo`: The object representing the components of the JavaScript
240
+ request being made.
241
+
242
+ ### Finalize
243
+
244
+ Provides an opportunity to run cleanup code that requires access to the
245
+ `Napi::Env` before the wrapped native object instance is freed. Override to
246
+ implement.
247
+
248
+ ```cpp
249
+ virtual void Finalize(Napi::Env env);
250
+ ```
251
+
252
+ - `[in] env`: `Napi::Env`.
253
+
254
+ ### StaticMethod
255
+
256
+ Creates property descriptor that represents a static method of a JavaScript
257
+ class.
258
+
259
+ ```cpp
260
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(
261
+ const char* utf8name,
262
+ StaticVoidMethodCallback method,
263
+ napi_property_attributes attributes = napi_default,
264
+ void* data = nullptr);
265
+ ```
266
+
267
+ - `[in] utf8name`: Null-terminated string that represents the name of a static
268
+ method for the class.
269
+ - `[in] method`: The native function that represents a static method of a
270
+ JavaScript class.
271
+ - `[in] attributes`: The attributes associated with a particular property.
272
+ One or more of `napi_property_attributes`.
273
+ - `[in] data`: User-provided data passed into method when it is invoked.
274
+
275
+ Returns `Napi::PropertyDescriptor` object that represents the static method of a
276
+ JavaScript class.
277
+
278
+ ### StaticMethod
279
+
280
+ Creates property descriptor that represents a static method of a JavaScript
281
+ class.
282
+
283
+ ```cpp
284
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(
285
+ const char* utf8name,
286
+ StaticMethodCallback method,
287
+ napi_property_attributes attributes = napi_default,
288
+ void* data = nullptr);
289
+ ```
290
+
291
+ - `[in] utf8name`: Null-terminated string that represents the name of a static
292
+ method for the class.
293
+ - `[in] method`: The native function that represents a static method of a
294
+ JavaScript class.
295
+ - `[in] attributes`: The attributes associated with a particular property.
296
+ One or more of `napi_property_attributes`.
297
+ - `[in] data`: User-provided data passed into method when it is invoked.
298
+
299
+ Returns `Napi::PropertyDescriptor` object that represents a static method of a
300
+ JavaScript class.
301
+
302
+ ### StaticMethod
303
+
304
+ Creates property descriptor that represents a static method of a JavaScript
305
+ class.
306
+
307
+ ```cpp
308
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(Symbol name,
309
+ StaticVoidMethodCallback method,
310
+ napi_property_attributes attributes = napi_default,
311
+ void* data = nullptr);
312
+ ```
313
+
314
+ - `[in] name`: Napi::Symbol that represents the name of a static
315
+ method for the class.
316
+ - `[in] method`: The native function that represents a static method of a
317
+ JavaScript class.
318
+ - `[in] attributes`: The attributes associated with a particular property.
319
+ One or more of `napi_property_attributes`.
320
+ - `[in] data`: User-provided data passed into method when it is invoked.
321
+
322
+ Returns `Napi::PropertyDescriptor` object that represents the static method of a
323
+ JavaScript class.
324
+
325
+ ### StaticMethod
326
+
327
+ Creates property descriptor that represents a static method of a JavaScript
328
+ class.
329
+
330
+ ```cpp
331
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(Symbol name,
332
+ StaticMethodCallback method,
333
+ napi_property_attributes attributes = napi_default,
334
+ void* data = nullptr);
335
+ ```
336
+
337
+ method for the class.
338
+ - `[in] name`: Napi::Symbol that represents the name of a static.
339
+ - `[in] method`: The native function that represents a static method of a
340
+ JavaScript class.
341
+ - `[in] attributes`: The attributes associated with a particular property.
342
+ One or more of `napi_property_attributes`.
343
+ - `[in] data`: User-provided data passed into method when it is invoked.
344
+
345
+ Returns `Napi::PropertyDescriptor` object that represents a static method of a
346
+ JavaScript class.
347
+
348
+ ### StaticMethod
349
+
350
+ Creates property descriptor that represents a static method of a JavaScript
351
+ class.
352
+
353
+ ```cpp
354
+ template <StaticVoidMethodCallback method>
355
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(
356
+ const char* utf8name,
357
+ napi_property_attributes attributes = napi_default,
358
+ void* data = nullptr);
359
+ ```
360
+
361
+ - `[in] method`: The native function that represents a static method of a
362
+ JavaScript class. This function returns nothing.
363
+ - `[in] utf8name`: Null-terminated string that represents the name of a static
364
+ method for the class.
365
+ - `[in] attributes`: The attributes associated with a particular property.
366
+ One or more of `napi_property_attributes`.
367
+ - `[in] data`: User-provided data passed into method when it is invoked.
368
+
369
+ Returns `Napi::PropertyDescriptor` object that represents the static method of a
370
+ JavaScript class.
371
+
372
+ ### StaticMethod
373
+
374
+ Creates property descriptor that represents a static method of a JavaScript
375
+ class.
376
+
377
+ ```cpp
378
+ template <StaticMethodCallback method>
379
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(
380
+ const char* utf8name,
381
+ napi_property_attributes attributes = napi_default,
382
+ void* data = nullptr);
383
+ ```
384
+
385
+ - `[in] method`: The native function that represents a static method of a
386
+ JavaScript class.
387
+ - `[in] utf8name`: Null-terminated string that represents the name of a static
388
+ method for the class.
389
+ - `[in] attributes`: The attributes associated with a particular property.
390
+ One or more of `napi_property_attributes`.
391
+ - `[in] data`: User-provided data passed into method when it is invoked.
392
+
393
+ Returns `Napi::PropertyDescriptor` object that represents a static method of a
394
+ JavaScript class.
395
+
396
+ ### StaticMethod
397
+
398
+ Creates property descriptor that represents a static method of a JavaScript
399
+ class.
400
+
401
+ ```cpp
402
+ template <StaticVoidMethodCallback method>
403
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(Symbol name,
404
+ napi_property_attributes attributes = napi_default,
405
+ void* data = nullptr);
406
+ ```
407
+
408
+ - `[in] method`: The native function that represents a static method of a
409
+ JavaScript class.
410
+ - `[in] name`: Napi::Symbol that represents the name of a static
411
+ method for the class.
412
+ - `[in] attributes`: The attributes associated with a particular property.
413
+ One or more of `napi_property_attributes`.
414
+ - `[in] data`: User-provided data passed into method when it is invoked.
415
+
416
+ Returns `Napi::PropertyDescriptor` object that represents the static method of a
417
+ JavaScript class.
418
+
419
+ ### StaticMethod
420
+
421
+ Creates property descriptor that represents a static method of a JavaScript
422
+ class.
423
+
424
+ ```cpp
425
+ template <StaticMethodCallback method>
426
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticMethod(Symbol name,
427
+ napi_property_attributes attributes = napi_default,
428
+ void* data = nullptr);
429
+ ```
430
+
431
+ - `[in] method`: The native function that represents a static method of a
432
+ JavaScript class.
433
+ - `[in] name`: Napi::Symbol that represents the name of a static.
434
+ - `[in] attributes`: The attributes associated with a particular property.
435
+ One or more of `napi_property_attributes`.
436
+ - `[in] data`: User-provided data passed into method when it is invoked.
437
+
438
+ Returns `Napi::PropertyDescriptor` object that represents a static method of a
439
+ JavaScript class.
440
+
441
+ ### StaticAccessor
442
+
443
+ Creates property descriptor that represents a static accessor property of a
444
+ JavaScript class.
445
+
446
+ ```cpp
447
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticAccessor(
448
+ const char* utf8name,
449
+ StaticGetterCallback getter,
450
+ StaticSetterCallback setter,
451
+ napi_property_attributes attributes = napi_default,
452
+ void* data = nullptr);
453
+ ```
454
+
455
+ - `[in] utf8name`: Null-terminated string that represents the name of a static
456
+ accessor property for the class.
457
+ - `[in] getter`: The native function to call when a get access to the property
458
+ of a JavaScript class is performed.
459
+ - `[in] setter`: The native function to call when a set access to the property
460
+ of a JavaScript class is performed.
461
+ - `[in] attributes`: The attributes associated with a particular property.
462
+ One or more of `napi_property_attributes`.
463
+ - `[in] data`: User-provided data passed into getter or setter when
464
+ is invoked.
465
+
466
+ Returns `Napi::PropertyDescriptor` object that represents a static accessor
467
+ property of a JavaScript class.
468
+
469
+ ### StaticAccessor
470
+
471
+ Creates property descriptor that represents a static accessor property of a
472
+ JavaScript class.
473
+
474
+ ```cpp
475
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticAccessor(Symbol name,
476
+ StaticGetterCallback getter,
477
+ StaticSetterCallback setter,
478
+ napi_property_attributes attributes = napi_default,
479
+ void* data = nullptr);
480
+ ```
481
+
482
+ - `[in] name`: Napi::Symbol that represents the name of a static accessor.
483
+ - `[in] getter`: The native function to call when a get access to the property
484
+ of a JavaScript class is performed.
485
+ - `[in] setter`: The native function to call when a set access to the property
486
+ of a JavaScript class is performed.
487
+ - `[in] attributes`: The attributes associated with a particular property.
488
+ One or more of `napi_property_attributes`.
489
+ - `[in] data`: User-provided data passed into getter or setter when
490
+ is invoked.
491
+
492
+ Returns `Napi::PropertyDescriptor` object that represents a static accessor
493
+ property of a JavaScript class.
494
+
495
+ ### StaticAccessor
496
+
497
+ Creates property descriptor that represents a static accessor property of a
498
+ JavaScript class.
499
+
500
+ ```cpp
501
+ template <StaticGetterCallback getter, StaticSetterCallback setter=nullptr>
502
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticAccessor(
503
+ const char* utf8name,
504
+ napi_property_attributes attributes = napi_default,
505
+ void* data = nullptr);
506
+ ```
507
+
508
+ - `[in] getter`: The native function to call when a get access to the property
509
+ of a JavaScript class is performed.
510
+ - `[in] setter`: The native function to call when a set access to the property
511
+ of a JavaScript class is performed.
512
+ - `[in] utf8name`: Null-terminated string that represents the name of a static
513
+ accessor property for the class.
514
+ - `[in] attributes`: The attributes associated with a particular property.
515
+ One or more of `napi_property_attributes`.
516
+ - `[in] data`: User-provided data passed into getter or setter when
517
+ is invoked.
518
+
519
+ Returns `Napi::PropertyDescriptor` object that represents a static accessor
520
+ property of a JavaScript class.
521
+
522
+ ### StaticAccessor
523
+
524
+ Creates property descriptor that represents a static accessor property of a
525
+ JavaScript class.
526
+
527
+ ```cpp
528
+ template <StaticGetterCallback getter, StaticSetterCallback setter=nullptr>
529
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticAccessor(Symbol name,
530
+ napi_property_attributes attributes = napi_default,
531
+ void* data = nullptr);
532
+ ```
533
+
534
+ - `[in] getter`: The native function to call when a get access to the property
535
+ of a JavaScript class is performed.
536
+ - `[in] setter`: The native function to call when a set access to the property
537
+ of a JavaScript class is performed.
538
+ - `[in] name`: Napi::Symbol that represents the name of a static accessor.
539
+ - `[in] attributes`: The attributes associated with a particular property.
540
+ One or more of `napi_property_attributes`.
541
+ - `[in] data`: User-provided data passed into getter or setter when
542
+ is invoked.
543
+
544
+ Returns `Napi::PropertyDescriptor` object that represents a static accessor
545
+ property of a JavaScript class.
546
+
547
+ ### StaticValue
548
+
549
+ Creates property descriptor that represents an static value property of a
550
+ JavaScript class.
551
+ ```cpp
552
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticValue(
553
+ const char* utf8name,
554
+ Napi::Value value,
555
+ napi_property_attributes attributes = napi_default);
556
+ ```
557
+
558
+ - `[in] utf8name`: Null-terminated string that represents the name of the static
559
+ property.
560
+ - `[in] value`: The value that's retrieved by a get access of the property.
561
+ - `[in] attributes`: The attributes to be associated with the property in
562
+ addition to the napi_static attribute. One or more of
563
+ `napi_property_attributes`.
564
+
565
+ Returns `Napi::PropertyDescriptor` object that represents an static value
566
+ property of a JavaScript class
567
+
568
+ ### StaticValue
569
+
570
+ Creates property descriptor that represents an static value property of a
571
+ JavaScript class.
572
+ ```cpp
573
+ static Napi::PropertyDescriptor Napi::ObjectWrap::StaticValue(Symbol name,
574
+ Napi::Value value,
575
+ napi_property_attributes attributes = napi_default);
576
+ ```
577
+
578
+ - `[in] name`: The `Napi::Symbol` object whose value is used to identify the
579
+ name of the static property.
580
+ - `[in] value`: The value that's retrieved by a get access of the property.
581
+ - `[in] attributes`: The attributes to be associated with the property in
582
+ addition to the napi_static attribute. One or more of
583
+ `napi_property_attributes`.
584
+
585
+ Returns `Napi::PropertyDescriptor` object that represents an static value
586
+ property of a JavaScript class
587
+
588
+ [`Napi::InstanceWrap<T>`]: ./instance_wrap.md
@@ -0,0 +1,16 @@
1
+ # Prebuild tools
2
+
3
+ The distribution of a native add-on is just as important as its implementation.
4
+ In order to install a native add-on it's important to have all the necessary
5
+ dependencies installed and well configured (see the [setup](setup.md) section).
6
+ The end-user will need to compile the add-on when they will do an `npm install`
7
+ and in some cases this could create problems. To avoid the compilation process it's
8
+ possible to distribute the native add-on in pre-built form for different platform
9
+ and architectures. The prebuild tools help to create and distribute the pre-built
10
+ form of a native add-on.
11
+
12
+ The following list report known tools that are compatible with **Node-API**:
13
+
14
+ - **[node-pre-gyp](https://www.npmjs.com/package/node-pre-gyp)**
15
+ - **[prebuild](https://www.npmjs.com/package/prebuild)**
16
+ - **[prebuildify](https://www.npmjs.com/package/prebuildify)**
@@ -0,0 +1,79 @@
1
+ # Promise
2
+
3
+ Class `Napi::Promise` inherits from class [`Napi::Object`][].
4
+
5
+ The `Napi::Promise` class, along with its `Napi::Promise::Deferred` class, implement the ability to create, resolve, and reject Promise objects.
6
+
7
+ The basic approach is to create a `Napi::Promise::Deferred` object and return to your caller the value returned by the `Napi::Promise::Deferred::Promise` method. For example:
8
+
9
+ ```cpp
10
+ Napi::Value YourFunction(const Napi::CallbackInfo& info) {
11
+ // your code goes here...
12
+ Napi::Promise::Deferred deferred = Napi::Promise::Deferred::New(info.Env());
13
+ // deferred needs to survive this call...
14
+ return deferred.Promise();
15
+ }
16
+ ```
17
+
18
+ Later, when the asynchronous process completes, call either the `Resolve` or `Reject` method on the `Napi::Promise::Deferred` object created earlier:
19
+
20
+ ```cpp
21
+ deferred.Resolve(String::New(info.Env(), "OK"));
22
+ ```
23
+
24
+ ## Promise::Deferred Methods
25
+
26
+ ### Factory Method
27
+
28
+ ```cpp
29
+ static Napi::Promise::Deferred Napi::Promise::Deferred::New(napi_env env);
30
+ ```
31
+
32
+ * `[in] env`: The `napi_env` environment in which to create the `Napi::Promise::Deferred` object.
33
+
34
+ ### Constructor
35
+
36
+ ```cpp
37
+ Napi::Promise::Deferred(napi_env env);
38
+ ```
39
+
40
+ * `[in] env`: The `napi_env` environment in which to construct the `Napi::Promise::Deferred` object.
41
+
42
+ ### Env
43
+
44
+ ```cpp
45
+ Napi::Env Napi::Promise::Deferred::Env() const;
46
+ ```
47
+
48
+ Returns the Env environment this `Napi::Promise::Deferred` object is associated with.
49
+
50
+ ### Promise
51
+
52
+ ```cpp
53
+ Napi::Promise Napi::Promise::Deferred::Promise() const;
54
+ ```
55
+
56
+ Returns the `Napi::Promise` object held by the `Napi::Promise::Deferred` object.
57
+
58
+ ### Resolve
59
+
60
+ ```cpp
61
+ void Napi::Promise::Deferred::Resolve(napi_value value) const;
62
+ ```
63
+
64
+ Resolves the `Napi::Promise` object held by the `Napi::Promise::Deferred` object.
65
+
66
+ * `[in] value`: The Node-API primitive value with which to resolve the `Napi::Promise`.
67
+
68
+ ### Reject
69
+
70
+ ```cpp
71
+ void Napi::Promise::Deferred::Reject(napi_value value) const;
72
+ ```
73
+
74
+ Rejects the Promise object held by the `Napi::Promise::Deferred` object.
75
+
76
+ * `[in] value`: The Node-API primitive value with which to reject the `Napi::Promise`.
77
+
78
+
79
+ [`Napi::Object`]: ./object.md