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,79 +0,0 @@
1
- #include <napi.h>
2
- #include "test_helper.h"
3
- using namespace Napi;
4
-
5
- Symbol CreateNewSymbolWithNoArgs(const Napi::CallbackInfo&) {
6
- return Napi::Symbol();
7
- }
8
-
9
- Symbol CreateNewSymbolWithCppStrDesc(const Napi::CallbackInfo& info) {
10
- String cppStrKey = info[0].As<String>();
11
- return Napi::Symbol::New(info.Env(), cppStrKey.Utf8Value());
12
- }
13
-
14
- Symbol CreateNewSymbolWithCStrDesc(const Napi::CallbackInfo& info) {
15
- String cStrKey = info[0].As<String>();
16
- return Napi::Symbol::New(info.Env(), cStrKey.Utf8Value().c_str());
17
- }
18
-
19
- Symbol CreateNewSymbolWithNapiString(const Napi::CallbackInfo& info) {
20
- String strKey = info[0].As<String>();
21
- return Napi::Symbol::New(info.Env(), strKey);
22
- }
23
-
24
- Symbol GetWellknownSymbol(const Napi::CallbackInfo& info) {
25
- String registrySymbol = info[0].As<String>();
26
- return MaybeUnwrap(
27
- Napi::Symbol::WellKnown(info.Env(), registrySymbol.Utf8Value().c_str()));
28
- }
29
-
30
- Symbol FetchSymbolFromGlobalRegistry(const Napi::CallbackInfo& info) {
31
- String registrySymbol = info[0].As<String>();
32
- return MaybeUnwrap(Napi::Symbol::For(info.Env(), registrySymbol));
33
- }
34
-
35
- Symbol FetchSymbolFromGlobalRegistryWithCppKey(const Napi::CallbackInfo& info) {
36
- String cppStringKey = info[0].As<String>();
37
- return MaybeUnwrap(Napi::Symbol::For(info.Env(), cppStringKey.Utf8Value()));
38
- }
39
-
40
- Symbol FetchSymbolFromGlobalRegistryWithCKey(const Napi::CallbackInfo& info) {
41
- String cppStringKey = info[0].As<String>();
42
- return MaybeUnwrap(
43
- Napi::Symbol::For(info.Env(), cppStringKey.Utf8Value().c_str()));
44
- }
45
-
46
- Symbol TestUndefinedSymbolsCanBeCreated(const Napi::CallbackInfo& info) {
47
- Napi::Env env = info.Env();
48
- return MaybeUnwrap(Napi::Symbol::For(env, env.Undefined()));
49
- }
50
-
51
- Symbol TestNullSymbolsCanBeCreated(const Napi::CallbackInfo& info) {
52
- Napi::Env env = info.Env();
53
- return MaybeUnwrap(Napi::Symbol::For(env, env.Null()));
54
- }
55
-
56
- Object InitSymbol(Env env) {
57
- Object exports = Object::New(env);
58
-
59
- exports["createNewSymbolWithNoArgs"] =
60
- Function::New(env, CreateNewSymbolWithNoArgs);
61
- exports["createNewSymbolWithCppStr"] =
62
- Function::New(env, CreateNewSymbolWithCppStrDesc);
63
- exports["createNewSymbolWithCStr"] =
64
- Function::New(env, CreateNewSymbolWithCStrDesc);
65
- exports["createNewSymbolWithNapi"] =
66
- Function::New(env, CreateNewSymbolWithNapiString);
67
- exports["getWellKnownSymbol"] = Function::New(env, GetWellknownSymbol);
68
- exports["getSymbolFromGlobalRegistry"] =
69
- Function::New(env, FetchSymbolFromGlobalRegistry);
70
- exports["getSymbolFromGlobalRegistryWithCKey"] =
71
- Function::New(env, FetchSymbolFromGlobalRegistryWithCKey);
72
- exports["getSymbolFromGlobalRegistryWithCppKey"] =
73
- Function::New(env, FetchSymbolFromGlobalRegistryWithCppKey);
74
- exports["testUndefinedSymbolCanBeCreated"] =
75
- Function::New(env, TestUndefinedSymbolsCanBeCreated);
76
- exports["testNullSymbolCanBeCreated"] =
77
- Function::New(env, TestNullSymbolsCanBeCreated);
78
- return exports;
79
- }
@@ -1,66 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
-
5
- module.exports = require('./common').runTest(test);
6
-
7
- function test (binding) {
8
- const majorNodeVersion = process.versions.node.split('.')[0];
9
-
10
- const wellKnownSymbolFunctions = ['asyncIterator', 'hasInstance', 'isConcatSpreadable', 'iterator', 'match', 'replace', 'search', 'split', 'species', 'toPrimitive', 'toStringTag', 'unscopables'];
11
- if (majorNodeVersion >= 12) {
12
- wellKnownSymbolFunctions.push('matchAll');
13
- }
14
-
15
- function assertCanCreateSymbol (symbol) {
16
- assert(binding.symbol.createNewSymbolWithCppStr(symbol) !== null);
17
- assert(binding.symbol.createNewSymbolWithCStr(symbol) !== null);
18
- assert(binding.symbol.createNewSymbolWithNapi(symbol) !== null);
19
- }
20
-
21
- function assertSymbolAreUnique (symbol) {
22
- const symbolOne = binding.symbol.createNewSymbolWithCppStr(symbol);
23
- const symbolTwo = binding.symbol.createNewSymbolWithCppStr(symbol);
24
-
25
- assert(symbolOne !== symbolTwo);
26
- }
27
-
28
- function assertSymbolIsWellknown (symbol) {
29
- const symbOne = binding.symbol.getWellKnownSymbol(symbol);
30
- const symbTwo = binding.symbol.getWellKnownSymbol(symbol);
31
- assert(symbOne && symbTwo);
32
- assert(symbOne === symbTwo);
33
- }
34
-
35
- function assertSymbolIsNotWellknown (symbol) {
36
- const symbolTest = binding.symbol.getWellKnownSymbol(symbol);
37
- assert(symbolTest === undefined);
38
- }
39
-
40
- function assertCanCreateOrFetchGlobalSymbols (symbol, fetchFunction) {
41
- const symbOne = fetchFunction(symbol);
42
- const symbTwo = fetchFunction(symbol);
43
- assert(symbOne && symbTwo);
44
- assert(symbOne === symbTwo);
45
- }
46
-
47
- assertCanCreateSymbol('testing');
48
- assertSymbolAreUnique('symbol');
49
- assertSymbolIsNotWellknown('testing');
50
-
51
- for (const wellknownProperty of wellKnownSymbolFunctions) {
52
- assertSymbolIsWellknown(wellknownProperty);
53
- }
54
-
55
- assertCanCreateOrFetchGlobalSymbols('data', binding.symbol.getSymbolFromGlobalRegistry);
56
- assertCanCreateOrFetchGlobalSymbols('CppKey', binding.symbol.getSymbolFromGlobalRegistryWithCppKey);
57
- assertCanCreateOrFetchGlobalSymbols('CKey', binding.symbol.getSymbolFromGlobalRegistryWithCKey);
58
-
59
- assert(binding.symbol.createNewSymbolWithNoArgs() === undefined);
60
-
61
- // eslint-disable-next-line no-self-compare
62
- assert(binding.symbol.testNullSymbolCanBeCreated() === binding.symbol.testNullSymbolCanBeCreated());
63
- // eslint-disable-next-line no-self-compare
64
- assert(binding.symbol.testUndefinedSymbolCanBeCreated() === binding.symbol.testUndefinedSymbolCanBeCreated());
65
- assert(binding.symbol.testUndefinedSymbolCanBeCreated() !== binding.symbol.testNullSymbolCanBeCreated());
66
- }
@@ -1,54 +0,0 @@
1
- // Run each test function in sequence,
2
- // with an async delay and GC call between each.
3
-
4
- function tick (x) {
5
- return new Promise((resolve) => {
6
- setImmediate(function ontick () {
7
- if (--x === 0) {
8
- resolve();
9
- } else {
10
- setImmediate(ontick);
11
- }
12
- });
13
- });
14
- }
15
-
16
- async function runGCTests (tests) {
17
- // Break up test list into a list of lists of the form
18
- // [ [ 'test name', function() {}, ... ], ..., ].
19
- const testList = [];
20
- let currentTest;
21
- for (const item of tests) {
22
- if (typeof item === 'string') {
23
- currentTest = [];
24
- testList.push(currentTest);
25
- }
26
- currentTest.push(item);
27
- }
28
-
29
- for (const test of testList) {
30
- await (async function (test) {
31
- let title;
32
- for (let i = 0; i < test.length; i++) {
33
- if (i === 0) {
34
- title = test[i];
35
- } else {
36
- try {
37
- test[i]();
38
- } catch (e) {
39
- console.error('Test failed: ' + title);
40
- throw e;
41
- }
42
- if (i < tests.length - 1) {
43
- global.gc();
44
- await tick(10);
45
- }
46
- }
47
- }
48
- })(test);
49
- }
50
- }
51
-
52
- module.exports = {
53
- runGCTests
54
- };
@@ -1,230 +0,0 @@
1
- #include <chrono>
2
- #include <condition_variable>
3
- #include <mutex>
4
- #include <thread>
5
- #include "napi.h"
6
-
7
- #if (NAPI_VERSION > 3)
8
-
9
- using namespace Napi;
10
-
11
- constexpr size_t ARRAY_LENGTH = 10;
12
- constexpr size_t MAX_QUEUE_SIZE = 2;
13
-
14
- static std::thread threads[2];
15
- static ThreadSafeFunction s_tsfn;
16
-
17
- struct ThreadSafeFunctionInfo {
18
- enum CallType {
19
- DEFAULT,
20
- BLOCKING,
21
- NON_BLOCKING,
22
- NON_BLOCKING_DEFAULT,
23
- NON_BLOCKING_SINGLE_ARG
24
- } type;
25
- bool abort;
26
- bool startSecondary;
27
- FunctionReference jsFinalizeCallback;
28
- uint32_t maxQueueSize;
29
- bool closeCalledFromJs;
30
- std::mutex protect;
31
- std::condition_variable signal;
32
- } tsfnInfo;
33
-
34
- // Thread data to transmit to JS
35
- static int ints[ARRAY_LENGTH];
36
-
37
- static void SecondaryThread() {
38
- if (s_tsfn.Release() != napi_ok) {
39
- Error::Fatal("SecondaryThread", "ThreadSafeFunction.Release() failed");
40
- }
41
- }
42
-
43
- // Source thread producing the data
44
- static void DataSourceThread() {
45
- ThreadSafeFunctionInfo* info = s_tsfn.GetContext();
46
-
47
- if (info->startSecondary) {
48
- if (s_tsfn.Acquire() != napi_ok) {
49
- Error::Fatal("DataSourceThread", "ThreadSafeFunction.Acquire() failed");
50
- }
51
- threads[1] = std::thread(SecondaryThread);
52
- }
53
-
54
- bool queueWasFull = false;
55
- bool queueWasClosing = false;
56
-
57
- for (int index = ARRAY_LENGTH - 1; index > -1 && !queueWasClosing; index--) {
58
- napi_status status = napi_generic_failure;
59
-
60
- auto callback = [](Env env, Function jsCallback, int* data) {
61
- jsCallback.Call({Number::New(env, *data)});
62
- };
63
-
64
- auto noArgCallback = [](Env env, Function jsCallback) {
65
- jsCallback.Call({Number::New(env, 42)});
66
- };
67
-
68
- switch (info->type) {
69
- case ThreadSafeFunctionInfo::DEFAULT:
70
- status = s_tsfn.BlockingCall();
71
- break;
72
- case ThreadSafeFunctionInfo::BLOCKING:
73
- status = s_tsfn.BlockingCall(&ints[index], callback);
74
- break;
75
- case ThreadSafeFunctionInfo::NON_BLOCKING:
76
- status = s_tsfn.NonBlockingCall(&ints[index], callback);
77
- break;
78
- case ThreadSafeFunctionInfo::NON_BLOCKING_DEFAULT:
79
- status = s_tsfn.NonBlockingCall();
80
- break;
81
-
82
- case ThreadSafeFunctionInfo::NON_BLOCKING_SINGLE_ARG:
83
- status = s_tsfn.NonBlockingCall(noArgCallback);
84
- break;
85
- }
86
-
87
- if (info->abort && (info->type == ThreadSafeFunctionInfo::BLOCKING ||
88
- info->type == ThreadSafeFunctionInfo::DEFAULT)) {
89
- // Let's make this thread really busy to give the main thread a chance to
90
- // abort / close.
91
- std::unique_lock<std::mutex> lk(info->protect);
92
- while (!info->closeCalledFromJs) {
93
- info->signal.wait(lk);
94
- }
95
- }
96
-
97
- switch (status) {
98
- case napi_queue_full:
99
- queueWasFull = true;
100
- index++;
101
- // fall through
102
-
103
- case napi_ok:
104
- continue;
105
-
106
- case napi_closing:
107
- queueWasClosing = true;
108
- break;
109
-
110
- default:
111
- Error::Fatal("DataSourceThread", "ThreadSafeFunction.*Call() failed");
112
- }
113
- }
114
-
115
- if (info->type == ThreadSafeFunctionInfo::NON_BLOCKING && !queueWasFull) {
116
- Error::Fatal("DataSourceThread", "Queue was never full");
117
- }
118
-
119
- if (info->abort && !queueWasClosing) {
120
- Error::Fatal("DataSourceThread", "Queue was never closing");
121
- }
122
-
123
- if (!queueWasClosing && s_tsfn.Release() != napi_ok) {
124
- Error::Fatal("DataSourceThread", "ThreadSafeFunction.Release() failed");
125
- }
126
- }
127
-
128
- static Value StopThread(const CallbackInfo& info) {
129
- tsfnInfo.jsFinalizeCallback = Napi::Persistent(info[0].As<Function>());
130
- bool abort = info[1].As<Boolean>();
131
- if (abort) {
132
- s_tsfn.Abort();
133
- } else {
134
- s_tsfn.Release();
135
- }
136
- {
137
- std::lock_guard<std::mutex> _(tsfnInfo.protect);
138
- tsfnInfo.closeCalledFromJs = true;
139
- tsfnInfo.signal.notify_one();
140
- }
141
- return Value();
142
- }
143
-
144
- // Join the thread and inform JS that we're done.
145
- static void JoinTheThreads(Env /* env */,
146
- std::thread* theThreads,
147
- ThreadSafeFunctionInfo* info) {
148
- theThreads[0].join();
149
- if (info->startSecondary) {
150
- theThreads[1].join();
151
- }
152
-
153
- info->jsFinalizeCallback.Call({});
154
- info->jsFinalizeCallback.Reset();
155
- }
156
-
157
- static Value StartThreadInternal(const CallbackInfo& info,
158
- ThreadSafeFunctionInfo::CallType type) {
159
- tsfnInfo.type = type;
160
- tsfnInfo.abort = info[1].As<Boolean>();
161
- tsfnInfo.startSecondary = info[2].As<Boolean>();
162
- tsfnInfo.maxQueueSize = info[3].As<Number>().Uint32Value();
163
- tsfnInfo.closeCalledFromJs = false;
164
-
165
- s_tsfn = ThreadSafeFunction::New(info.Env(),
166
- info[0].As<Function>(),
167
- "Test",
168
- tsfnInfo.maxQueueSize,
169
- 2,
170
- &tsfnInfo,
171
- JoinTheThreads,
172
- threads);
173
-
174
- threads[0] = std::thread(DataSourceThread);
175
-
176
- return Value();
177
- }
178
-
179
- static Value Release(const CallbackInfo& /* info */) {
180
- if (s_tsfn.Release() != napi_ok) {
181
- Error::Fatal("Release", "ThreadSafeFunction.Release() failed");
182
- }
183
- return Value();
184
- }
185
-
186
- static Value StartThread(const CallbackInfo& info) {
187
- return StartThreadInternal(info, ThreadSafeFunctionInfo::BLOCKING);
188
- }
189
-
190
- static Value StartThreadNonblocking(const CallbackInfo& info) {
191
- return StartThreadInternal(info, ThreadSafeFunctionInfo::NON_BLOCKING);
192
- }
193
-
194
- static Value StartThreadNoNative(const CallbackInfo& info) {
195
- return StartThreadInternal(info, ThreadSafeFunctionInfo::DEFAULT);
196
- }
197
-
198
- static Value StartThreadNonblockingNoNative(const CallbackInfo& info) {
199
- return StartThreadInternal(info,
200
- ThreadSafeFunctionInfo::NON_BLOCKING_DEFAULT);
201
- }
202
-
203
- static Value StartThreadNonBlockingSingleArg(const CallbackInfo& info) {
204
- return StartThreadInternal(info,
205
- ThreadSafeFunctionInfo::NON_BLOCKING_SINGLE_ARG);
206
- }
207
-
208
- Object InitThreadSafeFunction(Env env) {
209
- for (size_t index = 0; index < ARRAY_LENGTH; index++) {
210
- ints[index] = index;
211
- }
212
-
213
- Object exports = Object::New(env);
214
- exports["ARRAY_LENGTH"] = Number::New(env, ARRAY_LENGTH);
215
- exports["MAX_QUEUE_SIZE"] = Number::New(env, MAX_QUEUE_SIZE);
216
- exports["startThread"] = Function::New(env, StartThread);
217
- exports["startThreadNoNative"] = Function::New(env, StartThreadNoNative);
218
- exports["startThreadNonblockingNoNative"] =
219
- Function::New(env, StartThreadNonblockingNoNative);
220
- exports["startThreadNonblocking"] =
221
- Function::New(env, StartThreadNonblocking);
222
- exports["startThreadNonblockSingleArg"] =
223
- Function::New(env, StartThreadNonBlockingSingleArg);
224
- exports["stopThread"] = Function::New(env, StopThread);
225
- exports["release"] = Function::New(env, Release);
226
-
227
- return exports;
228
- }
229
-
230
- #endif
@@ -1,225 +0,0 @@
1
- 'use strict';
2
-
3
- const assert = require('assert');
4
- const common = require('../common');
5
-
6
- module.exports = common.runTest(test);
7
-
8
- // Main test body
9
- async function test (binding) {
10
- const expectedArray = (function (arrayLength) {
11
- const result = [];
12
- for (let index = 0; index < arrayLength; index++) {
13
- result.push(arrayLength - 1 - index);
14
- }
15
- return result;
16
- })(binding.threadsafe_function.ARRAY_LENGTH);
17
-
18
- const expectedDefaultArray = Array.from({ length: binding.threadsafe_function.ARRAY_LENGTH }, (_, i) => 42);
19
-
20
- function testWithJSMarshaller ({
21
- threadStarter,
22
- quitAfter,
23
- abort,
24
- maxQueueSize,
25
- launchSecondary
26
- }) {
27
- return new Promise((resolve) => {
28
- const array = [];
29
- binding.threadsafe_function[threadStarter](function testCallback (value) {
30
- array.push(value);
31
- if (array.length === quitAfter) {
32
- binding.threadsafe_function.stopThread(common.mustCall(() => {
33
- resolve(array);
34
- }), !!abort);
35
- }
36
- }, !!abort, !!launchSecondary, maxQueueSize);
37
- if ((threadStarter === 'startThreadNonblocking' || threadStarter === 'startThreadNonblockSingleArg')) {
38
- // Let's make this thread really busy for a short while to ensure that
39
- // the queue fills and the thread receives a napi_queue_full.
40
- const start = Date.now();
41
- while (Date.now() - start < 200);
42
- }
43
- });
44
- }
45
-
46
- function testWithoutJSMarshallers (nativeFunction) {
47
- return new Promise((resolve) => {
48
- let callCount = 0;
49
- nativeFunction(function testCallback () {
50
- callCount++;
51
-
52
- // The default call-into-JS implementation passes no arguments.
53
- assert.strictEqual(arguments.length, 0);
54
- if (callCount === binding.threadsafe_function.ARRAY_LENGTH) {
55
- setImmediate(() => {
56
- binding.threadsafe_function.stopThread(common.mustCall(() => {
57
- resolve();
58
- }), false);
59
- });
60
- }
61
- }, false /* abort */, false /* launchSecondary */,
62
- binding.threadsafe_function.MAX_QUEUE_SIZE);
63
- });
64
- }
65
-
66
- await testWithoutJSMarshallers(binding.threadsafe_function.startThreadNoNative);
67
- await testWithoutJSMarshallers(binding.threadsafe_function.startThreadNonblockingNoNative);
68
-
69
- // Start the thread in blocking mode, and assert that all values are passed.
70
- // Quit after it's done.
71
- assert.deepStrictEqual(
72
- await testWithJSMarshaller({
73
- threadStarter: 'startThread',
74
- maxQueueSize: binding.threadsafe_function.MAX_QUEUE_SIZE,
75
- quitAfter: binding.threadsafe_function.ARRAY_LENGTH
76
- }),
77
- expectedArray
78
- );
79
-
80
- // Start the thread in blocking mode with an infinite queue, and assert that
81
- // all values are passed. Quit after it's done.
82
- assert.deepStrictEqual(
83
- await testWithJSMarshaller({
84
- threadStarter: 'startThread',
85
- maxQueueSize: 0,
86
- quitAfter: binding.threadsafe_function.ARRAY_LENGTH
87
- }),
88
- expectedArray
89
- );
90
-
91
- // Start the thread in non-blocking mode, and assert that all values are
92
- // passed. Quit after it's done.
93
- assert.deepStrictEqual(
94
- await testWithJSMarshaller({
95
- threadStarter: 'startThreadNonblocking',
96
- maxQueueSize: binding.threadsafe_function.MAX_QUEUE_SIZE,
97
- quitAfter: binding.threadsafe_function.ARRAY_LENGTH
98
- }),
99
- expectedArray
100
- );
101
-
102
- // Start the thread in blocking mode, and assert that all values are passed.
103
- // Quit early, but let the thread finish.
104
- assert.deepStrictEqual(
105
- await testWithJSMarshaller({
106
- threadStarter: 'startThread',
107
- maxQueueSize: binding.threadsafe_function.MAX_QUEUE_SIZE,
108
- quitAfter: 1
109
- }),
110
- expectedArray
111
- );
112
-
113
- // Start the thread in blocking mode with an infinite queue, and assert that
114
- // all values are passed. Quit early, but let the thread finish.
115
- assert.deepStrictEqual(
116
- await testWithJSMarshaller({
117
- threadStarter: 'startThread',
118
- maxQueueSize: 0,
119
- quitAfter: 1
120
- }),
121
- expectedArray
122
- );
123
-
124
- // Start the thread in non-blocking mode, and assert that all values are
125
- // passed. Quit early, but let the thread finish.
126
- assert.deepStrictEqual(
127
- await testWithJSMarshaller({
128
- threadStarter: 'startThreadNonblocking',
129
- maxQueueSize: binding.threadsafe_function.MAX_QUEUE_SIZE,
130
- quitAfter: 1
131
- }),
132
- expectedArray
133
- );
134
-
135
- assert.deepStrictEqual(
136
- await testWithJSMarshaller({
137
- threadStarter: 'startThreadNonblockSingleArg',
138
- maxQueueSize: binding.threadsafe_function.MAX_QUEUE_SIZE,
139
- quitAfter: 1
140
- }),
141
- expectedDefaultArray
142
- );
143
-
144
- // Start the thread in blocking mode, and assert that all values are passed.
145
- // Quit early, but let the thread finish. Launch a secondary thread to test
146
- // the reference counter incrementing functionality.
147
- assert.deepStrictEqual(
148
- await testWithJSMarshaller({
149
- threadStarter: 'startThread',
150
- quitAfter: 1,
151
- maxQueueSize: binding.threadsafe_function.MAX_QUEUE_SIZE,
152
- launchSecondary: true
153
- }),
154
- expectedArray
155
- );
156
-
157
- // Start the thread in non-blocking mode, and assert that all values are
158
- // passed. Quit early, but let the thread finish. Launch a secondary thread
159
- // to test the reference counter incrementing functionality.
160
- assert.deepStrictEqual(
161
- await testWithJSMarshaller({
162
- threadStarter: 'startThreadNonblocking',
163
- quitAfter: 1,
164
- maxQueueSize: binding.threadsafe_function.MAX_QUEUE_SIZE,
165
- launchSecondary: true
166
- }),
167
- expectedArray
168
- );
169
-
170
- assert.deepStrictEqual(
171
- await testWithJSMarshaller({
172
- threadStarter: 'startThreadNonblockSingleArg',
173
- maxQueueSize: binding.threadsafe_function.MAX_QUEUE_SIZE,
174
- quitAfter: 1,
175
- launchSecondary: true
176
- }),
177
- expectedDefaultArray
178
- );
179
-
180
- // Start the thread in blocking mode, and assert that it could not finish.
181
- // Quit early by aborting.
182
- assert.strictEqual(
183
- (await testWithJSMarshaller({
184
- threadStarter: 'startThread',
185
- quitAfter: 1,
186
- maxQueueSize: binding.threadsafe_function.MAX_QUEUE_SIZE,
187
- abort: true
188
- })).indexOf(0),
189
- -1
190
- );
191
-
192
- // Start the thread in blocking mode with an infinite queue, and assert that
193
- // it could not finish. Quit early by aborting.
194
- assert.strictEqual(
195
- (await testWithJSMarshaller({
196
- threadStarter: 'startThread',
197
- quitAfter: 1,
198
- maxQueueSize: 0,
199
- abort: true
200
- })).indexOf(0),
201
- -1
202
- );
203
-
204
- // Start the thread in non-blocking mode, and assert that it could not finish.
205
- // Quit early and aborting.
206
- assert.strictEqual(
207
- (await testWithJSMarshaller({
208
- threadStarter: 'startThreadNonblocking',
209
- quitAfter: 1,
210
- maxQueueSize: binding.threadsafe_function.MAX_QUEUE_SIZE,
211
- abort: true
212
- })).indexOf(0),
213
- -1
214
- );
215
-
216
- assert.strictEqual(
217
- (await testWithJSMarshaller({
218
- threadStarter: 'startThreadNonblockSingleArg',
219
- quitAfter: 1,
220
- maxQueueSize: binding.threadsafe_function.MAX_QUEUE_SIZE,
221
- abort: true
222
- })).indexOf(0),
223
- -1
224
- );
225
- }