koffi 1.1.0-beta.0 → 1.1.0-beta.3

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 (270) hide show
  1. package/CMakeLists.txt +4 -0
  2. package/README.md +16 -11
  3. package/build/qemu/1.1.0-beta.3/koffi_darwin_x64.tar.gz +0 -0
  4. package/build/qemu/1.1.0-beta.3/koffi_freebsd_arm64.tar.gz +0 -0
  5. package/build/qemu/1.1.0-beta.3/koffi_freebsd_ia32.tar.gz +0 -0
  6. package/build/qemu/1.1.0-beta.3/koffi_freebsd_x64.tar.gz +0 -0
  7. package/build/qemu/1.1.0-beta.3/koffi_linux_arm.tar.gz +0 -0
  8. package/build/qemu/1.1.0-beta.3/koffi_linux_arm64.tar.gz +0 -0
  9. package/build/qemu/1.1.0-beta.3/koffi_linux_ia32.tar.gz +0 -0
  10. package/build/qemu/1.1.0-beta.3/koffi_linux_x64.tar.gz +0 -0
  11. package/build/qemu/1.1.0-beta.3/koffi_win32_ia32.tar.gz +0 -0
  12. package/build/qemu/1.1.0-beta.3/koffi_win32_x64.tar.gz +0 -0
  13. package/package.json +1 -1
  14. package/qemu/qemu.js +1 -0
  15. package/src/abi_arm32.cc +27 -45
  16. package/src/abi_arm64.cc +58 -132
  17. package/src/abi_x64_sysv.cc +24 -7
  18. package/src/abi_x64_win.cc +3 -0
  19. package/src/abi_x86.cc +3 -0
  20. package/src/call.cc +540 -33
  21. package/src/call.hh +5 -3
  22. package/src/ffi.cc +69 -4
  23. package/src/ffi.hh +3 -1
  24. package/src/parser.cc +7 -2
  25. package/src/util.cc +72 -0
  26. package/src/util.hh +2 -0
  27. package/test/misc.c +14 -8
  28. package/vendor/node-addon-api/CODE_OF_CONDUCT.md +4 -0
  29. package/vendor/node-addon-api/CONTRIBUTING.md +93 -0
  30. package/vendor/node-addon-api/appveyor.yml +37 -0
  31. package/vendor/node-addon-api/benchmark/README.md +47 -0
  32. package/vendor/node-addon-api/benchmark/binding.gyp +25 -0
  33. package/vendor/node-addon-api/benchmark/function_args.cc +217 -0
  34. package/vendor/node-addon-api/benchmark/function_args.js +60 -0
  35. package/vendor/node-addon-api/benchmark/index.js +34 -0
  36. package/vendor/node-addon-api/benchmark/property_descriptor.cc +91 -0
  37. package/vendor/node-addon-api/benchmark/property_descriptor.js +37 -0
  38. package/vendor/node-addon-api/doc/addon.md +163 -0
  39. package/vendor/node-addon-api/doc/array.md +81 -0
  40. package/vendor/node-addon-api/doc/array_buffer.md +155 -0
  41. package/vendor/node-addon-api/doc/async_context.md +86 -0
  42. package/vendor/node-addon-api/doc/async_operations.md +31 -0
  43. package/vendor/node-addon-api/doc/async_worker.md +427 -0
  44. package/vendor/node-addon-api/doc/async_worker_variants.md +557 -0
  45. package/vendor/node-addon-api/doc/bigint.md +97 -0
  46. package/vendor/node-addon-api/doc/boolean.md +68 -0
  47. package/vendor/node-addon-api/doc/buffer.md +150 -0
  48. package/vendor/node-addon-api/doc/callback_scope.md +54 -0
  49. package/vendor/node-addon-api/doc/callbackinfo.md +97 -0
  50. package/vendor/node-addon-api/doc/checker-tool.md +32 -0
  51. package/vendor/node-addon-api/doc/class_property_descriptor.md +123 -0
  52. package/vendor/node-addon-api/doc/cmake-js.md +68 -0
  53. package/vendor/node-addon-api/doc/conversion-tool.md +28 -0
  54. package/vendor/node-addon-api/doc/creating_a_release.md +62 -0
  55. package/vendor/node-addon-api/doc/dataview.md +248 -0
  56. package/vendor/node-addon-api/doc/date.md +68 -0
  57. package/vendor/node-addon-api/doc/env.md +196 -0
  58. package/vendor/node-addon-api/doc/error.md +120 -0
  59. package/vendor/node-addon-api/doc/error_handling.md +254 -0
  60. package/vendor/node-addon-api/doc/escapable_handle_scope.md +80 -0
  61. package/vendor/node-addon-api/doc/external.md +63 -0
  62. package/vendor/node-addon-api/doc/function.md +402 -0
  63. package/vendor/node-addon-api/doc/function_reference.md +238 -0
  64. package/vendor/node-addon-api/doc/generator.md +13 -0
  65. package/vendor/node-addon-api/doc/handle_scope.md +63 -0
  66. package/vendor/node-addon-api/doc/hierarchy.md +91 -0
  67. package/vendor/node-addon-api/doc/instance_wrap.md +408 -0
  68. package/vendor/node-addon-api/doc/maybe.md +76 -0
  69. package/vendor/node-addon-api/doc/memory_management.md +27 -0
  70. package/vendor/node-addon-api/doc/name.md +29 -0
  71. package/vendor/node-addon-api/doc/node-gyp.md +82 -0
  72. package/vendor/node-addon-api/doc/number.md +163 -0
  73. package/vendor/node-addon-api/doc/object.md +411 -0
  74. package/vendor/node-addon-api/doc/object_lifetime_management.md +83 -0
  75. package/vendor/node-addon-api/doc/object_reference.md +117 -0
  76. package/vendor/node-addon-api/doc/object_wrap.md +588 -0
  77. package/vendor/node-addon-api/doc/prebuild_tools.md +16 -0
  78. package/vendor/node-addon-api/doc/promises.md +79 -0
  79. package/vendor/node-addon-api/doc/property_descriptor.md +286 -0
  80. package/vendor/node-addon-api/doc/propertylvalue.md +50 -0
  81. package/vendor/node-addon-api/doc/range_error.md +59 -0
  82. package/vendor/node-addon-api/doc/reference.md +113 -0
  83. package/vendor/node-addon-api/doc/setup.md +110 -0
  84. package/vendor/node-addon-api/doc/string.md +93 -0
  85. package/vendor/node-addon-api/doc/symbol.md +61 -0
  86. package/vendor/node-addon-api/doc/threadsafe.md +121 -0
  87. package/vendor/node-addon-api/doc/threadsafe_function.md +290 -0
  88. package/vendor/node-addon-api/doc/type_error.md +59 -0
  89. package/vendor/node-addon-api/doc/typed_array.md +78 -0
  90. package/vendor/node-addon-api/doc/typed_array_of.md +137 -0
  91. package/vendor/node-addon-api/doc/typed_threadsafe_function.md +306 -0
  92. package/vendor/node-addon-api/doc/value.md +340 -0
  93. package/vendor/node-addon-api/doc/version_management.md +43 -0
  94. package/vendor/node-addon-api/package.json +415 -0
  95. package/vendor/node-addon-api/test/README.md +91 -0
  96. package/vendor/node-addon-api/test/addon.cc +36 -0
  97. package/vendor/node-addon-api/test/addon.js +11 -0
  98. package/vendor/node-addon-api/test/addon_build/index.js +49 -0
  99. package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +17 -0
  100. package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +62 -0
  101. package/vendor/node-addon-api/test/addon_build/tpl/index.js +9 -0
  102. package/vendor/node-addon-api/test/addon_build/tpl/package.json +11 -0
  103. package/vendor/node-addon-api/test/addon_data.cc +99 -0
  104. package/vendor/node-addon-api/test/addon_data.js +46 -0
  105. package/vendor/node-addon-api/test/array_buffer.cc +243 -0
  106. package/vendor/node-addon-api/test/array_buffer.js +69 -0
  107. package/vendor/node-addon-api/test/async_context.cc +36 -0
  108. package/vendor/node-addon-api/test/async_context.js +122 -0
  109. package/vendor/node-addon-api/test/async_progress_queue_worker.cc +83 -0
  110. package/vendor/node-addon-api/test/async_progress_queue_worker.js +46 -0
  111. package/vendor/node-addon-api/test/async_progress_worker.cc +134 -0
  112. package/vendor/node-addon-api/test/async_progress_worker.js +61 -0
  113. package/vendor/node-addon-api/test/async_worker.cc +106 -0
  114. package/vendor/node-addon-api/test/async_worker.js +179 -0
  115. package/vendor/node-addon-api/test/async_worker_nocallback.js +13 -0
  116. package/vendor/node-addon-api/test/async_worker_persistent.cc +63 -0
  117. package/vendor/node-addon-api/test/async_worker_persistent.js +24 -0
  118. package/vendor/node-addon-api/test/basic_types/array.cc +40 -0
  119. package/vendor/node-addon-api/test/basic_types/array.js +35 -0
  120. package/vendor/node-addon-api/test/basic_types/boolean.cc +38 -0
  121. package/vendor/node-addon-api/test/basic_types/boolean.js +35 -0
  122. package/vendor/node-addon-api/test/basic_types/number.cc +99 -0
  123. package/vendor/node-addon-api/test/basic_types/number.js +114 -0
  124. package/vendor/node-addon-api/test/basic_types/value.cc +120 -0
  125. package/vendor/node-addon-api/test/basic_types/value.js +133 -0
  126. package/vendor/node-addon-api/test/bigint.cc +91 -0
  127. package/vendor/node-addon-api/test/bigint.js +53 -0
  128. package/vendor/node-addon-api/test/binding-swallowexcept.cc +12 -0
  129. package/vendor/node-addon-api/test/binding.cc +173 -0
  130. package/vendor/node-addon-api/test/binding.gyp +124 -0
  131. package/vendor/node-addon-api/test/buffer.cc +183 -0
  132. package/vendor/node-addon-api/test/buffer.js +69 -0
  133. package/vendor/node-addon-api/test/callbackscope.cc +22 -0
  134. package/vendor/node-addon-api/test/callbackscope.js +49 -0
  135. package/vendor/node-addon-api/test/common/index.js +114 -0
  136. package/vendor/node-addon-api/test/common/test_helper.h +71 -0
  137. package/vendor/node-addon-api/test/dataview/dataview.cc +48 -0
  138. package/vendor/node-addon-api/test/dataview/dataview.js +35 -0
  139. package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +115 -0
  140. package/vendor/node-addon-api/test/dataview/dataview_read_write.js +90 -0
  141. package/vendor/node-addon-api/test/date.cc +44 -0
  142. package/vendor/node-addon-api/test/date.js +18 -0
  143. package/vendor/node-addon-api/test/env_cleanup.cc +88 -0
  144. package/vendor/node-addon-api/test/env_cleanup.js +56 -0
  145. package/vendor/node-addon-api/test/error.cc +287 -0
  146. package/vendor/node-addon-api/test/error.js +81 -0
  147. package/vendor/node-addon-api/test/error_handling_for_primitives.cc +13 -0
  148. package/vendor/node-addon-api/test/error_handling_for_primitives.js +29 -0
  149. package/vendor/node-addon-api/test/error_terminating_environment.js +95 -0
  150. package/vendor/node-addon-api/test/external.cc +81 -0
  151. package/vendor/node-addon-api/test/external.js +88 -0
  152. package/vendor/node-addon-api/test/function.cc +324 -0
  153. package/vendor/node-addon-api/test/function.js +133 -0
  154. package/vendor/node-addon-api/test/function_reference.cc +202 -0
  155. package/vendor/node-addon-api/test/function_reference.js +157 -0
  156. package/vendor/node-addon-api/test/globalObject/global_object.cc +61 -0
  157. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +31 -0
  158. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +61 -0
  159. package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +40 -0
  160. package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +57 -0
  161. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +28 -0
  162. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +48 -0
  163. package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +31 -0
  164. package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +58 -0
  165. package/vendor/node-addon-api/test/handlescope.cc +60 -0
  166. package/vendor/node-addon-api/test/handlescope.js +14 -0
  167. package/vendor/node-addon-api/test/index.js +159 -0
  168. package/vendor/node-addon-api/test/maybe/check.cc +23 -0
  169. package/vendor/node-addon-api/test/maybe/index.js +38 -0
  170. package/vendor/node-addon-api/test/memory_management.cc +17 -0
  171. package/vendor/node-addon-api/test/memory_management.js +9 -0
  172. package/vendor/node-addon-api/test/movable_callbacks.cc +23 -0
  173. package/vendor/node-addon-api/test/movable_callbacks.js +21 -0
  174. package/vendor/node-addon-api/test/name.cc +108 -0
  175. package/vendor/node-addon-api/test/name.js +59 -0
  176. package/vendor/node-addon-api/test/napi_child.js +14 -0
  177. package/vendor/node-addon-api/test/object/delete_property.cc +38 -0
  178. package/vendor/node-addon-api/test/object/delete_property.js +41 -0
  179. package/vendor/node-addon-api/test/object/finalizer.cc +29 -0
  180. package/vendor/node-addon-api/test/object/finalizer.js +28 -0
  181. package/vendor/node-addon-api/test/object/get_property.cc +34 -0
  182. package/vendor/node-addon-api/test/object/get_property.js +40 -0
  183. package/vendor/node-addon-api/test/object/has_own_property.cc +34 -0
  184. package/vendor/node-addon-api/test/object/has_own_property.js +34 -0
  185. package/vendor/node-addon-api/test/object/has_property.cc +38 -0
  186. package/vendor/node-addon-api/test/object/has_property.js +37 -0
  187. package/vendor/node-addon-api/test/object/object.cc +350 -0
  188. package/vendor/node-addon-api/test/object/object.js +217 -0
  189. package/vendor/node-addon-api/test/object/object_deprecated.cc +66 -0
  190. package/vendor/node-addon-api/test/object/object_deprecated.js +47 -0
  191. package/vendor/node-addon-api/test/object/object_freeze_seal.cc +25 -0
  192. package/vendor/node-addon-api/test/object/object_freeze_seal.js +61 -0
  193. package/vendor/node-addon-api/test/object/set_property.cc +45 -0
  194. package/vendor/node-addon-api/test/object/set_property.js +30 -0
  195. package/vendor/node-addon-api/test/object/subscript_operator.cc +58 -0
  196. package/vendor/node-addon-api/test/object/subscript_operator.js +17 -0
  197. package/vendor/node-addon-api/test/object_reference.cc +219 -0
  198. package/vendor/node-addon-api/test/object_reference.js +259 -0
  199. package/vendor/node-addon-api/test/objectwrap.cc +268 -0
  200. package/vendor/node-addon-api/test/objectwrap.js +284 -0
  201. package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +26 -0
  202. package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +18 -0
  203. package/vendor/node-addon-api/test/objectwrap_function.cc +45 -0
  204. package/vendor/node-addon-api/test/objectwrap_function.js +22 -0
  205. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +30 -0
  206. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +13 -0
  207. package/vendor/node-addon-api/test/objectwrap_removewrap.cc +45 -0
  208. package/vendor/node-addon-api/test/objectwrap_removewrap.js +40 -0
  209. package/vendor/node-addon-api/test/objectwrap_worker_thread.js +19 -0
  210. package/vendor/node-addon-api/test/promise.cc +29 -0
  211. package/vendor/node-addon-api/test/promise.js +18 -0
  212. package/vendor/node-addon-api/test/reference.cc +24 -0
  213. package/vendor/node-addon-api/test/reference.js +14 -0
  214. package/vendor/node-addon-api/test/run_script.cc +56 -0
  215. package/vendor/node-addon-api/test/run_script.js +45 -0
  216. package/vendor/node-addon-api/test/symbol.cc +79 -0
  217. package/vendor/node-addon-api/test/symbol.js +73 -0
  218. package/vendor/node-addon-api/test/testUtil.js +54 -0
  219. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +195 -0
  220. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +188 -0
  221. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +63 -0
  222. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +12 -0
  223. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +115 -0
  224. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +14 -0
  225. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +26 -0
  226. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +7 -0
  227. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +225 -0
  228. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +59 -0
  229. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +42 -0
  230. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +53 -0
  231. package/vendor/node-addon-api/test/thunking_manual.cc +140 -0
  232. package/vendor/node-addon-api/test/thunking_manual.js +17 -0
  233. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +215 -0
  234. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +188 -0
  235. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +68 -0
  236. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +12 -0
  237. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +127 -0
  238. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +14 -0
  239. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +28 -0
  240. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +7 -0
  241. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +237 -0
  242. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +59 -0
  243. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +53 -0
  244. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +53 -0
  245. package/vendor/node-addon-api/test/typedarray-bigint.js +58 -0
  246. package/vendor/node-addon-api/test/typedarray.cc +216 -0
  247. package/vendor/node-addon-api/test/typedarray.js +69 -0
  248. package/vendor/node-addon-api/test/version_management.cc +27 -0
  249. package/vendor/node-addon-api/test/version_management.js +31 -0
  250. package/vendor/node-addon-api/unit-test/README.md +28 -0
  251. package/vendor/node-addon-api/unit-test/binding-file-template.js +39 -0
  252. package/vendor/node-addon-api/unit-test/binding.gyp +72 -0
  253. package/vendor/node-addon-api/unit-test/exceptions.js +32 -0
  254. package/vendor/node-addon-api/unit-test/generate-binding-cc.js +61 -0
  255. package/vendor/node-addon-api/unit-test/injectTestParams.js +101 -0
  256. package/vendor/node-addon-api/unit-test/listOfTestModules.js +88 -0
  257. package/vendor/node-addon-api/unit-test/matchModules.js +65 -0
  258. package/vendor/node-addon-api/unit-test/setup.js +13 -0
  259. package/vendor/node-addon-api/unit-test/spawnTask.js +26 -0
  260. package/vendor/node-addon-api/unit-test/test.js +30 -0
  261. package/build/qemu/1.1.0-beta.0/koffi_darwin_x64.tar.gz +0 -0
  262. package/build/qemu/1.1.0-beta.0/koffi_freebsd_arm64.tar.gz +0 -0
  263. package/build/qemu/1.1.0-beta.0/koffi_freebsd_ia32.tar.gz +0 -0
  264. package/build/qemu/1.1.0-beta.0/koffi_freebsd_x64.tar.gz +0 -0
  265. package/build/qemu/1.1.0-beta.0/koffi_linux_arm.tar.gz +0 -0
  266. package/build/qemu/1.1.0-beta.0/koffi_linux_arm64.tar.gz +0 -0
  267. package/build/qemu/1.1.0-beta.0/koffi_linux_ia32.tar.gz +0 -0
  268. package/build/qemu/1.1.0-beta.0/koffi_linux_x64.tar.gz +0 -0
  269. package/build/qemu/1.1.0-beta.0/koffi_win32_ia32.tar.gz +0 -0
  270. package/build/qemu/1.1.0-beta.0/koffi_win32_x64.tar.gz +0 -0
@@ -0,0 +1,248 @@
1
+ # DataView
2
+
3
+ Class `Napi::DataView` inherits from class [`Napi::Object`][].
4
+
5
+ The `Napi::DataView` class corresponds to the
6
+ [JavaScript `DataView`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView)
7
+ class.
8
+
9
+ ## Methods
10
+
11
+ ### New
12
+
13
+ Allocates a new `Napi::DataView` instance with a given `Napi::ArrayBuffer`.
14
+
15
+ ```cpp
16
+ static Napi::DataView Napi::DataView::New(napi_env env, Napi::ArrayBuffer arrayBuffer);
17
+ ```
18
+
19
+ - `[in] env`: The environment in which to create the `Napi::DataView` instance.
20
+ - `[in] arrayBuffer` : `Napi::ArrayBuffer` underlying the `Napi::DataView`.
21
+
22
+ Returns a new `Napi::DataView` instance.
23
+
24
+ ### New
25
+
26
+ Allocates a new `Napi::DataView` instance with a given `Napi::ArrayBuffer`.
27
+
28
+ ```cpp
29
+ static Napi::DataView Napi::DataView::New(napi_env env, Napi::ArrayBuffer arrayBuffer, size_t byteOffset);
30
+ ```
31
+
32
+ - `[in] env`: The environment in which to create the `Napi::DataView` instance.
33
+ - `[in] arrayBuffer` : `Napi::ArrayBuffer` underlying the `Napi::DataView`.
34
+ - `[in] byteOffset` : The byte offset within the `Napi::ArrayBuffer` from which to start projecting the `Napi::DataView`.
35
+
36
+ Returns a new `Napi::DataView` instance.
37
+
38
+ ### New
39
+
40
+ Allocates a new `Napi::DataView` instance with a given `Napi::ArrayBuffer`.
41
+
42
+ ```cpp
43
+ static Napi::DataView Napi::DataView::New(napi_env env, Napi::ArrayBuffer arrayBuffer, size_t byteOffset, size_t byteLength);
44
+ ```
45
+
46
+ - `[in] env`: The environment in which to create the `Napi::DataView` instance.
47
+ - `[in] arrayBuffer` : `Napi::ArrayBuffer` underlying the `Napi::DataView`.
48
+ - `[in] byteOffset` : The byte offset within the `Napi::ArrayBuffer` from which to start projecting the `Napi::DataView`.
49
+ - `[in] byteLength` : Number of elements in the `Napi::DataView`.
50
+
51
+ Returns a new `Napi::DataView` instance.
52
+
53
+ ### Constructor
54
+
55
+ Initializes an empty instance of the `Napi::DataView` class.
56
+
57
+ ```cpp
58
+ Napi::DataView();
59
+ ```
60
+
61
+ ### Constructor
62
+
63
+ Initializes a wrapper instance of an existing `Napi::DataView` instance.
64
+
65
+ ```cpp
66
+ Napi::DataView(napi_env env, napi_value value);
67
+ ```
68
+
69
+ - `[in] env`: The environment in which to create the `Napi::DataView` instance.
70
+ - `[in] value`: The `Napi::DataView` reference to wrap.
71
+
72
+ ### ArrayBuffer
73
+
74
+ ```cpp
75
+ Napi::ArrayBuffer Napi::DataView::ArrayBuffer() const;
76
+ ```
77
+
78
+ Returns the backing array buffer.
79
+
80
+ ### ByteOffset
81
+
82
+ ```cpp
83
+ size_t Napi::DataView::ByteOffset() const;
84
+ ```
85
+
86
+ Returns the offset into the `Napi::DataView` where the array starts, in bytes.
87
+
88
+ ### ByteLength
89
+
90
+ ```cpp
91
+ size_t Napi::DataView::ByteLength() const;
92
+ ```
93
+
94
+ Returns the length of the array, in bytes.
95
+
96
+ ### GetFloat32
97
+
98
+ ```cpp
99
+ float Napi::DataView::GetFloat32(size_t byteOffset) const;
100
+ ```
101
+
102
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
103
+
104
+ Returns a signed 32-bit float (float) at the specified byte offset from the start of the `Napi::DataView`.
105
+
106
+ ### GetFloat64
107
+
108
+ ```cpp
109
+ double Napi::DataView::GetFloat64(size_t byteOffset) const;
110
+ ```
111
+
112
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
113
+
114
+ Returns a signed 64-bit float (double) at the specified byte offset from the start of the `Napi::DataView`.
115
+
116
+ ### GetInt8
117
+
118
+ ```cpp
119
+ int8_t Napi::DataView::GetInt8(size_t byteOffset) const;
120
+ ```
121
+
122
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
123
+
124
+ Returns a signed 8-bit integer (byte) at the specified byte offset from the start of the `Napi::DataView`.
125
+
126
+ ### GetInt16
127
+
128
+ ```cpp
129
+ int16_t Napi::DataView::GetInt16(size_t byteOffset) const;
130
+ ```
131
+
132
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
133
+
134
+ Returns a signed 16-bit integer (short) at the specified byte offset from the start of the `Napi::DataView`.
135
+
136
+ ### GetInt32
137
+
138
+ ```cpp
139
+ int32_t Napi::DataView::GetInt32(size_t byteOffset) const;
140
+ ```
141
+
142
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
143
+
144
+ Returns a signed 32-bit integer (long) at the specified byte offset from the start of the `Napi::DataView`.
145
+
146
+ ### GetUint8
147
+
148
+ ```cpp
149
+ uint8_t Napi::DataView::GetUint8(size_t byteOffset) const;
150
+ ```
151
+
152
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
153
+
154
+ Returns a unsigned 8-bit integer (unsigned byte) at the specified byte offset from the start of the `Napi::DataView`.
155
+
156
+ ### GetUint16
157
+
158
+ ```cpp
159
+ uint16_t Napi::DataView::GetUint16(size_t byteOffset) const;
160
+ ```
161
+
162
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
163
+
164
+ Returns a unsigned 16-bit integer (unsigned short) at the specified byte offset from the start of the `Napi::DataView`.
165
+
166
+ ### GetUint32
167
+
168
+ ```cpp
169
+ uint32_t Napi::DataView::GetUint32(size_t byteOffset) const;
170
+ ```
171
+
172
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
173
+
174
+ Returns a unsigned 32-bit integer (unsigned long) at the specified byte offset from the start of the `Napi::DataView`.
175
+
176
+ ### SetFloat32
177
+
178
+ ```cpp
179
+ void Napi::DataView::SetFloat32(size_t byteOffset, float value) const;
180
+ ```
181
+
182
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
183
+ - `[in] value`: The value to set.
184
+
185
+ ### SetFloat64
186
+
187
+ ```cpp
188
+ void Napi::DataView::SetFloat64(size_t byteOffset, double value) const;
189
+ ```
190
+
191
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
192
+ - `[in] value`: The value to set.
193
+
194
+ ### SetInt8
195
+
196
+ ```cpp
197
+ void Napi::DataView::SetInt8(size_t byteOffset, int8_t value) const;
198
+ ```
199
+
200
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
201
+ - `[in] value`: The value to set.
202
+
203
+ ### SetInt16
204
+
205
+ ```cpp
206
+ void Napi::DataView::SetInt16(size_t byteOffset, int16_t value) const;
207
+ ```
208
+
209
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
210
+ - `[in] value`: The value to set.
211
+
212
+ ### SetInt32
213
+
214
+ ```cpp
215
+ void Napi::DataView::SetInt32(size_t byteOffset, int32_t value) const;
216
+ ```
217
+
218
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
219
+ - `[in] value`: The value to set.
220
+
221
+ ### SetUint8
222
+
223
+ ```cpp
224
+ void Napi::DataView::SetUint8(size_t byteOffset, uint8_t value) const;
225
+ ```
226
+
227
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
228
+ - `[in] value`: The value to set.
229
+
230
+ ### SetUint16
231
+
232
+ ```cpp
233
+ void Napi::DataView::SetUint16(size_t byteOffset, uint16_t value) const;
234
+ ```
235
+
236
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
237
+ - `[in] value`: The value to set.
238
+
239
+ ### SetUint32
240
+
241
+ ```cpp
242
+ void Napi::DataView::SetUint32(size_t byteOffset, uint32_t value) const;
243
+ ```
244
+
245
+ - `[in] byteOffset`: The offset, in byte, from the start of the view where to read the data.
246
+ - `[in] value`: The value to set.
247
+
248
+ [`Napi::Object`]: ./object.md
@@ -0,0 +1,68 @@
1
+ # Date
2
+
3
+ `Napi::Date` class is a representation of the JavaScript `Date` object. The
4
+ `Napi::Date` class inherits its behavior from the `Napi::Value` class
5
+ (for more info see [`Napi::Value`](value.md)).
6
+
7
+ ## Methods
8
+
9
+ ### Constructor
10
+
11
+ Creates a new _empty_ instance of a `Napi::Date` object.
12
+
13
+ ```cpp
14
+ Napi::Date::Date();
15
+ ```
16
+
17
+ Creates a new _non-empty_ instance of a `Napi::Date` object.
18
+
19
+ ```cpp
20
+ Napi::Date::Date(napi_env env, napi_value value);
21
+ ```
22
+
23
+ - `[in] env`: The environment in which to construct the `Napi::Date` object.
24
+ - `[in] value`: The `napi_value` which is a handle for a JavaScript `Date`.
25
+
26
+ ### New
27
+
28
+ Creates a new instance of a `Napi::Date` object.
29
+
30
+ ```cpp
31
+ static Napi::Date Napi::Date::New(Napi::Env env, double value);
32
+ ```
33
+
34
+ - `[in] env`: The environment in which to construct the `Napi::Date` object.
35
+ - `[in] value`: The time value the JavaScript `Date` will contain represented
36
+ as the number of milliseconds since 1 January 1970 00:00:00 UTC.
37
+
38
+ Returns a new instance of `Napi::Date` object.
39
+
40
+ ### ValueOf
41
+
42
+ ```cpp
43
+ double Napi::Date::ValueOf() const;
44
+ ```
45
+
46
+ Returns the time value as `double` primitive represented as the number of
47
+ milliseconds since 1 January 1970 00:00:00 UTC.
48
+
49
+ ## Operators
50
+
51
+ ### operator double
52
+
53
+ Converts a `Napi::Date` value to a `double` primitive.
54
+
55
+ ```cpp
56
+ Napi::Date::operator double() const;
57
+ ```
58
+
59
+ ### Example
60
+
61
+ The following shows an example of casting a `Napi::Date` value to a `double`
62
+ primitive.
63
+
64
+ ```cpp
65
+ double operatorVal = Napi::Date::New(Env(), 0); // Napi::Date to double
66
+ // or
67
+ auto instanceVal = info[0].As<Napi::Date>().ValueOf();
68
+ ```
@@ -0,0 +1,196 @@
1
+ # Env
2
+
3
+ The opaque data structure containing the environment in which the request is being run.
4
+
5
+ The Env object is usually created and passed by the Node.js runtime or node-addon-api infrastructure.
6
+
7
+ ## Methods
8
+
9
+ ### Constructor
10
+
11
+ ```cpp
12
+ Napi::Env::Env(napi_env env);
13
+ ```
14
+
15
+ - `[in] env`: The `napi_env` environment from which to construct the `Napi::Env` object.
16
+
17
+ ### napi_env
18
+
19
+ ```cpp
20
+ operator napi_env() const;
21
+ ```
22
+
23
+ Returns the `napi_env` opaque data structure representing the environment.
24
+
25
+ ### Global
26
+
27
+ ```cpp
28
+ Napi::Object Napi::Env::Global() const;
29
+ ```
30
+
31
+ Returns the `Napi::Object` representing the environment's JavaScript Global Object.
32
+
33
+ ### Undefined
34
+
35
+ ```cpp
36
+ Napi::Value Napi::Env::Undefined() const;
37
+ ```
38
+
39
+ Returns the `Napi::Value` representing the environment's JavaScript Undefined Object.
40
+
41
+ ### Null
42
+
43
+ ```cpp
44
+ Napi::Value Napi::Env::Null() const;
45
+ ```
46
+
47
+ Returns the `Napi::Value` representing the environment's JavaScript Null Object.
48
+
49
+ ### IsExceptionPending
50
+
51
+ ```cpp
52
+ bool Napi::Env::IsExceptionPending() const;
53
+ ```
54
+
55
+ Returns a `bool` indicating if an exception is pending in the environment.
56
+
57
+ ### GetAndClearPendingException
58
+
59
+ ```cpp
60
+ Napi::Error Napi::Env::GetAndClearPendingException() const;
61
+ ```
62
+
63
+ Returns an `Napi::Error` object representing the environment's pending exception, if any.
64
+
65
+ ### RunScript
66
+
67
+ ```cpp
68
+ Napi::Value Napi::Env::RunScript(____ script) const;
69
+ ```
70
+ - `[in] script`: A string containing JavaScript code to execute.
71
+
72
+ Runs JavaScript code contained in a string and returns its result.
73
+
74
+ The `script` can be any of the following types:
75
+ - [`Napi::String`](string.md)
76
+ - `const char *`
77
+ - `const std::string &`
78
+
79
+ ### GetInstanceData
80
+ ```cpp
81
+ template <typename T> T* GetInstanceData() const;
82
+ ```
83
+
84
+ Returns the instance data that was previously associated with the environment,
85
+ or `nullptr` if none was associated.
86
+
87
+ ### SetInstanceData
88
+
89
+ ```cpp
90
+ template <typename T> using Finalizer = void (*)(Env, T*);
91
+ template <typename T, Finalizer<T> fini = Env::DefaultFini<T>>
92
+ void SetInstanceData(T* data) const;
93
+ ```
94
+
95
+ - `[template] fini`: A function to call when the instance data is to be deleted.
96
+ Accepts a function of the form `void CleanupData(Napi::Env env, T* data)`. If
97
+ not given, the default finalizer will be used, which simply uses the `delete`
98
+ operator to destroy `T*` when the addon instance is unloaded.
99
+ - `[in] data`: A pointer to data that will be associated with the instance of
100
+ the addon for the duration of its lifecycle.
101
+
102
+ Associates a data item stored at `T* data` with the current instance of the
103
+ addon. The item will be passed to the function `fini` which gets called when an
104
+ instance of the addon is unloaded.
105
+
106
+ ### SetInstanceData
107
+
108
+ ```cpp
109
+ template <typename DataType, typename HintType>
110
+ using FinalizerWithHint = void (*)(Env, DataType*, HintType*);
111
+ template <typename DataType,
112
+ typename HintType,
113
+ FinalizerWithHint<DataType, HintType> fini =
114
+ Env::DefaultFiniWithHint<DataType, HintType>>
115
+ void SetInstanceData(DataType* data, HintType* hint) const;
116
+ ```
117
+
118
+ - `[template] fini`: A function to call when the instance data is to be deleted.
119
+ Accepts a function of the form
120
+ `void CleanupData(Napi::Env env, DataType* data, HintType* hint)`. If not given,
121
+ the default finalizer will be used, which simply uses the `delete` operator to
122
+ destroy `T*` when the addon instance is unloaded.
123
+ - `[in] data`: A pointer to data that will be associated with the instance of
124
+ the addon for the duration of its lifecycle.
125
+ - `[in] hint`: A pointer to data that will be associated with the instance of
126
+ the addon for the duration of its lifecycle and will be passed as a hint to
127
+ `fini` when the addon instance is unloaded.
128
+
129
+ Associates a data item stored at `T* data` with the current instance of the
130
+ addon. The item will be passed to the function `fini` which gets called when an
131
+ instance of the addon is unloaded. This overload accepts an additional hint to
132
+ be passed to `fini`.
133
+
134
+ ### AddCleanupHook
135
+
136
+ ```cpp
137
+ template <typename Hook>
138
+ CleanupHook<Hook> AddCleanupHook(Hook hook);
139
+ ```
140
+
141
+ - `[in] hook`: A function to call when the environment exists. Accepts a
142
+ function of the form `void ()`.
143
+
144
+ Registers `hook` as a function to be run once the current Node.js environment
145
+ exits. Unlike the underlying C-based Node-API, providing the same `hook`
146
+ multiple times **is** allowed. The hooks will be called in reverse order, i.e.
147
+ the most recently added one will be called first.
148
+
149
+ Returns an `Env::CleanupHook` object, which can be used to remove the hook via
150
+ its `Remove()` method.
151
+
152
+ ### AddCleanupHook
153
+
154
+ ```cpp
155
+ template <typename Hook, typename Arg>
156
+ CleanupHook<Hook, Arg> AddCleanupHook(Hook hook, Arg* arg);
157
+ ```
158
+
159
+ - `[in] hook`: A function to call when the environment exists. Accepts a
160
+ function of the form `void (Arg* arg)`.
161
+ - `[in] arg`: A pointer to data that will be passed as the argument to `hook`.
162
+
163
+ Registers `hook` as a function to be run with the `arg` parameter once the
164
+ current Node.js environment exits. Unlike the underlying C-based Node-API,
165
+ providing the same `hook` and `arg` pair multiple times **is** allowed. The
166
+ hooks will be called in reverse order, i.e. the most recently added one will be
167
+ called first.
168
+
169
+ Returns an `Env::CleanupHook` object, which can be used to remove the hook via
170
+ its `Remove()` method.
171
+
172
+ # Env::CleanupHook
173
+
174
+ The `Env::CleanupHook` object allows removal of the hook added via
175
+ `Env::AddCleanupHook()`
176
+
177
+ ## Methods
178
+
179
+ ### IsEmpty
180
+
181
+ ```cpp
182
+ bool IsEmpty();
183
+ ```
184
+
185
+ Returns `true` if the cleanup hook was **not** successfully registered.
186
+
187
+ ### Remove
188
+
189
+ ```cpp
190
+ bool Remove(Env env);
191
+ ```
192
+
193
+ Unregisters the hook from running once the current Node.js environment exits.
194
+
195
+ Returns `true` if the hook was successfully removed from the Node.js
196
+ environment.
@@ -0,0 +1,120 @@
1
+ # Error
2
+
3
+ Class `Napi::Error` inherits from class [`Napi::ObjectReference`][] and class [`std::exception`][].
4
+
5
+ The `Napi::Error` class is a representation of the JavaScript `Error` object that is thrown
6
+ when runtime errors occur. The Error object can also be used as a base object for
7
+ user-defined exceptions.
8
+
9
+ The `Napi::Error` class is a persistent reference to a JavaScript error object thus
10
+ inherits its behavior from the `Napi::ObjectReference` class (for more info see: [`Napi::ObjectReference`](object_reference.md)).
11
+
12
+ If C++ exceptions are enabled (for more info see: [Setup](setup.md)), then the
13
+ `Napi::Error` class extends `std::exception` and enables integrated
14
+ error-handling for C++ exceptions and JavaScript exceptions.
15
+
16
+ For more details about error handling refer to the section titled [Error handling](error_handling.md).
17
+
18
+ ## Methods
19
+
20
+ ### New
21
+
22
+ Creates empty instance of an `Napi::Error` object for the specified environment.
23
+
24
+ ```cpp
25
+ Napi::Error::New(Napi::Env env);
26
+ ```
27
+
28
+ - `[in] env`: The environment in which to construct the `Napi::Error` object.
29
+
30
+ Returns an instance of `Napi::Error` object.
31
+
32
+ ### New
33
+
34
+ Creates instance of an `Napi::Error` object.
35
+
36
+ ```cpp
37
+ Napi::Error::New(Napi::Env env, const char* message);
38
+ ```
39
+
40
+ - `[in] env`: The environment in which to construct the `Napi::Error` object.
41
+ - `[in] message`: Null-terminated string to be used as the message for the `Napi::Error`.
42
+
43
+ Returns instance of an `Napi::Error` object.
44
+
45
+ ### New
46
+
47
+ Creates instance of an `Napi::Error` object
48
+
49
+ ```cpp
50
+ Napi::Error::New(Napi::Env env, const std::string& message);
51
+ ```
52
+
53
+ - `[in] env`: The environment in which to construct the `Napi::Error` object.
54
+ - `[in] message`: Reference string to be used as the message for the `Napi::Error`.
55
+
56
+ Returns instance of an `Napi::Error` object.
57
+
58
+ ### Fatal
59
+
60
+ In case of an unrecoverable error in a native module, a fatal error can be thrown
61
+ to immediately terminate the process.
62
+
63
+ ```cpp
64
+ static NAPI_NO_RETURN void Napi::Error::Fatal(const char* location, const char* message);
65
+ ```
66
+
67
+ The function call does not return, the process will be terminated.
68
+
69
+ ### Constructor
70
+
71
+ Creates empty instance of an `Napi::Error`.
72
+
73
+ ```cpp
74
+ Napi::Error::Error();
75
+ ```
76
+
77
+ Returns an instance of `Napi::Error` object.
78
+
79
+ ### Constructor
80
+
81
+ Initializes an `Napi::Error` instance from an existing JavaScript error object.
82
+
83
+ ```cpp
84
+ Napi::Error::Error(napi_env env, napi_value value);
85
+ ```
86
+
87
+ - `[in] env`: The environment in which to construct the error object.
88
+ - `[in] value`: The `Napi::Error` reference to wrap.
89
+
90
+ Returns instance of an `Napi::Error` object.
91
+
92
+ ### Message
93
+
94
+ ```cpp
95
+ std::string& Napi::Error::Message() const NAPI_NOEXCEPT;
96
+ ```
97
+
98
+ Returns the reference to the string that represent the message of the error.
99
+
100
+ ### ThrowAsJavaScriptException
101
+
102
+ Throw the error as JavaScript exception.
103
+
104
+ ```cpp
105
+ void Napi::Error::ThrowAsJavaScriptException() const;
106
+ ```
107
+
108
+ Throws the error as a JavaScript exception.
109
+
110
+ ### what
111
+
112
+ ```cpp
113
+ const char* Napi::Error::what() const NAPI_NOEXCEPT override;
114
+ ```
115
+
116
+ Returns a pointer to a null-terminated string that is used to identify the
117
+ exception. This method can be used only if the exception mechanism is enabled.
118
+
119
+ [`Napi::ObjectReference`]: ./object_reference.md
120
+ [`std::exception`]: https://cplusplus.com/reference/exception/exception/