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,68 +0,0 @@
1
- # Creating a release
2
-
3
- Only collaborators in npm for **node-api-headers** can create releases. If you
4
- want to be able to do releases ask one of the existing collaborators to add
5
- you. If necessary you can ask the build Working Group who manages the Node.js
6
- npm user to add you if there are no other active collaborators.
7
-
8
- Generally, the release is handled by the
9
- [release-please](https://github.com/nodejs/node-api-headers/blob/main/.github/workflows/release-please.yml)
10
- GitHub action. It will bump the version in `package.json` and publish
11
- node-api-headers to npm.
12
-
13
- In cases that the release-please action is not working, please follow the steps
14
- below to publish node-api-headers manually.
15
-
16
- ## Publish new release manually
17
-
18
- ### Prerequisites
19
-
20
- Before to start creating a new release check if you have installed the following
21
- tools:
22
-
23
- * [Changelog maker](https://www.npmjs.com/package/changelog-maker)
24
-
25
- If not please follow the instruction reported in the tool's documentation to
26
- install it.
27
-
28
- ### Steps
29
-
30
- These are the steps to follow to create a new release:
31
-
32
- * Open an issue in the **node-api-headers** repo documenting the intent to
33
- create a new release. Give people some time to comment or suggest PRs that
34
- should land first.
35
-
36
- * Update the version in **package.json** appropriately.
37
-
38
- * Update the [README.md][] to show the latest stable version of Node-API.
39
-
40
- * Generate the changelog for the new version using **changelog maker** tool.
41
- From the root folder of the repo launch the following command:
42
-
43
- ```bash
44
- > changelog-maker --format=markdown
45
- ```
46
-
47
- * Use the output generated by **changelog maker** to update the
48
- [CHANGELOG.md][] following the style used in publishing the previous release.
49
-
50
- * Add any new contributors to the "contributors" section in the
51
- **package.json**.
52
-
53
- * Do a clean checkout of `node-api-headers`.
54
-
55
- * Login and then run `npm publish`.
56
-
57
- * Create a release in Github (look at existing releases for an example).
58
-
59
- * Validate that you can run `npm install node-api-headers` successfully
60
- and that the correct version is installed.
61
-
62
- * Comment on the issue opened in the first step that the release has been created
63
- and close the issue.
64
-
65
- * Tweet that the release has been created.
66
-
67
- [README.md]: ./README.md
68
- [CHANGELOG.md]: ./CHANGELOG.md
@@ -1,17 +0,0 @@
1
- 'use strict'
2
-
3
- const path = require('path');
4
- const symbols = require('./symbols');
5
-
6
- const include_dir = path.resolve(__dirname, 'include');
7
- const defRoot = path.resolve(__dirname, 'def')
8
- const def_paths = {
9
- js_native_api_def: path.join(defRoot, 'js_native_api.def'),
10
- node_api_def: path.join(defRoot, 'node_api.def')
11
- }
12
-
13
- module.exports = {
14
- include_dir,
15
- def_paths,
16
- symbols
17
- }
@@ -1,50 +0,0 @@
1
- 'use strict';
2
-
3
- const { spawn } = require('child_process');
4
-
5
- /**
6
- * @param {Array<string>} [args]
7
- * @returns {Promise<{exitCode: number | null, stdout: string, stderr: string}>}
8
- */
9
- async function runClang(args = []) {
10
- try {
11
- const { exitCode, stdout, stderr } = await new Promise((resolve, reject) => {
12
- const spawned = spawn('clang',
13
- ['-Xclang', ...args]
14
- );
15
-
16
- let stdout = '';
17
- let stderr = '';
18
-
19
- spawned.stdout?.on('data', (data) => {
20
- stdout += data.toString('utf-8');
21
- });
22
- spawned.stderr?.on('data', (data) => {
23
- stderr += data.toString('utf-8');
24
- });
25
-
26
- spawned.on('exit', function (exitCode) {
27
- resolve({ exitCode, stdout, stderr });
28
- });
29
-
30
- spawned.on('error', function (err) {
31
- reject(err);
32
- });
33
- });
34
-
35
- if (exitCode !== 0) {
36
- throw new Error(`clang exited with non-zero exit code ${exitCode}. stderr: ${stderr ? stderr : '<empty>'}`);
37
- }
38
-
39
- return { exitCode, stdout, stderr };
40
- } catch (err) {
41
- if (err.code === 'ENOENT') {
42
- throw new Error('This tool requires clang to be installed.');
43
- }
44
- throw err;
45
- }
46
- }
47
-
48
- module.exports = {
49
- runClang
50
- };
@@ -1,92 +0,0 @@
1
- const parser = require("acorn");
2
-
3
- /**
4
- * @param {string} text Code to evaluate
5
- * @returns {boolean | undefined} The result of the evaluation, `undefined` if
6
- * parsing failed or the result is unknown.
7
- */
8
- function evaluate(text) {
9
- try {
10
- const ast = parser.parse(text, { ecmaVersion: 2020 });
11
-
12
- const expressionStatement = ast.body[0];
13
-
14
- if (expressionStatement.type !== "ExpressionStatement") {
15
- throw new Error("Expected an ExpressionStatement");
16
- }
17
-
18
- return visitExpression(expressionStatement.expression);
19
- } catch {
20
- // Return an unknown result if parsing failed
21
- return undefined;
22
- }
23
- }
24
-
25
- /**
26
- * @param {import("acorn").Expression} node
27
- */
28
- const visitExpression = (node) => {
29
- if (node.type === "LogicalExpression") {
30
- return visitLogicalExpression(node);
31
- } else if (node.type === "UnaryExpression") {
32
- return visitUnaryExpression(node);
33
- } else if (node.type === "CallExpression") {
34
- return visitCallExpression(node);
35
- } else {
36
- throw new Error(`Unknown node type: ${node.type} ${JSON.stringify(node)}`);
37
- }
38
- };
39
-
40
- /**
41
- * @param {import("acorn").LogicalExpression} node
42
- */
43
- const visitLogicalExpression = (node) => {
44
- const left = visitExpression(node.left);
45
- const right = visitExpression(node.right);
46
-
47
- if (node.operator === "&&") {
48
- // We can shortcircuit regardless of `unknown` if either are false.
49
- if (left === false || right === false) {
50
- return false;
51
- } else if (left === undefined || right === undefined) {
52
- return undefined;
53
- } else {
54
- return left && right;
55
- }
56
- } else if (node.operator === "||") {
57
- if (left === undefined || right === undefined) {
58
- return undefined;
59
- } else {
60
- return left || right;
61
- }
62
- }
63
- };
64
-
65
- /**
66
- * @param {import("acorn").UnaryExpression} node
67
- */
68
- const visitUnaryExpression = (node) => {
69
- const argument = visitExpression(node.argument);
70
- if (typeof argument === 'boolean') {
71
- return !argument;
72
- }
73
- };
74
-
75
- /**
76
- * @param {import("acorn").CallExpression} node
77
- */
78
- const visitCallExpression = (node) => {
79
- const isDefinedExperimentalCall =
80
- // is `defined(arg)` call
81
- node.callee.type === 'Identifier' && node.callee.name === 'defined' && node.arguments.length == 1
82
- // and that arg is `NAPI_EXPERIMENTAL`
83
- && node.arguments[0].type === 'Identifier' && node.arguments[0].name === 'NAPI_EXPERIMENTAL';
84
-
85
- if (isDefinedExperimentalCall) {
86
- return false;
87
- }
88
- };
89
-
90
- module.exports = {
91
- evaluate
92
- };
@@ -1,59 +0,0 @@
1
- {
2
- "bugs": {
3
- "url": "https://github.com/nodejs/node-api-headers/issues"
4
- },
5
- "contributors": [
6
- {
7
- "name": "Gabriel Schulhof",
8
- "url": "https://github.com/gabrielschulhof"
9
- },
10
- {
11
- "name": "Jim Schlight",
12
- "url": "https://github.com/jschlight"
13
- },
14
- {
15
- "name": "Kevin Eady",
16
- "url": "https://github.com/KevinEady"
17
- },
18
- {
19
- "name": "legendecas",
20
- "url": "https://github.com/legendecas"
21
- },
22
- {
23
- "name": "Leonid Pospelov",
24
- "url": "https://github.com/Pospelove"
25
- },
26
- {
27
- "name": "Michael Dawson",
28
- "url": "https://github.com/mhdawson"
29
- },
30
- {
31
- "name": "Nicola Del Gobbo",
32
- "url": "https://github.com/NickNaso"
33
- }
34
- ],
35
- "description": "Node-API headers",
36
- "devDependencies": {
37
- "acorn": "^8.12.1"
38
- },
39
- "directories": {},
40
- "gypfile": false,
41
- "homepage": "https://github.com/nodejs/node-api-headers",
42
- "keywords": [],
43
- "license": "MIT",
44
- "main": "index.js",
45
- "name": "node-api-headers",
46
- "readme": "README.md",
47
- "repository": {
48
- "type": "git",
49
- "url": "git://github.com/nodejs/node-api-headers.git"
50
- },
51
- "scripts": {
52
- "update-headers": "node --no-warnings scripts/update-headers.js",
53
- "write-symbols": "node --no-warnings scripts/write-symbols.js",
54
- "write-win32-def": "node --no-warnings scripts/write-win32-def.js",
55
- "test": "node test/parse-utils.js "
56
- },
57
- "version": "1.8.0",
58
- "support": true
59
- }
@@ -1,12 +0,0 @@
1
- {
2
- "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3
- "release-type": "node",
4
- "pull-request-title-pattern": "chore: release v${version}",
5
- "bootstrap-sha": "9d78c7da25c5f90617600e23d2a8e7a23288f1ae",
6
- "packages": {
7
- ".": {
8
- "include-component-in-tag": false,
9
- "changelog-path": "CHANGELOG.md"
10
- }
11
- }
12
- }
@@ -1,246 +0,0 @@
1
- 'use strict';
2
-
3
- const { writeFile } = require('fs/promises');
4
- const { Readable } = require('stream');
5
- const { resolve } = require('path');
6
- const { parseArgs } = require('util')
7
- const { createInterface } = require('readline');
8
- const { inspect } = require('util');
9
- const { runClang } = require('../lib/clang-utils');
10
- const { evaluate } = require('../lib/parse-utils');
11
-
12
- /**
13
- * @returns {Promise<string>} Version string, eg. `'v19.6.0'`.
14
- */
15
- async function getLatestReleaseVersion() {
16
- const response = await fetch('https://nodejs.org/download/release/index.json');
17
- const json = await response.json();
18
- return json[0].version;
19
- }
20
-
21
- /**
22
- * @param {NodeJS.ReadableStream} stream
23
- * @param {string} destination
24
- * @param {boolean} verbose
25
- * @returns {Promise<void>} The `writeFile` Promise.
26
- */
27
- function removeExperimentals(stream, destination, verbose = false) {
28
- return new Promise((resolve, reject) => {
29
- const debug = (...args) => {
30
- if (verbose) {
31
- console.log(...args);
32
- }
33
- };
34
- const rl = createInterface(stream);
35
-
36
- /** @type {Array<'write' | 'ignore' | 'preprocessor'>} */
37
- const mode = ['write'];
38
-
39
- /** @type {Array<string>} */
40
- const preprocessor = [];
41
-
42
- /** @type {Array<string>} */
43
- const macroStack = [];
44
-
45
- /** @type {RegExpMatchArray | null} */
46
- let matches;
47
-
48
- let lineNumber = 0;
49
- let toWrite = '';
50
-
51
- const handlePreprocessor = (expression) => {
52
- const result = evaluate(expression);
53
-
54
- macroStack.push(expression);
55
-
56
- if (result === false) {
57
- debug(`Line ${lineNumber} Ignored '${expression}'`);
58
- mode.push('ignore');
59
- return false;
60
- } else {
61
- debug(`Line ${lineNumber} Pushed '${expression}'`);
62
- mode.push('write');
63
- return true;
64
- }
65
- };
66
-
67
- rl.on('line', function lineHandler(line) {
68
- ++lineNumber;
69
- if (matches = line.match(/^\s*#if(n)?def\s+([A-Za-z_][A-Za-z0-9_]*)/)) {
70
- const negated = Boolean(matches[1]);
71
- const identifier = matches[2];
72
- macroStack.push(identifier);
73
-
74
- if (mode.length && mode[mode.length - 1] === 'ignore') {
75
- debug(`Line ${lineNumber} Continued-Ignored ${identifier}`);
76
- mode.push('ignore');
77
- return;
78
- }
79
-
80
- debug(`Line ${lineNumber} Pushed ${identifier}`);
81
-
82
- if (identifier === 'NAPI_EXPERIMENTAL') {
83
- if (negated) {
84
- mode.push('write');
85
- } else {
86
- mode.push('ignore');
87
- }
88
- return;
89
- } else {
90
- mode.push('write');
91
- }
92
- }
93
- else if (matches = line.match(/^\s*#if\s+(.+)$/)) {
94
- const expression = matches[1];
95
- if (expression.endsWith('\\')) {
96
- if (preprocessor.length) {
97
- reject(new Error(`Unexpected preprocessor continuation on line ${lineNumber}`));
98
- return;
99
- }
100
- preprocessor.push(expression.substring(0, expression.length - 1));
101
-
102
- mode.push('preprocessor');
103
- return;
104
- } else {
105
- if (!handlePreprocessor(expression)) {
106
- return;
107
- }
108
- }
109
- }
110
- else if (line.match(/^#else(?:\s+|$)/)) {
111
- const identifier = macroStack[macroStack.length - 1];
112
-
113
- debug(`Line ${lineNumber} Peeked ${identifier}`);
114
-
115
- if (!identifier) {
116
- rl.off('line', lineHandler);
117
- reject(new Error(`Macro stack is empty handling #else on line ${lineNumber}`));
118
- return;
119
- }
120
-
121
- if (identifier.indexOf('NAPI_EXPERIMENTAL') > -1) {
122
- const lastMode = mode[mode.length - 1];
123
- mode[mode.length - 1] = (lastMode === 'ignore') ? 'write' : 'ignore';
124
- return;
125
- }
126
- }
127
- else if (line.match(/^\s*#endif(?:\s+|$)/)) {
128
- const identifier = macroStack.pop();
129
- mode.pop();
130
-
131
- debug(`Line ${lineNumber} Popped ${identifier}`);
132
-
133
- if (!identifier) {
134
- rl.off('line', lineHandler);
135
- reject(new Error(`Macro stack is empty handling #endif on line ${lineNumber}`));
136
- return;
137
- }
138
-
139
- if (identifier.indexOf('NAPI_EXPERIMENTAL') > -1) {
140
- return;
141
- }
142
- }
143
-
144
- if (mode.length === 0) {
145
- rl.off('line', lineHandler);
146
- reject(new Error(`Write mode empty handling #endif on line ${lineNumber}`));
147
- return;
148
- }
149
-
150
- if (mode[mode.length - 1] === 'write') {
151
- toWrite += `${line}\n`;
152
- } else if (mode[mode.length - 1] === 'preprocessor') {
153
- if (!preprocessor) {
154
- reject(new Error(`Preprocessor mode without preprocessor on line ${lineNumber}`));
155
- return;
156
- }
157
-
158
- if (line.endsWith('\\')) {
159
- preprocessor.push(line.substring(0, line.length - 1));
160
- return;
161
- }
162
-
163
- preprocessor.push(line);
164
-
165
- const expression = preprocessor.join('');
166
- preprocessor.length = 0;
167
- mode.pop();
168
-
169
- if (!handlePreprocessor(expression)) {
170
- return;
171
- }
172
- }
173
-
174
- });
175
-
176
- rl.on('close', () => {
177
- if (macroStack.length > 0) {
178
- reject(new Error(`Macro stack is not empty at EOF: ${inspect(macroStack)}`));
179
- }
180
- else if (mode.length > 1) {
181
- reject(new Error(`Write mode greater than 1 at EOF: ${inspect(mode)}`));
182
- }
183
- else if (toWrite.match(/^\s*#if(?:n)?def\s+NAPI_EXPERIMENTAL/m)) {
184
- reject(new Error(`Output has match for NAPI_EXPERIMENTAL`));
185
- }
186
- else {
187
- resolve(writeFile(destination, toWrite));
188
- }
189
- });
190
- });
191
- }
192
-
193
- /**
194
- * Validate syntax for a file using clang.
195
- * @param {string} path Path for file to validate with clang.
196
- */
197
- async function validateSyntax(path) {
198
- try {
199
- await runClang(['-fsyntax-only', path]);
200
- } catch (e) {
201
- throw new Error(`Syntax validation failed for ${path}: ${e}`);
202
- }
203
- }
204
-
205
- async function main() {
206
- const { values: { tag, verbose } } = parseArgs({
207
- options: {
208
- tag: {
209
- type: 'string',
210
- short: 't',
211
- default: await getLatestReleaseVersion()
212
- },
213
- verbose: {
214
- type: 'boolean',
215
- short: 'v',
216
- },
217
- },
218
- });
219
-
220
- console.log(`feat: update headers from nodejs/node tag ${tag}`);
221
-
222
- const files = ['js_native_api_types.h', 'js_native_api.h', 'node_api_types.h', 'node_api.h'];
223
-
224
- for (const filename of files) {
225
- const url = `https://raw.githubusercontent.com/nodejs/node/${tag}/src/${filename}`;
226
- const path = resolve(__dirname, '..', 'include', filename);
227
-
228
- if (verbose) {
229
- console.log(` ${url} -> ${path}`);
230
- }
231
-
232
- const response = await fetch(url);
233
- if (!response.ok) {
234
- throw new Error(`Fetch of ${url} returned ${response.status} ${response.statusText}`);
235
- }
236
-
237
- await removeExperimentals(Readable.fromWeb(response.body), path, verbose);
238
-
239
- await validateSyntax(path);
240
- }
241
- }
242
-
243
- main().catch(e => {
244
- console.error(e);
245
- process.exitCode = 1;
246
- });
@@ -1,154 +0,0 @@
1
- 'use strict';
2
-
3
- const { resolve: resolvePath } = require('path');
4
- const { writeFile } = require('fs/promises');
5
- const { runClang } = require('../lib/clang-utils');
6
-
7
- /** @typedef {{ js_native_api_symbols: string[]; node_api_symbols: string[]; }} SymbolInfo */
8
-
9
- /**
10
- * @param {number} [version]
11
- * @returns {Promise<SymbolInfo>}
12
- */
13
- async function getSymbolsForVersion(version) {
14
- try {
15
- const { stdout } = await runClang([ '-ast-dump=json', '-fsyntax-only', '-fno-diagnostics-color', `-DNAPI_VERSION=${version}`, resolvePath(__dirname, '..', 'include', 'node_api.h')])
16
-
17
- const ast = JSON.parse(stdout);
18
-
19
- /** @type {SymbolInfo} */
20
- const symbols = { js_native_api_symbols: [], node_api_symbols: [] };
21
-
22
- for (const statement of ast.inner) {
23
- if (statement.kind !== 'FunctionDecl') {
24
- continue;
25
- }
26
-
27
- const name = statement.name;
28
- const file = statement.loc.includedFrom?.file;
29
-
30
- if (file) {
31
- symbols.js_native_api_symbols.push(name);
32
- } else {
33
- symbols.node_api_symbols.push(name);
34
- }
35
- }
36
-
37
- symbols.js_native_api_symbols.sort();
38
- symbols.node_api_symbols.sort();
39
-
40
- return symbols;
41
- } catch (err) {
42
- if (err.code === 'ENOENT') {
43
- throw new Error('This tool requires clang to be installed.');
44
- }
45
- throw err;
46
- }
47
- }
48
-
49
- /** @returns {Promise<{maxVersion: number, symbols: {[x: string]: SymbolInfo}}>} */
50
- async function getAllSymbols() {
51
- /** @type {{[x: string]: SymbolInfo}} */
52
- const allSymbols = {};
53
- let version = 1;
54
-
55
- console.log('Processing symbols from clang:')
56
- while (true) {
57
- const symbols = await getSymbolsForVersion(version);
58
-
59
- if (version > 1) {
60
- const previousSymbols = allSymbols[`v${version - 1}`];
61
- if (previousSymbols.js_native_api_symbols.length == symbols.js_native_api_symbols.length && previousSymbols.node_api_symbols.length === symbols.node_api_symbols.length) {
62
- --version;
63
- break;
64
- }
65
- }
66
- allSymbols[`v${version}`] = symbols;
67
- console.log(` v${version}: ${symbols.js_native_api_symbols.length} js_native_api_symbols, ${symbols.node_api_symbols.length} node_api_symbols`);
68
- ++version;
69
- }
70
-
71
- return {
72
- maxVersion: version,
73
- symbols: allSymbols
74
- };
75
- }
76
-
77
- /**
78
- * @param {SymbolInfo} previousSymbols
79
- * @param {SymbolInfo} currentSymbols
80
- * @returns {SymbolInfo}
81
- */
82
- function getUniqueSymbols(previousSymbols, currentSymbols) {
83
- /** @type {SymbolInfo} */
84
- const symbols = { js_native_api_symbols: [], node_api_symbols: [] };
85
- for (const symbol of currentSymbols.js_native_api_symbols) {
86
- if (!previousSymbols.js_native_api_symbols.includes(symbol)) {
87
- symbols.js_native_api_symbols.push(symbol);
88
- }
89
- }
90
- for (const symbol of currentSymbols.node_api_symbols) {
91
- if (!previousSymbols.node_api_symbols.includes(symbol)) {
92
- symbols.node_api_symbols.push(symbol);
93
- }
94
- }
95
- return symbols;
96
- }
97
-
98
- /**
99
- * @param {string[]} strings
100
- */
101
- function joinStrings(strings, prependNewLine = false) {
102
- if (strings.length === 0) return '';
103
- return `${prependNewLine ? ',\n ' : ''}'${strings.join("',\n '")}'`;
104
- }
105
-
106
- async function getSymbolData() {
107
- const { maxVersion, symbols } = await getAllSymbols();
108
-
109
- let data = `'use strict'
110
-
111
- const v1 = {
112
- js_native_api_symbols: [
113
- ${joinStrings(symbols.v1.js_native_api_symbols)}
114
- ],
115
- node_api_symbols: [
116
- ${joinStrings(symbols.v1.node_api_symbols)}
117
- ]
118
- }
119
- `;
120
-
121
- for (let version = 2; version <= maxVersion; ++version) {
122
- const newSymbols = getUniqueSymbols(symbols[`v${version - 1}`], symbols[`v${version}`]);
123
-
124
- data += `
125
- const v${version} = {
126
- js_native_api_symbols: [
127
- ...v${version - 1}.js_native_api_symbols${joinStrings(newSymbols.js_native_api_symbols, true)}
128
- ],
129
- node_api_symbols: [
130
- ...v${version - 1}.node_api_symbols${joinStrings(newSymbols.node_api_symbols, true)}
131
- ]
132
- }
133
- `;
134
- }
135
-
136
- data += `
137
- module.exports = {
138
- ${new Array(maxVersion).fill(undefined).map((_, i) => `v${i + 1}`).join(',\n ')}
139
- }
140
- `
141
- return data;
142
- }
143
-
144
- async function main() {
145
- const path = resolvePath(__dirname, '../symbols.js');
146
- const data = await getSymbolData();
147
- console.log(`Writing symbols to ${path}`)
148
- return writeFile(path, data);
149
- }
150
-
151
- main().catch(e => {
152
- console.error(e);
153
- process.exitCode = 1;
154
- });