koffi 2.16.0-beta.2 → 2.16.1

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 (425) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/build/koffi/darwin_arm64/koffi.node +0 -0
  3. package/build/koffi/darwin_x64/koffi.node +0 -0
  4. package/build/koffi/freebsd_arm64/koffi.node +0 -0
  5. package/build/koffi/freebsd_ia32/koffi.node +0 -0
  6. package/build/koffi/freebsd_x64/koffi.node +0 -0
  7. package/build/koffi/linux_arm64/koffi.node +0 -0
  8. package/build/koffi/linux_armhf/koffi.node +0 -0
  9. package/build/koffi/linux_ia32/koffi.node +0 -0
  10. package/build/koffi/linux_loong64/koffi.node +0 -0
  11. package/build/koffi/linux_riscv64d/koffi.node +0 -0
  12. package/build/koffi/linux_x64/koffi.node +0 -0
  13. package/build/koffi/musl_arm64/koffi.node +0 -0
  14. package/build/koffi/musl_x64/koffi.node +0 -0
  15. package/build/koffi/openbsd_ia32/koffi.node +0 -0
  16. package/build/koffi/openbsd_x64/koffi.node +0 -0
  17. package/build/koffi/win32_arm64/koffi.exp +0 -0
  18. package/build/koffi/win32_arm64/koffi.lib +0 -0
  19. package/build/koffi/win32_arm64/koffi.node +0 -0
  20. package/build/koffi/win32_ia32/koffi.exp +0 -0
  21. package/build/koffi/win32_ia32/koffi.lib +0 -0
  22. package/build/koffi/win32_ia32/koffi.node +0 -0
  23. package/build/koffi/win32_x64/koffi.exp +0 -0
  24. package/build/koffi/win32_x64/koffi.lib +0 -0
  25. package/build/koffi/win32_x64/koffi.node +0 -0
  26. package/index.d.ts +9 -11
  27. package/index.js +6 -9
  28. package/indirect.js +6 -9
  29. package/lib/native/base/base.cc +1 -6
  30. package/package.json +3 -3
  31. package/src/cnoke/assets/FindCNoke.cmake +27 -16
  32. package/src/cnoke/assets/toolchains.json +126 -0
  33. package/src/cnoke/cnoke.js +27 -33
  34. package/src/cnoke/src/builder.js +124 -63
  35. package/src/cnoke/src/tools.js +1 -5
  36. package/src/koffi/CMakeLists.txt +32 -21
  37. package/src/koffi/src/{abi/arm32.cc → abi_arm32.cc} +235 -246
  38. package/src/koffi/src/{abi/arm32_asm.S → abi_arm32_asm.S} +19 -15
  39. package/src/koffi/src/{abi/arm64.cc → abi_arm64.cc} +253 -300
  40. package/src/koffi/src/{abi/arm64_asm.S → abi_arm64_asm.S} +16 -10
  41. package/src/koffi/src/{abi/arm64_asm.asm → abi_arm64_asm.asm} +17 -10
  42. package/src/koffi/src/{abi/loong64_asm.S → abi_loong64_asm.S} +16 -10
  43. package/src/koffi/src/{abi/riscv64.cc → abi_riscv64.cc} +233 -244
  44. package/src/koffi/src/{abi/riscv64_asm.S → abi_riscv64_asm.S} +16 -10
  45. package/src/koffi/src/{abi/x64_sysv.cc → abi_x64_sysv.cc} +208 -220
  46. package/src/koffi/src/{abi/x64_sysv_asm.S → abi_x64_sysv_asm.S} +17 -10
  47. package/src/koffi/src/{abi/x64_win.cc → abi_x64_win.cc} +175 -230
  48. package/src/koffi/src/{abi/x64_win_asm.S → abi_x64_win_asm.S} +49 -27
  49. package/src/koffi/src/{abi/x64_win_asm.asm → abi_x64_win_asm.asm} +54 -27
  50. package/src/koffi/src/{abi/x86.cc → abi_x86.cc} +187 -252
  51. package/src/koffi/src/{abi/x86_asm.S → abi_x86_asm.S} +38 -21
  52. package/src/koffi/src/{abi/x86_asm.asm → abi_x86_asm.asm} +33 -16
  53. package/src/koffi/src/call.cc +475 -290
  54. package/src/koffi/src/call.hh +15 -18
  55. package/src/koffi/src/ffi.cc +195 -184
  56. package/src/koffi/src/ffi.hh +60 -16
  57. package/src/koffi/src/init.js +1 -0
  58. package/src/koffi/src/util.cc +113 -159
  59. package/src/koffi/src/util.hh +23 -74
  60. package/src/koffi/src/win32.cc +13 -0
  61. package/src/koffi/src/win32.hh +7 -0
  62. package/src/koffi/tools/write_trampolines.js +77 -0
  63. package/doc/README.md +0 -27
  64. package/doc/assets.ini +0 -24
  65. package/doc/build.sh +0 -9
  66. package/doc/develop.sh +0 -15
  67. package/doc/pages/404.md +0 -17
  68. package/doc/pages.ini +0 -86
  69. package/doc/static/highlight.js +0 -8
  70. package/doc/static/koffi.css +0 -11
  71. package/doc/static/koffi.png +0 -0
  72. package/doc/static/logo.webp +0 -0
  73. package/doc/static/perf_linux.png +0 -0
  74. package/doc/static/perf_windows.png +0 -0
  75. package/doc/static/print.css +0 -10
  76. package/doc/templates/code.html +0 -48
  77. package/doc/templates/page.html +0 -47
  78. package/src/koffi/cmake/raylib.cmake +0 -85
  79. package/src/koffi/cmake/sqlite3.cmake +0 -9
  80. package/src/koffi/examples/electron-builder/README.md +0 -11
  81. package/src/koffi/examples/electron-builder/package.json +0 -21
  82. package/src/koffi/examples/electron-builder/src/app.js +0 -20
  83. package/src/koffi/examples/electron-builder/src/index.html +0 -143
  84. package/src/koffi/examples/electron-builder/src/preload.js +0 -5
  85. package/src/koffi/examples/electron-forge/README.md +0 -25
  86. package/src/koffi/examples/electron-forge/forge.config.js +0 -63
  87. package/src/koffi/examples/electron-forge/package.json +0 -39
  88. package/src/koffi/examples/electron-forge/src/index.css +0 -7
  89. package/src/koffi/examples/electron-forge/src/index.html +0 -143
  90. package/src/koffi/examples/electron-forge/src/main.js +0 -52
  91. package/src/koffi/examples/electron-forge/src/preload.js +0 -5
  92. package/src/koffi/examples/electron-forge/src/renderer.js +0 -31
  93. package/src/koffi/examples/electron-forge/webpack.main.config.js +0 -11
  94. package/src/koffi/examples/electron-forge/webpack.renderer.config.js +0 -13
  95. package/src/koffi/examples/electron-forge/webpack.rules.js +0 -35
  96. package/src/koffi/examples/node-esbuild/README.md +0 -19
  97. package/src/koffi/examples/node-esbuild/index.js +0 -2
  98. package/src/koffi/examples/node-esbuild/package.json +0 -16
  99. package/src/koffi/examples/nwjs/README.md +0 -20
  100. package/src/koffi/examples/nwjs/package.json +0 -11
  101. package/src/koffi/examples/nwjs/src/index.html +0 -145
  102. package/src/koffi/examples/nwjs/src/package.json +0 -10
  103. package/src/koffi/examples/yao-pkg/README.md +0 -17
  104. package/src/koffi/examples/yao-pkg/index.js +0 -2
  105. package/src/koffi/examples/yao-pkg/package.json +0 -22
  106. package/src/koffi/src/primitives.inc +0 -39
  107. package/src/koffi/src/trampolines/armasm.inc +0 -32771
  108. package/src/koffi/src/trampolines/gnu.inc +0 -24577
  109. package/src/koffi/src/trampolines/masm32.inc +0 -32769
  110. package/src/koffi/src/trampolines/masm64.inc +0 -32769
  111. package/src/koffi/src/trampolines/prototypes.inc +0 -16388
  112. package/vendor/node-addon-api/CHANGELOG.md +0 -1272
  113. package/vendor/node-addon-api/CODE_OF_CONDUCT.md +0 -4
  114. package/vendor/node-addon-api/CONTRIBUTING.md +0 -203
  115. package/vendor/node-addon-api/appveyor.yml +0 -37
  116. package/vendor/node-addon-api/benchmark/README.md +0 -47
  117. package/vendor/node-addon-api/benchmark/binding.gyp +0 -25
  118. package/vendor/node-addon-api/benchmark/function_args.cc +0 -250
  119. package/vendor/node-addon-api/benchmark/function_args.js +0 -60
  120. package/vendor/node-addon-api/benchmark/index.js +0 -34
  121. package/vendor/node-addon-api/benchmark/property_descriptor.cc +0 -84
  122. package/vendor/node-addon-api/benchmark/property_descriptor.js +0 -38
  123. package/vendor/node-addon-api/common.gypi +0 -21
  124. package/vendor/node-addon-api/doc/README.md +0 -145
  125. package/vendor/node-addon-api/doc/addon.md +0 -163
  126. package/vendor/node-addon-api/doc/array.md +0 -81
  127. package/vendor/node-addon-api/doc/array_buffer.md +0 -165
  128. package/vendor/node-addon-api/doc/async_context.md +0 -86
  129. package/vendor/node-addon-api/doc/async_operations.md +0 -31
  130. package/vendor/node-addon-api/doc/async_worker.md +0 -428
  131. package/vendor/node-addon-api/doc/async_worker_variants.md +0 -578
  132. package/vendor/node-addon-api/doc/basic_env.md +0 -200
  133. package/vendor/node-addon-api/doc/bigint.md +0 -97
  134. package/vendor/node-addon-api/doc/boolean.md +0 -68
  135. package/vendor/node-addon-api/doc/buffer.md +0 -245
  136. package/vendor/node-addon-api/doc/callback_scope.md +0 -54
  137. package/vendor/node-addon-api/doc/callbackinfo.md +0 -97
  138. package/vendor/node-addon-api/doc/checker-tool.md +0 -32
  139. package/vendor/node-addon-api/doc/class_property_descriptor.md +0 -123
  140. package/vendor/node-addon-api/doc/cmake-js.md +0 -87
  141. package/vendor/node-addon-api/doc/contributing/creating_a_release.md +0 -95
  142. package/vendor/node-addon-api/doc/conversion-tool.md +0 -28
  143. package/vendor/node-addon-api/doc/dataview.md +0 -248
  144. package/vendor/node-addon-api/doc/date.md +0 -68
  145. package/vendor/node-addon-api/doc/env.md +0 -87
  146. package/vendor/node-addon-api/doc/error.md +0 -120
  147. package/vendor/node-addon-api/doc/error_handling.md +0 -266
  148. package/vendor/node-addon-api/doc/escapable_handle_scope.md +0 -80
  149. package/vendor/node-addon-api/doc/external.md +0 -79
  150. package/vendor/node-addon-api/doc/external_buffer.md +0 -18
  151. package/vendor/node-addon-api/doc/finalization.md +0 -153
  152. package/vendor/node-addon-api/doc/function.md +0 -402
  153. package/vendor/node-addon-api/doc/function_reference.md +0 -238
  154. package/vendor/node-addon-api/doc/generator.md +0 -13
  155. package/vendor/node-addon-api/doc/handle_scope.md +0 -77
  156. package/vendor/node-addon-api/doc/hierarchy.md +0 -95
  157. package/vendor/node-addon-api/doc/instance_wrap.md +0 -408
  158. package/vendor/node-addon-api/doc/maybe.md +0 -76
  159. package/vendor/node-addon-api/doc/memory_management.md +0 -27
  160. package/vendor/node-addon-api/doc/name.md +0 -29
  161. package/vendor/node-addon-api/doc/node-gyp.md +0 -82
  162. package/vendor/node-addon-api/doc/number.md +0 -163
  163. package/vendor/node-addon-api/doc/object.md +0 -411
  164. package/vendor/node-addon-api/doc/object_lifetime_management.md +0 -83
  165. package/vendor/node-addon-api/doc/object_reference.md +0 -117
  166. package/vendor/node-addon-api/doc/object_wrap.md +0 -604
  167. package/vendor/node-addon-api/doc/prebuild_tools.md +0 -16
  168. package/vendor/node-addon-api/doc/promises.md +0 -130
  169. package/vendor/node-addon-api/doc/property_descriptor.md +0 -286
  170. package/vendor/node-addon-api/doc/propertylvalue.md +0 -50
  171. package/vendor/node-addon-api/doc/range_error.md +0 -59
  172. package/vendor/node-addon-api/doc/reference.md +0 -113
  173. package/vendor/node-addon-api/doc/setup.md +0 -115
  174. package/vendor/node-addon-api/doc/string.md +0 -93
  175. package/vendor/node-addon-api/doc/symbol.md +0 -61
  176. package/vendor/node-addon-api/doc/syntax_error.md +0 -66
  177. package/vendor/node-addon-api/doc/threadsafe.md +0 -121
  178. package/vendor/node-addon-api/doc/threadsafe_function.md +0 -290
  179. package/vendor/node-addon-api/doc/type_error.md +0 -59
  180. package/vendor/node-addon-api/doc/type_taggable.md +0 -40
  181. package/vendor/node-addon-api/doc/typed_array.md +0 -78
  182. package/vendor/node-addon-api/doc/typed_array_of.md +0 -137
  183. package/vendor/node-addon-api/doc/typed_threadsafe_function.md +0 -306
  184. package/vendor/node-addon-api/doc/value.md +0 -368
  185. package/vendor/node-addon-api/doc/version_management.md +0 -43
  186. package/vendor/node-addon-api/eslint.config.js +0 -5
  187. package/vendor/node-addon-api/except.gypi +0 -25
  188. package/vendor/node-addon-api/index.js +0 -14
  189. package/vendor/node-addon-api/node_addon_api.gyp +0 -42
  190. package/vendor/node-addon-api/node_api.gyp +0 -9
  191. package/vendor/node-addon-api/noexcept.gypi +0 -26
  192. package/vendor/node-addon-api/nothing.c +0 -0
  193. package/vendor/node-addon-api/package-support.json +0 -21
  194. package/vendor/node-addon-api/package.json +0 -480
  195. package/vendor/node-addon-api/release-please-config.json +0 -15
  196. package/vendor/node-addon-api/test/README.md +0 -91
  197. package/vendor/node-addon-api/test/addon.cc +0 -44
  198. package/vendor/node-addon-api/test/addon.js +0 -7
  199. package/vendor/node-addon-api/test/addon_build/index.js +0 -49
  200. package/vendor/node-addon-api/test/addon_build/tpl/addon.cc +0 -18
  201. package/vendor/node-addon-api/test/addon_build/tpl/binding.gyp +0 -63
  202. package/vendor/node-addon-api/test/addon_build/tpl/index.js +0 -9
  203. package/vendor/node-addon-api/test/addon_build/tpl/package.json +0 -11
  204. package/vendor/node-addon-api/test/addon_data.cc +0 -98
  205. package/vendor/node-addon-api/test/addon_data.js +0 -24
  206. package/vendor/node-addon-api/test/array_buffer.cc +0 -243
  207. package/vendor/node-addon-api/test/array_buffer.js +0 -70
  208. package/vendor/node-addon-api/test/async_context.cc +0 -36
  209. package/vendor/node-addon-api/test/async_context.js +0 -122
  210. package/vendor/node-addon-api/test/async_progress_queue_worker.cc +0 -248
  211. package/vendor/node-addon-api/test/async_progress_queue_worker.js +0 -180
  212. package/vendor/node-addon-api/test/async_progress_worker.cc +0 -357
  213. package/vendor/node-addon-api/test/async_progress_worker.js +0 -200
  214. package/vendor/node-addon-api/test/async_worker.cc +0 -341
  215. package/vendor/node-addon-api/test/async_worker.js +0 -264
  216. package/vendor/node-addon-api/test/async_worker_nocallback.js +0 -19
  217. package/vendor/node-addon-api/test/async_worker_persistent.cc +0 -63
  218. package/vendor/node-addon-api/test/async_worker_persistent.js +0 -24
  219. package/vendor/node-addon-api/test/basic_types/array.cc +0 -40
  220. package/vendor/node-addon-api/test/basic_types/array.js +0 -34
  221. package/vendor/node-addon-api/test/basic_types/boolean.cc +0 -40
  222. package/vendor/node-addon-api/test/basic_types/boolean.js +0 -34
  223. package/vendor/node-addon-api/test/basic_types/number.cc +0 -105
  224. package/vendor/node-addon-api/test/basic_types/number.js +0 -115
  225. package/vendor/node-addon-api/test/basic_types/value.cc +0 -177
  226. package/vendor/node-addon-api/test/basic_types/value.js +0 -173
  227. package/vendor/node-addon-api/test/bigint.cc +0 -91
  228. package/vendor/node-addon-api/test/bigint.js +0 -53
  229. package/vendor/node-addon-api/test/binding-swallowexcept.cc +0 -12
  230. package/vendor/node-addon-api/test/binding.cc +0 -200
  231. package/vendor/node-addon-api/test/binding.gyp +0 -160
  232. package/vendor/node-addon-api/test/buffer.cc +0 -185
  233. package/vendor/node-addon-api/test/buffer.h +0 -26
  234. package/vendor/node-addon-api/test/buffer.js +0 -150
  235. package/vendor/node-addon-api/test/buffer_new_or_copy-inl.h +0 -68
  236. package/vendor/node-addon-api/test/buffer_no_external.cc +0 -24
  237. package/vendor/node-addon-api/test/callbackInfo.cc +0 -27
  238. package/vendor/node-addon-api/test/callbackInfo.js +0 -9
  239. package/vendor/node-addon-api/test/callbackscope.cc +0 -39
  240. package/vendor/node-addon-api/test/callbackscope.js +0 -49
  241. package/vendor/node-addon-api/test/child_processes/addon.js +0 -11
  242. package/vendor/node-addon-api/test/child_processes/addon_data.js +0 -24
  243. package/vendor/node-addon-api/test/child_processes/objectwrap_function.js +0 -22
  244. package/vendor/node-addon-api/test/child_processes/threadsafe_function_exception.js +0 -33
  245. package/vendor/node-addon-api/test/child_processes/typed_threadsafe_function_exception.js +0 -19
  246. package/vendor/node-addon-api/test/common/index.js +0 -246
  247. package/vendor/node-addon-api/test/common/test_helper.h +0 -71
  248. package/vendor/node-addon-api/test/dataview/dataview.cc +0 -48
  249. package/vendor/node-addon-api/test/dataview/dataview.js +0 -35
  250. package/vendor/node-addon-api/test/dataview/dataview_read_write.cc +0 -115
  251. package/vendor/node-addon-api/test/dataview/dataview_read_write.js +0 -92
  252. package/vendor/node-addon-api/test/date.cc +0 -45
  253. package/vendor/node-addon-api/test/date.js +0 -18
  254. package/vendor/node-addon-api/test/env_cleanup.cc +0 -100
  255. package/vendor/node-addon-api/test/env_cleanup.js +0 -55
  256. package/vendor/node-addon-api/test/env_misc.cc +0 -25
  257. package/vendor/node-addon-api/test/env_misc.js +0 -12
  258. package/vendor/node-addon-api/test/error.cc +0 -436
  259. package/vendor/node-addon-api/test/error.js +0 -111
  260. package/vendor/node-addon-api/test/error_handling_for_primitives.cc +0 -13
  261. package/vendor/node-addon-api/test/error_handling_for_primitives.js +0 -29
  262. package/vendor/node-addon-api/test/error_terminating_environment.js +0 -99
  263. package/vendor/node-addon-api/test/except_all.cc +0 -22
  264. package/vendor/node-addon-api/test/except_all.js +0 -14
  265. package/vendor/node-addon-api/test/exports.js +0 -19
  266. package/vendor/node-addon-api/test/external.cc +0 -85
  267. package/vendor/node-addon-api/test/external.js +0 -85
  268. package/vendor/node-addon-api/test/finalizer_order.cc +0 -152
  269. package/vendor/node-addon-api/test/finalizer_order.js +0 -98
  270. package/vendor/node-addon-api/test/function.cc +0 -338
  271. package/vendor/node-addon-api/test/function.js +0 -137
  272. package/vendor/node-addon-api/test/function_reference.cc +0 -204
  273. package/vendor/node-addon-api/test/function_reference.js +0 -157
  274. package/vendor/node-addon-api/test/globalObject/global_object.cc +0 -61
  275. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.cc +0 -31
  276. package/vendor/node-addon-api/test/globalObject/global_object_delete_property.js +0 -58
  277. package/vendor/node-addon-api/test/globalObject/global_object_get_property.cc +0 -40
  278. package/vendor/node-addon-api/test/globalObject/global_object_get_property.js +0 -56
  279. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.cc +0 -28
  280. package/vendor/node-addon-api/test/globalObject/global_object_has_own_property.js +0 -46
  281. package/vendor/node-addon-api/test/globalObject/global_object_set_property.cc +0 -31
  282. package/vendor/node-addon-api/test/globalObject/global_object_set_property.js +0 -56
  283. package/vendor/node-addon-api/test/handlescope.cc +0 -86
  284. package/vendor/node-addon-api/test/handlescope.js +0 -16
  285. package/vendor/node-addon-api/test/index.js +0 -160
  286. package/vendor/node-addon-api/test/maybe/check.cc +0 -69
  287. package/vendor/node-addon-api/test/maybe/index.js +0 -50
  288. package/vendor/node-addon-api/test/memory_management.cc +0 -18
  289. package/vendor/node-addon-api/test/memory_management.js +0 -9
  290. package/vendor/node-addon-api/test/movable_callbacks.cc +0 -23
  291. package/vendor/node-addon-api/test/movable_callbacks.js +0 -21
  292. package/vendor/node-addon-api/test/name.cc +0 -110
  293. package/vendor/node-addon-api/test/name.js +0 -59
  294. package/vendor/node-addon-api/test/napi_child.js +0 -14
  295. package/vendor/node-addon-api/test/object/delete_property.cc +0 -38
  296. package/vendor/node-addon-api/test/object/delete_property.js +0 -41
  297. package/vendor/node-addon-api/test/object/finalizer.cc +0 -30
  298. package/vendor/node-addon-api/test/object/finalizer.js +0 -28
  299. package/vendor/node-addon-api/test/object/get_property.cc +0 -34
  300. package/vendor/node-addon-api/test/object/get_property.js +0 -40
  301. package/vendor/node-addon-api/test/object/has_own_property.cc +0 -34
  302. package/vendor/node-addon-api/test/object/has_own_property.js +0 -34
  303. package/vendor/node-addon-api/test/object/has_property.cc +0 -38
  304. package/vendor/node-addon-api/test/object/has_property.js +0 -37
  305. package/vendor/node-addon-api/test/object/object.cc +0 -430
  306. package/vendor/node-addon-api/test/object/object.js +0 -218
  307. package/vendor/node-addon-api/test/object/object_deprecated.cc +0 -70
  308. package/vendor/node-addon-api/test/object/object_deprecated.js +0 -42
  309. package/vendor/node-addon-api/test/object/object_freeze_seal.cc +0 -25
  310. package/vendor/node-addon-api/test/object/object_freeze_seal.js +0 -61
  311. package/vendor/node-addon-api/test/object/set_property.cc +0 -45
  312. package/vendor/node-addon-api/test/object/set_property.js +0 -30
  313. package/vendor/node-addon-api/test/object/subscript_operator.cc +0 -58
  314. package/vendor/node-addon-api/test/object/subscript_operator.js +0 -17
  315. package/vendor/node-addon-api/test/object_reference.cc +0 -417
  316. package/vendor/node-addon-api/test/object_reference.js +0 -262
  317. package/vendor/node-addon-api/test/objectwrap.cc +0 -295
  318. package/vendor/node-addon-api/test/objectwrap.js +0 -309
  319. package/vendor/node-addon-api/test/objectwrap_constructor_exception.cc +0 -26
  320. package/vendor/node-addon-api/test/objectwrap_constructor_exception.js +0 -18
  321. package/vendor/node-addon-api/test/objectwrap_function.cc +0 -43
  322. package/vendor/node-addon-api/test/objectwrap_function.js +0 -6
  323. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.cc +0 -30
  324. package/vendor/node-addon-api/test/objectwrap_multiple_inheritance.js +0 -13
  325. package/vendor/node-addon-api/test/objectwrap_removewrap.cc +0 -45
  326. package/vendor/node-addon-api/test/objectwrap_removewrap.js +0 -32
  327. package/vendor/node-addon-api/test/objectwrap_worker_thread.js +0 -20
  328. package/vendor/node-addon-api/test/promise.cc +0 -111
  329. package/vendor/node-addon-api/test/promise.js +0 -43
  330. package/vendor/node-addon-api/test/reference.cc +0 -78
  331. package/vendor/node-addon-api/test/reference.js +0 -20
  332. package/vendor/node-addon-api/test/require_basic_finalizers/index.js +0 -38
  333. package/vendor/node-addon-api/test/require_basic_finalizers/tpl/addon.cc +0 -12
  334. package/vendor/node-addon-api/test/require_basic_finalizers/tpl/binding.gyp +0 -48
  335. package/vendor/node-addon-api/test/require_basic_finalizers/tpl/index.js +0 -3
  336. package/vendor/node-addon-api/test/require_basic_finalizers/tpl/package.json +0 -11
  337. package/vendor/node-addon-api/test/run_script.cc +0 -56
  338. package/vendor/node-addon-api/test/run_script.js +0 -45
  339. package/vendor/node-addon-api/test/symbol.cc +0 -79
  340. package/vendor/node-addon-api/test/symbol.js +0 -66
  341. package/vendor/node-addon-api/test/testUtil.js +0 -54
  342. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.cc +0 -230
  343. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function.js +0 -225
  344. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.cc +0 -155
  345. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ctx.js +0 -13
  346. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_exception.cc +0 -50
  347. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_exception.js +0 -20
  348. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.cc +0 -125
  349. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_existing_tsfn.js +0 -14
  350. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.cc +0 -27
  351. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_ptr.js +0 -7
  352. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.cc +0 -240
  353. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_sum.js +0 -59
  354. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.cc +0 -55
  355. package/vendor/node-addon-api/test/threadsafe_function/threadsafe_function_unref.js +0 -98
  356. package/vendor/node-addon-api/test/thunking_manual.cc +0 -127
  357. package/vendor/node-addon-api/test/thunking_manual.js +0 -16
  358. package/vendor/node-addon-api/test/type_taggable.cc +0 -66
  359. package/vendor/node-addon-api/test/type_taggable.js +0 -59
  360. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.cc +0 -215
  361. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function.js +0 -188
  362. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.cc +0 -120
  363. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ctx.js +0 -14
  364. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_exception.cc +0 -39
  365. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_exception.js +0 -13
  366. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.cc +0 -127
  367. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_existing_tsfn.js +0 -14
  368. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.cc +0 -32
  369. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_ptr.js +0 -8
  370. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.cc +0 -237
  371. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_sum.js +0 -59
  372. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.cc +0 -67
  373. package/vendor/node-addon-api/test/typed_threadsafe_function/typed_threadsafe_function_unref.js +0 -98
  374. package/vendor/node-addon-api/test/typedarray-bigint.js +0 -58
  375. package/vendor/node-addon-api/test/typedarray.cc +0 -413
  376. package/vendor/node-addon-api/test/typedarray.js +0 -103
  377. package/vendor/node-addon-api/test/value_type_cast.cc +0 -60
  378. package/vendor/node-addon-api/test/value_type_cast.js +0 -106
  379. package/vendor/node-addon-api/test/version_management.cc +0 -28
  380. package/vendor/node-addon-api/test/version_management.js +0 -29
  381. package/vendor/node-addon-api/tools/README.md +0 -73
  382. package/vendor/node-addon-api/tools/check-napi.js +0 -99
  383. package/vendor/node-addon-api/tools/clang-format.js +0 -71
  384. package/vendor/node-addon-api/tools/conversion.js +0 -301
  385. package/vendor/node-addon-api/unit-test/README.md +0 -28
  386. package/vendor/node-addon-api/unit-test/binding-file-template.js +0 -39
  387. package/vendor/node-addon-api/unit-test/binding.gyp +0 -72
  388. package/vendor/node-addon-api/unit-test/exceptions.js +0 -32
  389. package/vendor/node-addon-api/unit-test/generate-binding-cc.js +0 -61
  390. package/vendor/node-addon-api/unit-test/injectTestParams.js +0 -101
  391. package/vendor/node-addon-api/unit-test/listOfTestModules.js +0 -88
  392. package/vendor/node-addon-api/unit-test/matchModules.js +0 -65
  393. package/vendor/node-addon-api/unit-test/setup.js +0 -13
  394. package/vendor/node-addon-api/unit-test/spawnTask.js +0 -26
  395. package/vendor/node-addon-api/unit-test/test.js +0 -30
  396. package/vendor/node-api-headers/CHANGELOG.md +0 -130
  397. package/vendor/node-api-headers/CODE_OF_CONDUCT.md +0 -4
  398. package/vendor/node-api-headers/CONTRIBUTING.md +0 -32
  399. package/vendor/node-api-headers/CREATING_A_RELEASE.md +0 -68
  400. package/vendor/node-api-headers/index.js +0 -17
  401. package/vendor/node-api-headers/lib/clang-utils.js +0 -50
  402. package/vendor/node-api-headers/lib/parse-utils.js +0 -92
  403. package/vendor/node-api-headers/package.json +0 -59
  404. package/vendor/node-api-headers/release-please-config.json +0 -12
  405. package/vendor/node-api-headers/scripts/update-headers.js +0 -246
  406. package/vendor/node-api-headers/scripts/write-symbols.js +0 -154
  407. package/vendor/node-api-headers/scripts/write-win32-def.js +0 -52
  408. package/vendor/node-api-headers/symbols.js +0 -257
  409. package/vendor/node-api-headers/test/parse-utils.js +0 -21
  410. /package/doc/{pages/benchmarks.md → benchmarks.md} +0 -0
  411. /package/doc/{pages/callbacks.md → callbacks.md} +0 -0
  412. /package/doc/{pages/contribute.md → contribute.md} +0 -0
  413. /package/doc/{pages/functions.md → functions.md} +0 -0
  414. /package/doc/{pages/index.md → index.md} +0 -0
  415. /package/doc/{pages/input.md → input.md} +0 -0
  416. /package/doc/{pages/migration.md → migration.md} +0 -0
  417. /package/doc/{pages/misc.md → misc.md} +0 -0
  418. /package/doc/{pages/output.md → output.md} +0 -0
  419. /package/doc/{pages/packaging.md → packaging.md} +0 -0
  420. /package/doc/{pages/platforms.md → platforms.md} +0 -0
  421. /package/doc/{pages/pointers.md → pointers.md} +0 -0
  422. /package/doc/{pages/start.md → start.md} +0 -0
  423. /package/doc/{pages/unions.md → unions.md} +0 -0
  424. /package/doc/{pages/variables.md → variables.md} +0 -0
  425. /package/src/koffi/src/{abi/loong64.cc → abi_loong64.cc} +0 -0
@@ -1,91 +0,0 @@
1
- # Writing Tests
2
-
3
- There are multiple flavors of node-addon-api test builds that cover different
4
- build flags defined in `napi.h`:
5
-
6
- 1. c++ exceptions enabled,
7
- 2. c++ exceptions disabled,
8
- 3. c++ exceptions disabled, and `NODE_ADDON_API_ENABLE_MAYBE` defined.
9
-
10
- Functions in node-addon-api that call into JavaScript can have different
11
- declared return types to reflect build flavor settings. For example,
12
- `Napi::Object::Set` returns `bool` when `NODE_ADDON_API_ENABLE_MAYBE`
13
- is not defined, and `Napi::Maybe<bool>` when `NODE_ADDON_API_ENABLE_MAYBE`
14
- is defined. In source code, return type variants are defined as
15
- `Napi::MaybeOrValue<>` to prevent the duplication of most of the code base.
16
-
17
- To properly test these build flavors, all values returned by a function defined
18
- to return `Napi::MaybeOrValue<>` should be tested by using one of the following
19
- test helpers to handle possible JavaScript exceptions.
20
-
21
- There are three test helper functions to conveniently convert
22
- `Napi::MaybeOrValue<>` values to raw values.
23
-
24
- ## MaybeUnwrap
25
-
26
- ```cpp
27
- template <typename T>
28
- T MaybeUnwrap(MaybeOrValue<T> maybe);
29
- ```
30
-
31
- Converts `MaybeOrValue<T>` to `T` by checking that `MaybeOrValue` is NOT an
32
- empty `Maybe`.
33
-
34
- Returns the original value if `NODE_ADDON_API_ENABLE_MAYBE` is not defined.
35
-
36
- Example:
37
-
38
- ```cpp
39
- Object obj = info[0].As<Object>();
40
- // we are sure the parameters should not throw
41
- Value value = MaybeUnwrap(obj->Get("foobar"));
42
- ```
43
-
44
- ## MaybeUnwrapOr
45
-
46
- ```cpp
47
- template <typename T>
48
- T MaybeUnwrapOr(MaybeOrValue<T> maybe, const T& default_value = T());
49
- ```
50
-
51
- Converts `MaybeOrValue<T>` to `T` by getting the value that wrapped by the
52
- `Maybe` or return the `default_value` if the `Maybe` is empty.
53
-
54
- Returns the original value if `NODE_ADDON_API_ENABLE_MAYBE` is not defined.
55
-
56
- Example:
57
-
58
- ```cpp
59
- Value CallWithArgs(const CallbackInfo& info) {
60
- Function func = info[0].As<Function>();
61
- // We don't care if the operation is throwing or not, just return it back to node-addon-api
62
- return MaybeUnwrapOr(
63
- func.Call(std::initializer_list<napi_value>{info[1], info[2], info[3]}));
64
- }
65
- ```
66
-
67
- ## MaybeUnwrapTo
68
-
69
- ```cpp
70
- template <typename T>
71
- bool MaybeUnwrapTo(MaybeOrValue<T> maybe, T* out);
72
- ```
73
-
74
- Converts `MaybeOrValue<T>` to `T` by getting the value that wrapped by the
75
- e`Maybe` or return `false` if the Maybe is empty
76
-
77
- Copies the `value` to `out` when `NODE_ADDON_API_ENABLE_MAYBE` is not defined
78
-
79
- Example:
80
-
81
- ```cpp
82
- Object opts = info[0].As<Object>();
83
- bool hasProperty = false;
84
- // The check may throw, but we are going to suppress that.
85
- if (MaybeUnwrapTo(opts.Has("blocking"), &hasProperty)) {
86
- isBlocking = hasProperty &&
87
- MaybeUnwrap(MaybeUnwrap(opts.Get("blocking")).ToBoolean());
88
- } else {
89
- env.GetAndClearPendingException();
90
- }
91
- ```
@@ -1,44 +0,0 @@
1
- #if (NAPI_VERSION > 5)
2
- #include <stdio.h>
3
- #include "napi.h"
4
-
5
- namespace {
6
-
7
- class TestAddon : public Napi::Addon<TestAddon> {
8
- public:
9
- inline TestAddon(Napi::Env env, Napi::Object exports) {
10
- DefineAddon(
11
- exports,
12
- {InstanceMethod("increment", &TestAddon::Increment),
13
- InstanceValue(
14
- "subObject",
15
- DefineProperties(
16
- Napi::Object::New(env),
17
- {InstanceMethod("decrement", &TestAddon::Decrement)}))});
18
- }
19
-
20
- ~TestAddon() { fprintf(stderr, "TestAddon::~TestAddon\n"); }
21
-
22
- private:
23
- Napi::Value Increment(const Napi::CallbackInfo& info) {
24
- return Napi::Number::New(info.Env(), ++value);
25
- }
26
-
27
- Napi::Value Decrement(const Napi::CallbackInfo& info) {
28
- return Napi::Number::New(info.Env(), --value);
29
- }
30
-
31
- uint32_t value = 42;
32
- };
33
-
34
- Napi::Value CreateAddon(const Napi::CallbackInfo& info) {
35
- return TestAddon::Init(info.Env(), Napi::Object::New(info.Env()));
36
- }
37
-
38
- } // end of anonymous namespace
39
-
40
- Napi::Object InitAddon(Napi::Env env) {
41
- return Napi::Function::New<CreateAddon>(env, "CreateAddon");
42
- }
43
-
44
- #endif // (NAPI_VERSION > 5)
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = require('./common').runTestInChildProcess({
4
- suite: 'addon',
5
- testName: 'workingCode',
6
- expectedStderr: ['TestAddon::~TestAddon']
7
- });
@@ -1,49 +0,0 @@
1
- 'use strict';
2
-
3
- const { promisify } = require('util');
4
- const exec = promisify(require('child_process').exec);
5
- const { copy, remove } = require('fs-extra');
6
- const path = require('path');
7
- const assert = require('assert');
8
-
9
- const ADDONS_FOLDER = path.join(__dirname, 'addons');
10
-
11
- const addons = [
12
- 'echo addon',
13
- 'echo-addon'
14
- ];
15
-
16
- async function beforeAll (addons) {
17
- console.log(' >Preparing native addons to build');
18
- for (const addon of addons) {
19
- await remove(path.join(ADDONS_FOLDER, addon));
20
- await copy(path.join(__dirname, 'tpl'), path.join(ADDONS_FOLDER, addon));
21
- }
22
- }
23
-
24
- async function test (addon) {
25
- console.log(` >Building addon: '${addon}'`);
26
- await exec('npm install', {
27
- cwd: path.join(ADDONS_FOLDER, addon)
28
- });
29
- console.log(` >Running test for: '${addon}'`);
30
- // Disabled the checks on stderr and stdout because of this issue on npm:
31
- // Stop using process.umask(): https://github.com/npm/cli/issues/1103
32
- // We should enable the following checks again after the resolution of
33
- // the reported issue.
34
- // assert.strictEqual(stderr, '');
35
- // assert.ok(stderr.length === 0);
36
- // assert.ok(stdout.length > 0);
37
- const binding = require(`${ADDONS_FOLDER}/${addon}`);
38
- assert.strictEqual(binding.except.echo('except'), 'except');
39
- assert.strictEqual(binding.except.echo(101), 101);
40
- assert.strictEqual(binding.noexcept.echo('noexcept'), 'noexcept');
41
- assert.strictEqual(binding.noexcept.echo(103), 103);
42
- }
43
-
44
- module.exports = (async function () {
45
- await beforeAll(addons);
46
- for (const addon of addons) {
47
- await test(addon);
48
- }
49
- })();
@@ -1,18 +0,0 @@
1
- #include <napi.h>
2
-
3
- Napi::Value Echo(const Napi::CallbackInfo& info) {
4
- Napi::Env env = info.Env();
5
- if (info.Length() != 1) {
6
- Napi::TypeError::New(env,
7
- "Wrong number of arguments. One argument expected.")
8
- .ThrowAsJavaScriptException();
9
- }
10
- return info[0].As<Napi::Value>();
11
- }
12
-
13
- Napi::Object Init(Napi::Env env, Napi::Object exports) {
14
- exports.Set(Napi::String::New(env, "echo"), Napi::Function::New(env, Echo));
15
- return exports;
16
- }
17
-
18
- NODE_API_MODULE(NODE_GYP_MODULE_NAME, Init)
@@ -1,63 +0,0 @@
1
- {
2
- 'target_defaults': {
3
- 'include_dirs': [
4
- "<!(node -p \"require('node-addon-api').include_dir\")"
5
- ],
6
- 'variables': {
7
- 'NAPI_VERSION%': "<!(node -p \"process.env.NAPI_VERSION || process.versions.napi\")",
8
- 'disable_deprecated': "<!(node -p \"process.env['npm_config_disable_deprecated']\")"
9
- },
10
- 'conditions': [
11
- ['NAPI_VERSION!=""', { 'defines': ['NAPI_VERSION=<@(NAPI_VERSION)'] } ],
12
- ['NAPI_VERSION==2147483647', { 'defines': ['NAPI_EXPERIMENTAL'] } ],
13
- ['disable_deprecated=="true"', {
14
- 'defines': ['NODE_ADDON_API_DISABLE_DEPRECATED']
15
- }],
16
- ['OS=="mac"', {
17
- 'cflags+': ['-fvisibility=hidden'],
18
- 'xcode_settings': {
19
- 'OTHER_CFLAGS': ['-fvisibility=hidden']
20
- }
21
- }]
22
- ],
23
- 'sources': [
24
- 'addon.cc',
25
- ],
26
- },
27
- 'targets': [
28
- {
29
- 'target_name': 'addon',
30
- 'defines': [ 'NAPI_CPP_EXCEPTIONS' ],
31
- 'cflags!': [ '-fno-exceptions' ],
32
- 'cflags_cc!': [ '-fno-exceptions' ],
33
- 'msvs_settings': {
34
- 'VCCLCompilerTool': {
35
- 'ExceptionHandling': 1,
36
- 'EnablePREfast': 'true',
37
- },
38
- },
39
- 'xcode_settings': {
40
- 'CLANG_CXX_LIBRARY': 'libc++',
41
- 'MACOSX_DEPLOYMENT_TARGET': '10.7',
42
- 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES',
43
- },
44
- },
45
- {
46
- 'target_name': 'addon_noexcept',
47
- 'defines': [ 'NAPI_DISABLE_CPP_EXCEPTIONS' ],
48
- 'cflags': [ '-fno-exceptions' ],
49
- 'cflags_cc': [ '-fno-exceptions' ],
50
- 'msvs_settings': {
51
- 'VCCLCompilerTool': {
52
- 'ExceptionHandling': 0,
53
- 'EnablePREfast': 'true',
54
- },
55
- },
56
- 'xcode_settings': {
57
- 'CLANG_CXX_LIBRARY': 'libc++',
58
- 'MACOSX_DEPLOYMENT_TARGET': '10.7',
59
- 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO',
60
- },
61
- },
62
- ],
63
- }
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- const except = require('bindings')('addon');
4
- const noexcept = require('bindings')('addon_noexcept');
5
-
6
- module.exports = {
7
- except,
8
- noexcept
9
- };
@@ -1,11 +0,0 @@
1
- {
2
- "name": "addon",
3
- "version": "0.0.0",
4
- "description": "Node.js addon",
5
- "private": true,
6
- "scripts": {},
7
- "dependencies": {
8
- "node-addon-api": "file:../../../../"
9
- },
10
- "gypfile": true
11
- }
@@ -1,98 +0,0 @@
1
- #if (NAPI_VERSION > 5)
2
- #include <stdio.h>
3
- #include "napi.h"
4
- #include "test_helper.h"
5
-
6
- // An overly elaborate way to get/set a boolean stored in the instance data:
7
- // 0. The constructor for JS `VerboseIndicator` instances, which have a private
8
- // member named "verbose", is stored in the instance data.
9
- // 1. Add a property named "verbose" onto exports served by a getter/setter.
10
- // 2. The getter returns an object of type VerboseIndicator, which itself has a
11
- // property named "verbose", also served by a getter/setter:
12
- // * The getter returns a boolean, indicating whether "verbose" is set.
13
- // * The setter sets "verbose" on the instance data.
14
- // 3. The setter sets "verbose" on the instance data.
15
-
16
- class Addon {
17
- public:
18
- class VerboseIndicator : public Napi::ObjectWrap<VerboseIndicator> {
19
- public:
20
- VerboseIndicator(const Napi::CallbackInfo& info)
21
- : Napi::ObjectWrap<VerboseIndicator>(info) {
22
- info.This().As<Napi::Object>()["verbose"] = Napi::Boolean::New(
23
- info.Env(), info.Env().GetInstanceData<Addon>()->verbose);
24
- }
25
-
26
- Napi::Value Getter(const Napi::CallbackInfo& info) {
27
- return Napi::Boolean::New(info.Env(),
28
- info.Env().GetInstanceData<Addon>()->verbose);
29
- }
30
-
31
- void Setter(const Napi::CallbackInfo& info, const Napi::Value& val) {
32
- info.Env().GetInstanceData<Addon>()->verbose = val.As<Napi::Boolean>();
33
- }
34
-
35
- static Napi::FunctionReference Init(Napi::Env env) {
36
- return Napi::Persistent(DefineClass(
37
- env,
38
- "VerboseIndicator",
39
- {InstanceAccessor<&VerboseIndicator::Getter,
40
- &VerboseIndicator::Setter>("verbose")}));
41
- }
42
- };
43
-
44
- static Napi::Value Getter(const Napi::CallbackInfo& info) {
45
- return MaybeUnwrap(
46
- info.Env().GetInstanceData<Addon>()->VerboseIndicator.New({}));
47
- }
48
-
49
- static void Setter(const Napi::CallbackInfo& info) {
50
- info.Env().GetInstanceData<Addon>()->verbose = info[0].As<Napi::Boolean>();
51
- }
52
-
53
- Addon(Napi::Env env) : VerboseIndicator(VerboseIndicator::Init(env)) {}
54
- ~Addon() {
55
- if (verbose) {
56
- fprintf(stderr, "addon_data: Addon::~Addon\n");
57
- }
58
- }
59
-
60
- static void DeleteAddon(Napi::Env, Addon* addon, uint32_t* hint) {
61
- delete addon;
62
- fprintf(stderr, "hint: %u\n", *hint);
63
- delete hint;
64
- }
65
-
66
- static Napi::Object Init(Napi::Env env, Napi::Value jshint) {
67
- if (!jshint.IsNumber()) {
68
- NAPI_THROW(Napi::Error::New(env, "Expected number"), Napi::Object());
69
- }
70
- uint32_t hint = jshint.As<Napi::Number>();
71
- if (hint == 0)
72
- env.SetInstanceData(new Addon(env));
73
- else
74
- env.SetInstanceData<Addon, uint32_t, DeleteAddon>(new Addon(env),
75
- new uint32_t(hint));
76
- Napi::Object result = Napi::Object::New(env);
77
- result.DefineProperties({
78
- Napi::PropertyDescriptor::Accessor<Getter, Setter>("verbose"),
79
- });
80
-
81
- return result;
82
- }
83
-
84
- private:
85
- bool verbose = false;
86
- Napi::FunctionReference VerboseIndicator;
87
- };
88
-
89
- // We use an addon factory so we can cover both the case where there is an
90
- // instance data hint and the case where there isn't.
91
- static Napi::Value AddonFactory(const Napi::CallbackInfo& info) {
92
- return Addon::Init(info.Env(), info[0]);
93
- }
94
-
95
- Napi::Object InitAddonData(Napi::Env env) {
96
- return Napi::Function::New(env, AddonFactory);
97
- }
98
- #endif // (NAPI_VERSION > 5)
@@ -1,24 +0,0 @@
1
- 'use strict';
2
-
3
- const common = require('./common');
4
-
5
- module.exports = common.runTest(test);
6
-
7
- async function test () {
8
- await common.runTestInChildProcess({
9
- suite: 'addon_data',
10
- testName: 'workingCode'
11
- });
12
-
13
- await common.runTestInChildProcess({
14
- suite: 'addon_data',
15
- testName: 'cleanupWithoutHint',
16
- expectedStderr: ['addon_data: Addon::~Addon']
17
- });
18
-
19
- await common.runTestInChildProcess({
20
- suite: 'addon_data',
21
- testName: 'cleanupWithHint',
22
- expectedStderr: ['addon_data: Addon::~Addon', 'hint: 42']
23
- });
24
- }
@@ -1,243 +0,0 @@
1
- #include "napi.h"
2
-
3
- using namespace Napi;
4
-
5
- namespace {
6
-
7
- const size_t testLength = 4;
8
- uint8_t testData[testLength];
9
- int finalizeCount = 0;
10
-
11
- void InitData(uint8_t* data, size_t length) {
12
- for (size_t i = 0; i < length; i++) {
13
- data[i] = static_cast<uint8_t>(i);
14
- }
15
- }
16
-
17
- bool VerifyData(uint8_t* data, size_t length) {
18
- for (size_t i = 0; i < length; i++) {
19
- if (data[i] != static_cast<uint8_t>(i)) {
20
- return false;
21
- }
22
- }
23
- return true;
24
- }
25
-
26
- Value CreateBuffer(const CallbackInfo& info) {
27
- ArrayBuffer buffer = ArrayBuffer::New(info.Env(), testLength);
28
-
29
- if (buffer.ByteLength() != testLength) {
30
- Error::New(info.Env(), "Incorrect buffer length.")
31
- .ThrowAsJavaScriptException();
32
- return Value();
33
- }
34
-
35
- InitData(static_cast<uint8_t*>(buffer.Data()), testLength);
36
- return buffer;
37
- }
38
-
39
- Value CreateExternalBuffer(const CallbackInfo& info) {
40
- finalizeCount = 0;
41
-
42
- ArrayBuffer buffer = ArrayBuffer::New(info.Env(), testData, testLength);
43
-
44
- if (buffer.ByteLength() != testLength) {
45
- Error::New(info.Env(), "Incorrect buffer length.")
46
- .ThrowAsJavaScriptException();
47
- return Value();
48
- }
49
-
50
- if (buffer.Data() != testData) {
51
- Error::New(info.Env(), "Incorrect buffer data.")
52
- .ThrowAsJavaScriptException();
53
- return Value();
54
- }
55
-
56
- InitData(testData, testLength);
57
- return buffer;
58
- }
59
-
60
- Value CreateExternalBufferWithFinalize(const CallbackInfo& info) {
61
- finalizeCount = 0;
62
-
63
- uint8_t* data = new uint8_t[testLength];
64
-
65
- ArrayBuffer buffer = ArrayBuffer::New(
66
- info.Env(), data, testLength, [](Env /*env*/, void* finalizeData) {
67
- delete[] static_cast<uint8_t*>(finalizeData);
68
- finalizeCount++;
69
- });
70
-
71
- if (buffer.ByteLength() != testLength) {
72
- Error::New(info.Env(), "Incorrect buffer length.")
73
- .ThrowAsJavaScriptException();
74
- return Value();
75
- }
76
-
77
- if (buffer.Data() != data) {
78
- Error::New(info.Env(), "Incorrect buffer data.")
79
- .ThrowAsJavaScriptException();
80
- return Value();
81
- }
82
-
83
- InitData(data, testLength);
84
- return buffer;
85
- }
86
-
87
- Value CreateExternalBufferWithFinalizeHint(const CallbackInfo& info) {
88
- finalizeCount = 0;
89
-
90
- uint8_t* data = new uint8_t[testLength];
91
-
92
- char* hint = nullptr;
93
- ArrayBuffer buffer = ArrayBuffer::New(
94
- info.Env(),
95
- data,
96
- testLength,
97
- [](Env /*env*/, void* finalizeData, char* /*finalizeHint*/) {
98
- delete[] static_cast<uint8_t*>(finalizeData);
99
- finalizeCount++;
100
- },
101
- hint);
102
-
103
- if (buffer.ByteLength() != testLength) {
104
- Error::New(info.Env(), "Incorrect buffer length.")
105
- .ThrowAsJavaScriptException();
106
- return Value();
107
- }
108
-
109
- if (buffer.Data() != data) {
110
- Error::New(info.Env(), "Incorrect buffer data.")
111
- .ThrowAsJavaScriptException();
112
- return Value();
113
- }
114
-
115
- InitData(data, testLength);
116
- return buffer;
117
- }
118
-
119
- void CheckBuffer(const CallbackInfo& info) {
120
- if (!info[0].IsArrayBuffer()) {
121
- Error::New(info.Env(), "A buffer was expected.")
122
- .ThrowAsJavaScriptException();
123
- return;
124
- }
125
-
126
- ArrayBuffer buffer = info[0].As<ArrayBuffer>();
127
-
128
- if (buffer.ByteLength() != testLength) {
129
- Error::New(info.Env(), "Incorrect buffer length.")
130
- .ThrowAsJavaScriptException();
131
- return;
132
- }
133
-
134
- if (!VerifyData(static_cast<uint8_t*>(buffer.Data()), testLength)) {
135
- Error::New(info.Env(), "Incorrect buffer data.")
136
- .ThrowAsJavaScriptException();
137
- return;
138
- }
139
- }
140
-
141
- Value GetFinalizeCount(const CallbackInfo& info) {
142
- return Number::New(info.Env(), finalizeCount);
143
- }
144
-
145
- Value CreateBufferWithConstructor(const CallbackInfo& info) {
146
- ArrayBuffer buffer = ArrayBuffer::New(info.Env(), testLength);
147
- if (buffer.ByteLength() != testLength) {
148
- Error::New(info.Env(), "Incorrect buffer length.")
149
- .ThrowAsJavaScriptException();
150
- return Value();
151
- }
152
- InitData(static_cast<uint8_t*>(buffer.Data()), testLength);
153
- ArrayBuffer buffer2(info.Env(), buffer);
154
- return buffer2;
155
- }
156
-
157
- Value CheckEmptyBuffer(const CallbackInfo& info) {
158
- ArrayBuffer buffer;
159
- return Boolean::New(info.Env(), buffer.IsEmpty());
160
- }
161
-
162
- void CheckDetachUpdatesData(const CallbackInfo& info) {
163
- if (!info[0].IsArrayBuffer()) {
164
- Error::New(info.Env(), "A buffer was expected.")
165
- .ThrowAsJavaScriptException();
166
- return;
167
- }
168
-
169
- ArrayBuffer buffer = info[0].As<ArrayBuffer>();
170
-
171
- // This potentially causes the buffer to cache its data pointer and length.
172
- buffer.Data();
173
- buffer.ByteLength();
174
-
175
- #if NAPI_VERSION >= 7
176
- if (buffer.IsDetached()) {
177
- Error::New(info.Env(), "Buffer should not be detached.")
178
- .ThrowAsJavaScriptException();
179
- return;
180
- }
181
- #endif
182
-
183
- if (info.Length() == 2) {
184
- // Detach externally (in JavaScript).
185
- if (!info[1].IsFunction()) {
186
- Error::New(info.Env(), "A function was expected.")
187
- .ThrowAsJavaScriptException();
188
- return;
189
- }
190
-
191
- Function detach = info[1].As<Function>();
192
- detach.Call({});
193
- } else {
194
- #if NAPI_VERSION >= 7
195
- // Detach directly.
196
- buffer.Detach();
197
- #else
198
- return;
199
- #endif
200
- }
201
-
202
- #if NAPI_VERSION >= 7
203
- if (!buffer.IsDetached()) {
204
- Error::New(info.Env(), "Buffer should be detached.")
205
- .ThrowAsJavaScriptException();
206
- return;
207
- }
208
- #endif
209
-
210
- if (buffer.Data() != nullptr) {
211
- Error::New(info.Env(), "Incorrect data pointer.")
212
- .ThrowAsJavaScriptException();
213
- return;
214
- }
215
-
216
- if (buffer.ByteLength() != 0) {
217
- Error::New(info.Env(), "Incorrect buffer length.")
218
- .ThrowAsJavaScriptException();
219
- return;
220
- }
221
- }
222
-
223
- } // end anonymous namespace
224
-
225
- Object InitArrayBuffer(Env env) {
226
- Object exports = Object::New(env);
227
-
228
- exports["createBuffer"] = Function::New(env, CreateBuffer);
229
- exports["createExternalBuffer"] = Function::New(env, CreateExternalBuffer);
230
- exports["createExternalBufferWithFinalize"] =
231
- Function::New(env, CreateExternalBufferWithFinalize);
232
- exports["createExternalBufferWithFinalizeHint"] =
233
- Function::New(env, CreateExternalBufferWithFinalizeHint);
234
- exports["checkBuffer"] = Function::New(env, CheckBuffer);
235
- exports["getFinalizeCount"] = Function::New(env, GetFinalizeCount);
236
- exports["createBufferWithConstructor"] =
237
- Function::New(env, CreateBufferWithConstructor);
238
- exports["checkEmptyBuffer"] = Function::New(env, CheckEmptyBuffer);
239
- exports["checkDetachUpdatesData"] =
240
- Function::New(env, CheckDetachUpdatesData);
241
-
242
- return exports;
243
- }