@encharm/cws 4.4.0 → 4.5.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 (511) hide show
  1. package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
  2. package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
  3. package/dist/bindings/cws_linux_arm64_node115.node +0 -0
  4. package/dist/bindings/cws_linux_arm64_node127.node +0 -0
  5. package/dist/bindings/cws_linux_x64_node108.node +0 -0
  6. package/dist/bindings/cws_linux_x64_node115.node +0 -0
  7. package/dist/bindings/cws_linux_x64_node127.node +0 -0
  8. package/dist/bindings/cws_win32_x64_node108.node +0 -0
  9. package/dist/bindings/cws_win32_x64_node115.node +0 -0
  10. package/dist/bindings/cws_win32_x64_node127.node +0 -0
  11. package/dist/bindings/cws_win32_x64_node83.node +0 -0
  12. package/dist/bindings/cws_win32_x64_node93.node +0 -0
  13. package/package.json +1 -1
  14. package/src/Addon.h +20 -24
  15. package/src/Socket.h +0 -1
  16. package/src/headers/20/acorn_version.h +1 -1
  17. package/src/headers/20/connection_wrap.h +1 -0
  18. package/src/headers/20/crypto/crypto_keys.h +3 -0
  19. package/src/headers/20/crypto/crypto_tls.h +12 -3
  20. package/src/headers/20/crypto/crypto_util.h +3 -2
  21. package/src/headers/20/env_properties.h +3 -1
  22. package/src/headers/20/js_native_api.h +11 -1
  23. package/src/headers/20/js_native_api_v8.h +40 -3
  24. package/src/headers/20/js_native_api_v8_internals.h +6 -0
  25. package/src/headers/20/module_wrap.h +1 -1
  26. package/src/headers/20/node.h +2 -0
  27. package/src/headers/20/node_api.h +8 -7
  28. package/src/headers/20/node_constants.h +3 -0
  29. package/src/headers/20/node_contextify.h +24 -0
  30. package/src/headers/20/node_file-inl.h +32 -0
  31. package/src/headers/20/node_file.h +25 -12
  32. package/src/headers/20/node_options.h +9 -9
  33. package/src/headers/20/node_version.h +1 -1
  34. package/src/headers/20/permission/child_process_permission.h +2 -1
  35. package/src/headers/20/permission/fs_permission.h +11 -9
  36. package/src/headers/20/permission/inspector_permission.h +29 -0
  37. package/src/headers/20/permission/permission.h +4 -1
  38. package/src/headers/20/permission/permission_base.h +6 -2
  39. package/src/headers/20/permission/worker_permission.h +2 -1
  40. package/src/headers/20/undici_version.h +2 -2
  41. package/src/headers/22/acorn_version.h +6 -0
  42. package/src/headers/22/aliased_buffer-inl.h +243 -0
  43. package/src/headers/22/aliased_buffer.h +206 -0
  44. package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
  45. package/src/headers/{18 → 22}/async_wrap.h +65 -59
  46. package/src/headers/{16 → 22}/base_object-inl.h +57 -117
  47. package/src/headers/{18 → 22}/base_object.h +58 -30
  48. package/src/headers/22/base_object_types.h +74 -0
  49. package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
  50. package/src/headers/22/blob_serializer_deserializer.h +132 -0
  51. package/src/headers/{16 → 22}/callback_queue.h +1 -0
  52. package/src/headers/{16 → 22}/cares_wrap.h +27 -20
  53. package/src/headers/22/cjs_module_lexer_version.h +6 -0
  54. package/src/headers/22/cleanup_queue-inl.h +62 -0
  55. package/src/headers/22/cleanup_queue.h +85 -0
  56. package/src/headers/22/compile_cache.h +104 -0
  57. package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
  58. package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
  59. package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
  60. package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
  61. package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
  62. package/src/headers/22/crypto/ncrypto.h +752 -0
  63. package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
  64. package/src/headers/{18 → 22}/debug_utils.h +25 -19
  65. package/src/headers/22/encoding_binding.h +59 -0
  66. package/src/headers/{14 → 22}/env-inl.h +276 -409
  67. package/src/headers/22/env.h +1266 -0
  68. package/src/headers/22/env_properties.h +497 -0
  69. package/src/headers/{18 → 22}/handle_wrap.h +2 -0
  70. package/src/headers/{18 → 22}/histogram.h +88 -48
  71. package/src/headers/{16 → 22}/inspector_agent.h +17 -1
  72. package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
  73. package/src/headers/{18 → 22}/js_native_api.h +78 -30
  74. package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
  75. package/src/headers/{18 → 22}/js_native_api_v8.h +206 -161
  76. package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
  77. package/src/headers/22/json_parser.h +40 -0
  78. package/src/headers/{16 → 22}/json_utils.h +19 -8
  79. package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
  80. package/src/headers/{14 → 22}/memory_tracker.h +13 -8
  81. package/src/headers/{16 → 22}/module_wrap.h +49 -19
  82. package/src/headers/22/ncrypto/ncrypto.h +752 -0
  83. package/src/headers/{18 → 22}/node.h +465 -68
  84. package/src/headers/{18 → 22}/node_api.h +66 -81
  85. package/src/headers/{18 → 22}/node_api_internals.h +8 -4
  86. package/src/headers/{18 → 22}/node_api_types.h +5 -0
  87. package/src/headers/22/node_binding.h +154 -0
  88. package/src/headers/{18 → 22}/node_blob.h +46 -78
  89. package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
  90. package/src/headers/{18 → 22}/node_bob.h +2 -6
  91. package/src/headers/{18 → 22}/node_buffer.h +1 -1
  92. package/src/headers/22/node_builtins.h +220 -0
  93. package/src/headers/{18 → 22}/node_constants.h +3 -5
  94. package/src/headers/22/node_context_data.h +168 -0
  95. package/src/headers/22/node_contextify.h +199 -0
  96. package/src/headers/{16 → 22}/node_crypto.h +1 -2
  97. package/src/headers/22/node_dotenv.h +45 -0
  98. package/src/headers/{18 → 22}/node_errors.h +86 -27
  99. package/src/headers/22/node_exit_code.h +54 -0
  100. package/src/headers/22/node_external_reference.h +249 -0
  101. package/src/headers/{18 → 22}/node_file-inl.h +127 -30
  102. package/src/headers/{16 → 22}/node_file.h +122 -11
  103. package/src/headers/{18 → 22}/node_http2.h +28 -11
  104. package/src/headers/{16 → 22}/node_http2_state.h +34 -25
  105. package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
  106. package/src/headers/{18 → 22}/node_http_common.h +56 -55
  107. package/src/headers/{16 → 22}/node_i18n.h +5 -18
  108. package/src/headers/{18 → 22}/node_internals.h +121 -59
  109. package/src/headers/{18 → 22}/node_main_instance.h +4 -31
  110. package/src/headers/{18 → 22}/node_messaging.h +27 -10
  111. package/src/headers/{18 → 22}/node_metadata.h +23 -1
  112. package/src/headers/{18 → 22}/node_options-inl.h +24 -11
  113. package/src/headers/{18 → 22}/node_options.h +124 -39
  114. package/src/headers/{18 → 22}/node_perf.h +0 -2
  115. package/src/headers/{18 → 22}/node_perf_common.h +20 -9
  116. package/src/headers/{18 → 22}/node_platform.h +11 -5
  117. package/src/headers/{18 → 22}/node_process.h +26 -14
  118. package/src/headers/22/node_realm-inl.h +145 -0
  119. package/src/headers/22/node_realm.h +184 -0
  120. package/src/headers/{16 → 22}/node_report.h +13 -17
  121. package/src/headers/{16 → 22}/node_revert.h +3 -3
  122. package/src/headers/{16 → 22}/node_root_certs.h +902 -461
  123. package/src/headers/22/node_sea.h +64 -0
  124. package/src/headers/22/node_shadow_realm.h +46 -0
  125. package/src/headers/22/node_snapshot_builder.h +57 -0
  126. package/src/headers/22/node_snapshotable.h +174 -0
  127. package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
  128. package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
  129. package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
  130. package/src/headers/22/node_threadsafe_cow.h +105 -0
  131. package/src/headers/22/node_union_bytes.h +81 -0
  132. package/src/headers/22/node_url.h +96 -0
  133. package/src/headers/22/node_v8.h +77 -0
  134. package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
  135. package/src/headers/{18 → 22}/node_version.h +20 -8
  136. package/src/headers/22/node_wasi.h +185 -0
  137. package/src/headers/{14 → 22}/node_watchdog.h +2 -0
  138. package/src/headers/{18 → 22}/node_worker.h +7 -2
  139. package/src/headers/22/permission/child_process_permission.h +31 -0
  140. package/src/headers/22/permission/fs_permission.h +167 -0
  141. package/src/headers/22/permission/inspector_permission.h +31 -0
  142. package/src/headers/22/permission/permission.h +99 -0
  143. package/src/headers/22/permission/permission_base.h +60 -0
  144. package/src/headers/22/permission/wasi_permission.h +31 -0
  145. package/src/headers/22/permission/worker_permission.h +31 -0
  146. package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
  147. package/src/headers/{14 → 22}/spawn_sync.h +3 -3
  148. package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
  149. package/src/headers/{18 → 22}/stream_base.h +35 -16
  150. package/src/headers/{18 → 22}/stream_pipe.h +3 -4
  151. package/src/headers/{16 → 22}/stream_wrap.h +2 -1
  152. package/src/headers/{18 → 22}/string_bytes.h +5 -14
  153. package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
  154. package/src/headers/{16 → 22}/string_decoder.h +0 -1
  155. package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
  156. package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
  157. package/src/headers/22/timers.h +76 -0
  158. package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
  159. package/src/headers/{16 → 22}/udp_wrap.h +8 -5
  160. package/src/headers/22/undici_version.h +6 -0
  161. package/src/headers/{18 → 22}/util-inl.h +97 -127
  162. package/src/headers/{18 → 22}/util.h +293 -106
  163. package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
  164. package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
  165. package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
  166. package/dist/bindings/cws_darwin_x64_node83.node +0 -0
  167. package/dist/bindings/cws_darwin_x64_node93.node +0 -0
  168. package/dist/bindings/cws_linux_arm64_node83.node +0 -0
  169. package/dist/bindings/cws_linux_arm64_node93.node +0 -0
  170. package/dist/bindings/cws_linux_x64_node83.node +0 -0
  171. package/dist/bindings/cws_linux_x64_node93.node +0 -0
  172. package/src/headers/14/aliased_buffer.h +0 -263
  173. package/src/headers/14/allocated_buffer-inl.h +0 -110
  174. package/src/headers/14/allocated_buffer.h +0 -73
  175. package/src/headers/14/async_wrap-inl.h +0 -94
  176. package/src/headers/14/async_wrap.h +0 -230
  177. package/src/headers/14/base64.h +0 -183
  178. package/src/headers/14/base_object-inl.h +0 -371
  179. package/src/headers/14/base_object.h +0 -281
  180. package/src/headers/14/callback_queue-inl.h +0 -97
  181. package/src/headers/14/callback_queue.h +0 -78
  182. package/src/headers/14/debug_utils-inl.h +0 -223
  183. package/src/headers/14/debug_utils.h +0 -181
  184. package/src/headers/14/env.h +0 -1388
  185. package/src/headers/14/handle_wrap.h +0 -117
  186. package/src/headers/14/histogram-inl.h +0 -83
  187. package/src/headers/14/histogram.h +0 -98
  188. package/src/headers/14/inspector_agent.h +0 -149
  189. package/src/headers/14/inspector_profiler.h +0 -137
  190. package/src/headers/14/js_native_api.h +0 -544
  191. package/src/headers/14/js_native_api_types.h +0 -143
  192. package/src/headers/14/js_native_api_v8.h +0 -301
  193. package/src/headers/14/js_native_api_v8_internals.h +0 -38
  194. package/src/headers/14/json_utils.h +0 -161
  195. package/src/headers/14/memory_tracker-inl.h +0 -355
  196. package/src/headers/14/module_wrap.h +0 -99
  197. package/src/headers/14/node.h +0 -1032
  198. package/src/headers/14/node_api.h +0 -255
  199. package/src/headers/14/node_api_types.h +0 -44
  200. package/src/headers/14/node_binding.h +0 -99
  201. package/src/headers/14/node_buffer.h +0 -92
  202. package/src/headers/14/node_constants.h +0 -84
  203. package/src/headers/14/node_context_data.h +0 -44
  204. package/src/headers/14/node_contextify.h +0 -161
  205. package/src/headers/14/node_crypto.h +0 -865
  206. package/src/headers/14/node_crypto_bio.h +0 -195
  207. package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
  208. package/src/headers/14/node_crypto_clienthello.h +0 -132
  209. package/src/headers/14/node_crypto_common.h +0 -138
  210. package/src/headers/14/node_crypto_groups.h +0 -415
  211. package/src/headers/14/node_dtrace.h +0 -86
  212. package/src/headers/14/node_errors.h +0 -214
  213. package/src/headers/14/node_file-inl.h +0 -306
  214. package/src/headers/14/node_file.h +0 -417
  215. package/src/headers/14/node_http2.h +0 -1191
  216. package/src/headers/14/node_http2_state.h +0 -149
  217. package/src/headers/14/node_http_common-inl.h +0 -194
  218. package/src/headers/14/node_http_common.h +0 -529
  219. package/src/headers/14/node_i18n.h +0 -144
  220. package/src/headers/14/node_internals.h +0 -405
  221. package/src/headers/14/node_main_instance.h +0 -96
  222. package/src/headers/14/node_mem.h +0 -45
  223. package/src/headers/14/node_messaging.h +0 -303
  224. package/src/headers/14/node_metadata.h +0 -109
  225. package/src/headers/14/node_mutex.h +0 -247
  226. package/src/headers/14/node_native_module.h +0 -101
  227. package/src/headers/14/node_native_module_env.h +0 -66
  228. package/src/headers/14/node_options-inl.h +0 -451
  229. package/src/headers/14/node_options.h +0 -481
  230. package/src/headers/14/node_perf.h +0 -181
  231. package/src/headers/14/node_perf_common.h +0 -97
  232. package/src/headers/14/node_platform.h +0 -189
  233. package/src/headers/14/node_process.h +0 -40
  234. package/src/headers/14/node_report.h +0 -47
  235. package/src/headers/14/node_revert.h +0 -72
  236. package/src/headers/14/node_root_certs.h +0 -3458
  237. package/src/headers/14/node_sockaddr-inl.h +0 -170
  238. package/src/headers/14/node_sockaddr.h +0 -123
  239. package/src/headers/14/node_stat_watcher.h +0 -70
  240. package/src/headers/14/node_union_bytes.h +0 -103
  241. package/src/headers/14/node_url.h +0 -188
  242. package/src/headers/14/node_version.h +0 -98
  243. package/src/headers/14/node_wasi.h +0 -108
  244. package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
  245. package/src/headers/14/node_win32_etw_provider.h +0 -99
  246. package/src/headers/14/node_worker.h +0 -141
  247. package/src/headers/14/pipe_wrap.h +0 -78
  248. package/src/headers/14/req_wrap-inl.h +0 -170
  249. package/src/headers/14/req_wrap.h +0 -77
  250. package/src/headers/14/stream_base-inl.h +0 -275
  251. package/src/headers/14/stream_base.h +0 -434
  252. package/src/headers/14/stream_pipe.h +0 -73
  253. package/src/headers/14/stream_wrap.h +0 -130
  254. package/src/headers/14/string_bytes.h +0 -129
  255. package/src/headers/14/string_decoder.h +0 -50
  256. package/src/headers/14/string_search.h +0 -638
  257. package/src/headers/14/tcp_wrap.h +0 -101
  258. package/src/headers/14/threadpoolwork-inl.h +0 -57
  259. package/src/headers/14/tls_wrap.h +0 -222
  260. package/src/headers/14/tracing/agent.h +0 -195
  261. package/src/headers/14/tracing/trace_event.h +0 -720
  262. package/src/headers/14/tty_wrap.h +0 -64
  263. package/src/headers/14/udp_wrap.h +0 -227
  264. package/src/headers/14/util-inl.h +0 -566
  265. package/src/headers/14/util.h +0 -804
  266. package/src/headers/14/v8abbr.h +0 -124
  267. package/src/headers/16/aliased_buffer.h +0 -315
  268. package/src/headers/16/aliased_struct-inl.h +0 -54
  269. package/src/headers/16/aliased_struct.h +0 -63
  270. package/src/headers/16/allocated_buffer-inl.h +0 -110
  271. package/src/headers/16/allocated_buffer.h +0 -73
  272. package/src/headers/16/async_wrap-inl.h +0 -94
  273. package/src/headers/16/async_wrap.h +0 -246
  274. package/src/headers/16/base64-inl.h +0 -189
  275. package/src/headers/16/base64.h +0 -69
  276. package/src/headers/16/base_object.h +0 -294
  277. package/src/headers/16/connect_wrap.h +0 -26
  278. package/src/headers/16/connection_wrap.h +0 -30
  279. package/src/headers/16/crypto/crypto_aes.h +0 -89
  280. package/src/headers/16/crypto/crypto_bio.h +0 -194
  281. package/src/headers/16/crypto/crypto_cipher.h +0 -286
  282. package/src/headers/16/crypto/crypto_clienthello-inl.h +0 -90
  283. package/src/headers/16/crypto/crypto_clienthello.h +0 -131
  284. package/src/headers/16/crypto/crypto_common.h +0 -187
  285. package/src/headers/16/crypto/crypto_context.h +0 -147
  286. package/src/headers/16/crypto/crypto_dh.h +0 -157
  287. package/src/headers/16/crypto/crypto_dsa.h +0 -76
  288. package/src/headers/16/crypto/crypto_ec.h +0 -169
  289. package/src/headers/16/crypto/crypto_groups.h +0 -415
  290. package/src/headers/16/crypto/crypto_hash.h +0 -89
  291. package/src/headers/16/crypto/crypto_hkdf.h +0 -66
  292. package/src/headers/16/crypto/crypto_hmac.h +0 -94
  293. package/src/headers/16/crypto/crypto_keygen.h +0 -301
  294. package/src/headers/16/crypto/crypto_keys.h +0 -412
  295. package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
  296. package/src/headers/16/crypto/crypto_random.h +0 -130
  297. package/src/headers/16/crypto/crypto_rsa.h +0 -141
  298. package/src/headers/16/crypto/crypto_scrypt.h +0 -87
  299. package/src/headers/16/crypto/crypto_sig.h +0 -167
  300. package/src/headers/16/crypto/crypto_spkac.h +0 -20
  301. package/src/headers/16/crypto/crypto_timing.h +0 -20
  302. package/src/headers/16/crypto/crypto_tls.h +0 -292
  303. package/src/headers/16/crypto/crypto_util.h +0 -736
  304. package/src/headers/16/crypto/crypto_x509.h +0 -141
  305. package/src/headers/16/debug_utils.h +0 -184
  306. package/src/headers/16/diagnosticfilename-inl.h +0 -33
  307. package/src/headers/16/env-inl.h +0 -1277
  308. package/src/headers/16/env.h +0 -1629
  309. package/src/headers/16/handle_wrap.h +0 -121
  310. package/src/headers/16/histogram-inl.h +0 -88
  311. package/src/headers/16/histogram.h +0 -216
  312. package/src/headers/16/inspector_io.h +0 -78
  313. package/src/headers/16/inspector_socket.h +0 -60
  314. package/src/headers/16/inspector_socket_server.h +0 -110
  315. package/src/headers/16/js_native_api.h +0 -561
  316. package/src/headers/16/js_native_api_types.h +0 -160
  317. package/src/headers/16/js_native_api_v8.h +0 -451
  318. package/src/headers/16/js_native_api_v8_internals.h +0 -39
  319. package/src/headers/16/js_stream.h +0 -52
  320. package/src/headers/16/memory_tracker-inl.h +0 -356
  321. package/src/headers/16/memory_tracker.h +0 -284
  322. package/src/headers/16/node.d +0 -315
  323. package/src/headers/16/node.h +0 -1132
  324. package/src/headers/16/node.stp +0 -146
  325. package/src/headers/16/node_api.h +0 -275
  326. package/src/headers/16/node_api_internals.h +0 -30
  327. package/src/headers/16/node_api_types.h +0 -50
  328. package/src/headers/16/node_binding.h +0 -99
  329. package/src/headers/16/node_blob.h +0 -191
  330. package/src/headers/16/node_bob-inl.h +0 -37
  331. package/src/headers/16/node_bob.h +0 -111
  332. package/src/headers/16/node_buffer.h +0 -92
  333. package/src/headers/16/node_constants.h +0 -84
  334. package/src/headers/16/node_context_data.h +0 -44
  335. package/src/headers/16/node_contextify.h +0 -196
  336. package/src/headers/16/node_dir.h +0 -52
  337. package/src/headers/16/node_dtrace.h +0 -86
  338. package/src/headers/16/node_errors.h +0 -277
  339. package/src/headers/16/node_external_reference.h +0 -129
  340. package/src/headers/16/node_file-inl.h +0 -306
  341. package/src/headers/16/node_http2.h +0 -1140
  342. package/src/headers/16/node_http_common-inl.h +0 -200
  343. package/src/headers/16/node_http_common.h +0 -531
  344. package/src/headers/16/node_internals.h +0 -421
  345. package/src/headers/16/node_main_instance.h +0 -103
  346. package/src/headers/16/node_mem-inl.h +0 -112
  347. package/src/headers/16/node_messaging.h +0 -373
  348. package/src/headers/16/node_metadata.h +0 -122
  349. package/src/headers/16/node_native_module.h +0 -101
  350. package/src/headers/16/node_native_module_env.h +0 -68
  351. package/src/headers/16/node_object_wrap.h +0 -132
  352. package/src/headers/16/node_options-inl.h +0 -477
  353. package/src/headers/16/node_options.h +0 -494
  354. package/src/headers/16/node_perf.h +0 -185
  355. package/src/headers/16/node_perf_common.h +0 -89
  356. package/src/headers/16/node_platform.h +0 -192
  357. package/src/headers/16/node_process.h +0 -43
  358. package/src/headers/16/node_provider.d +0 -80
  359. package/src/headers/16/node_snapshotable.h +0 -137
  360. package/src/headers/16/node_sockaddr-inl.h +0 -266
  361. package/src/headers/16/node_sockaddr.h +0 -405
  362. package/src/headers/16/node_union_bytes.h +0 -103
  363. package/src/headers/16/node_url.h +0 -205
  364. package/src/headers/16/node_v8.h +0 -41
  365. package/src/headers/16/node_v8_platform-inl.h +0 -194
  366. package/src/headers/16/node_version.h +0 -98
  367. package/src/headers/16/node_wasi.h +0 -108
  368. package/src/headers/16/node_watchdog.h +0 -152
  369. package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
  370. package/src/headers/16/node_win32_etw_provider.h +0 -99
  371. package/src/headers/16/node_worker.h +0 -145
  372. package/src/headers/16/req_wrap.h +0 -77
  373. package/src/headers/16/spawn_sync.h +0 -242
  374. package/src/headers/16/stream_base-inl.h +0 -303
  375. package/src/headers/16/stream_base.h +0 -454
  376. package/src/headers/16/stream_pipe.h +0 -73
  377. package/src/headers/16/string_bytes.h +0 -122
  378. package/src/headers/16/string_decoder-inl.h +0 -37
  379. package/src/headers/16/string_search.h +0 -638
  380. package/src/headers/16/tcp_wrap.h +0 -103
  381. package/src/headers/16/threadpoolwork-inl.h +0 -57
  382. package/src/headers/16/timer_wrap.h +0 -84
  383. package/src/headers/16/tracing/agent.h +0 -195
  384. package/src/headers/16/tracing/node_trace_buffer.h +0 -83
  385. package/src/headers/16/tracing/node_trace_writer.h +0 -75
  386. package/src/headers/16/tracing/trace_event.h +0 -720
  387. package/src/headers/16/tracing/trace_event_common.h +0 -1109
  388. package/src/headers/16/tracing/traced_value.h +0 -70
  389. package/src/headers/16/tty_wrap.h +0 -66
  390. package/src/headers/16/util-inl.h +0 -575
  391. package/src/headers/16/util.h +0 -824
  392. package/src/headers/16/v8abbr.h +0 -123
  393. package/src/headers/16/v8ustack.d +0 -695
  394. package/src/headers/18/aliased_buffer.h +0 -315
  395. package/src/headers/18/aliased_struct-inl.h +0 -54
  396. package/src/headers/18/aliased_struct.h +0 -63
  397. package/src/headers/18/base64-inl.h +0 -189
  398. package/src/headers/18/base64.h +0 -69
  399. package/src/headers/18/base_object-inl.h +0 -374
  400. package/src/headers/18/callback_queue-inl.h +0 -97
  401. package/src/headers/18/callback_queue.h +0 -78
  402. package/src/headers/18/cares_wrap.h +0 -523
  403. package/src/headers/18/connect_wrap.h +0 -26
  404. package/src/headers/18/connection_wrap.h +0 -30
  405. package/src/headers/18/crypto/crypto_aes.h +0 -89
  406. package/src/headers/18/crypto/crypto_bio.h +0 -194
  407. package/src/headers/18/crypto/crypto_cipher.h +0 -291
  408. package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
  409. package/src/headers/18/crypto/crypto_common.h +0 -151
  410. package/src/headers/18/crypto/crypto_dh.h +0 -156
  411. package/src/headers/18/crypto/crypto_dsa.h +0 -77
  412. package/src/headers/18/crypto/crypto_ec.h +0 -170
  413. package/src/headers/18/crypto/crypto_groups.h +0 -415
  414. package/src/headers/18/crypto/crypto_hash.h +0 -89
  415. package/src/headers/18/crypto/crypto_hkdf.h +0 -65
  416. package/src/headers/18/crypto/crypto_hmac.h +0 -94
  417. package/src/headers/18/crypto/crypto_keygen.h +0 -305
  418. package/src/headers/18/crypto/crypto_pbkdf2.h +0 -76
  419. package/src/headers/18/crypto/crypto_random.h +0 -130
  420. package/src/headers/18/crypto/crypto_rsa.h +0 -141
  421. package/src/headers/18/crypto/crypto_scrypt.h +0 -87
  422. package/src/headers/18/crypto/crypto_sig.h +0 -168
  423. package/src/headers/18/crypto/crypto_spkac.h +0 -21
  424. package/src/headers/18/crypto/crypto_timing.h +0 -20
  425. package/src/headers/18/crypto/crypto_x509.h +0 -143
  426. package/src/headers/18/debug_utils-inl.h +0 -223
  427. package/src/headers/18/diagnosticfilename-inl.h +0 -33
  428. package/src/headers/18/env-inl.h +0 -1308
  429. package/src/headers/18/env.h +0 -1667
  430. package/src/headers/18/inspector_agent.h +0 -144
  431. package/src/headers/18/inspector_io.h +0 -78
  432. package/src/headers/18/inspector_profiler.h +0 -149
  433. package/src/headers/18/inspector_socket.h +0 -60
  434. package/src/headers/18/inspector_socket_server.h +0 -110
  435. package/src/headers/18/js_stream.h +0 -52
  436. package/src/headers/18/json_utils.h +0 -161
  437. package/src/headers/18/memory_tracker.h +0 -284
  438. package/src/headers/18/module_wrap.h +0 -116
  439. package/src/headers/18/node_binding.h +0 -99
  440. package/src/headers/18/node_context_data.h +0 -44
  441. package/src/headers/18/node_contextify.h +0 -196
  442. package/src/headers/18/node_crypto.h +0 -57
  443. package/src/headers/18/node_dir.h +0 -52
  444. package/src/headers/18/node_dtrace.h +0 -86
  445. package/src/headers/18/node_external_reference.h +0 -145
  446. package/src/headers/18/node_file.h +0 -426
  447. package/src/headers/18/node_http2_state.h +0 -149
  448. package/src/headers/18/node_i18n.h +0 -145
  449. package/src/headers/18/node_mem-inl.h +0 -112
  450. package/src/headers/18/node_mem.h +0 -45
  451. package/src/headers/18/node_mutex.h +0 -323
  452. package/src/headers/18/node_native_module.h +0 -109
  453. package/src/headers/18/node_native_module_env.h +0 -71
  454. package/src/headers/18/node_object_wrap.h +0 -132
  455. package/src/headers/18/node_process-inl.h +0 -26
  456. package/src/headers/18/node_report.h +0 -47
  457. package/src/headers/18/node_revert.h +0 -82
  458. package/src/headers/18/node_root_certs.h +0 -3246
  459. package/src/headers/18/node_snapshot_builder.h +0 -43
  460. package/src/headers/18/node_snapshotable.h +0 -130
  461. package/src/headers/18/node_stat_watcher.h +0 -72
  462. package/src/headers/18/node_union_bytes.h +0 -103
  463. package/src/headers/18/node_url.h +0 -205
  464. package/src/headers/18/node_v8.h +0 -41
  465. package/src/headers/18/node_v8_platform-inl.h +0 -194
  466. package/src/headers/18/node_wasi.h +0 -108
  467. package/src/headers/18/node_watchdog.h +0 -152
  468. package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
  469. package/src/headers/18/node_win32_etw_provider.h +0 -99
  470. package/src/headers/18/pipe_wrap.h +0 -80
  471. package/src/headers/18/req_wrap-inl.h +0 -170
  472. package/src/headers/18/spawn_sync.h +0 -242
  473. package/src/headers/18/stream_wrap.h +0 -133
  474. package/src/headers/18/string_decoder-inl.h +0 -37
  475. package/src/headers/18/string_decoder.h +0 -50
  476. package/src/headers/18/string_search.h +0 -638
  477. package/src/headers/18/tracing/node_trace_buffer.h +0 -83
  478. package/src/headers/18/tracing/node_trace_writer.h +0 -75
  479. package/src/headers/18/tracing/trace_event_common.h +0 -1109
  480. package/src/headers/18/tracing/traced_value.h +0 -70
  481. package/src/headers/18/udp_wrap.h +0 -227
  482. package/src/headers/18/v8abbr.h +0 -123
  483. /package/src/headers/{14 → 20}/tracing/node_trace_buffer.h +0 -0
  484. /package/src/headers/{14 → 20}/tracing/node_trace_writer.h +0 -0
  485. /package/src/headers/{14 → 20}/tracing/traced_value.h +0 -0
  486. /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
  487. /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
  488. /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
  489. /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
  490. /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
  491. /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
  492. /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
  493. /package/src/headers/{14 → 22}/inspector_io.h +0 -0
  494. /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
  495. /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
  496. /package/src/headers/{14 → 22}/js_stream.h +0 -0
  497. /package/src/headers/{14 → 22}/node_dir.h +0 -0
  498. /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
  499. /package/src/headers/{16 → 22}/node_mem.h +0 -0
  500. /package/src/headers/{16 → 22}/node_mutex.h +0 -0
  501. /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
  502. /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
  503. /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
  504. /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
  505. /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
  506. /package/src/headers/{18 → 22}/req_wrap.h +0 -0
  507. /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
  508. /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
  509. /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
  510. /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
  511. /package/src/headers/{18 → 22}/tty_wrap.h +0 -0
@@ -240,19 +240,22 @@ class CTypeInfo {
240
240
  enum class Type : uint8_t {
241
241
  kVoid,
242
242
  kBool,
243
+ kUint8,
243
244
  kInt32,
244
245
  kUint32,
245
246
  kInt64,
246
247
  kUint64,
247
248
  kFloat32,
248
249
  kFloat64,
250
+ kPointer,
249
251
  kV8Value,
252
+ kSeqOneByteString,
250
253
  kApiObject, // This will be deprecated once all users have
251
254
  // migrated from v8::ApiObject to v8::Local<v8::Value>.
252
255
  kAny, // This is added to enable untyped representation of fast
253
256
  // call arguments for test purposes. It can represent any of
254
- // the other types stored in the same memory as a union (see
255
- // the AnyCType struct declared below). This allows for
257
+ // the other types stored in the same memory as a union
258
+ // (see AnyCType declared below). This allows for
256
259
  // uniform passing of arguments w.r.t. their location
257
260
  // (in a register or on the stack), independent of their
258
261
  // actual type. It's currently used by the arm64 simulator
@@ -302,8 +305,9 @@ class CTypeInfo {
302
305
  constexpr Flags GetFlags() const { return flags_; }
303
306
 
304
307
  static constexpr bool IsIntegralType(Type type) {
305
- return type == Type::kInt32 || type == Type::kUint32 ||
306
- type == Type::kInt64 || type == Type::kUint64;
308
+ return type == Type::kUint8 || type == Type::kInt32 ||
309
+ type == Type::kUint32 || type == Type::kInt64 ||
310
+ type == Type::kUint64;
307
311
  }
308
312
 
309
313
  static constexpr bool IsFloatingPointType(Type type) {
@@ -340,7 +344,8 @@ struct FastApiTypedArray : public FastApiTypedArrayBase {
340
344
  ValidateIndex(index);
341
345
  #endif // DEBUG
342
346
  T tmp;
343
- memcpy(&tmp, reinterpret_cast<T*>(data_) + index, sizeof(T));
347
+ memcpy(&tmp, static_cast<void*>(reinterpret_cast<T*>(data_) + index),
348
+ sizeof(T));
344
349
  return tmp;
345
350
  }
346
351
 
@@ -377,15 +382,26 @@ struct FastApiArrayBuffer {
377
382
  size_t byte_length;
378
383
  };
379
384
 
385
+ struct FastOneByteString {
386
+ const char* data;
387
+ uint32_t length;
388
+ };
389
+
380
390
  class V8_EXPORT CFunctionInfo {
381
391
  public:
392
+ enum class Int64Representation : uint8_t {
393
+ kNumber = 0, // Use numbers to represent 64 bit integers.
394
+ kBigInt = 1, // Use BigInts to represent 64 bit integers.
395
+ };
396
+
382
397
  // Construct a struct to hold a CFunction's type information.
383
398
  // |return_info| describes the function's return type.
384
399
  // |arg_info| is an array of |arg_count| CTypeInfos describing the
385
400
  // arguments. Only the last argument may be of the special type
386
401
  // CTypeInfo::kCallbackOptionsType.
387
402
  CFunctionInfo(const CTypeInfo& return_info, unsigned int arg_count,
388
- const CTypeInfo* arg_info);
403
+ const CTypeInfo* arg_info,
404
+ Int64Representation repr = Int64Representation::kNumber);
389
405
 
390
406
  const CTypeInfo& ReturnInfo() const { return return_info_; }
391
407
 
@@ -395,6 +411,8 @@ class V8_EXPORT CFunctionInfo {
395
411
  return HasOptions() ? arg_count_ - 1 : arg_count_;
396
412
  }
397
413
 
414
+ Int64Representation GetInt64Representation() const { return repr_; }
415
+
398
416
  // |index| must be less than ArgumentCount().
399
417
  // Note: if the last argument passed on construction of CFunctionInfo
400
418
  // has type CTypeInfo::kCallbackOptionsType, it is not included in
@@ -409,6 +427,7 @@ class V8_EXPORT CFunctionInfo {
409
427
 
410
428
  private:
411
429
  const CTypeInfo return_info_;
430
+ const Int64Representation repr_;
412
431
  const unsigned int arg_count_;
413
432
  const CTypeInfo* arg_info_;
414
433
  };
@@ -416,32 +435,43 @@ class V8_EXPORT CFunctionInfo {
416
435
  struct FastApiCallbackOptions;
417
436
 
418
437
  // Provided for testing.
419
- struct AnyCType {
438
+ union V8_TRIVIAL_ABI AnyCType {
420
439
  AnyCType() : int64_value(0) {}
421
440
 
422
- union {
423
- bool bool_value;
424
- int32_t int32_value;
425
- uint32_t uint32_value;
426
- int64_t int64_value;
427
- uint64_t uint64_value;
428
- float float_value;
429
- double double_value;
430
- Local<Object> object_value;
431
- Local<Array> sequence_value;
432
- const FastApiTypedArray<int32_t>* int32_ta_value;
433
- const FastApiTypedArray<uint32_t>* uint32_ta_value;
434
- const FastApiTypedArray<int64_t>* int64_ta_value;
435
- const FastApiTypedArray<uint64_t>* uint64_ta_value;
436
- const FastApiTypedArray<float>* float_ta_value;
437
- const FastApiTypedArray<double>* double_ta_value;
438
- FastApiCallbackOptions* options_value;
439
- };
441
+ #if defined(V8_ENABLE_LOCAL_OFF_STACK_CHECK) && V8_HAS_ATTRIBUTE_TRIVIAL_ABI
442
+ // In this case, Local<T> is not trivially copyable and the implicit
443
+ // copy constructor and copy assignment for the union are deleted.
444
+ AnyCType(const AnyCType& other) : int64_value(other.int64_value) {}
445
+ AnyCType& operator=(const AnyCType& other) {
446
+ int64_value = other.int64_value;
447
+ return *this;
448
+ }
449
+ #endif
450
+
451
+ bool bool_value;
452
+ int32_t int32_value;
453
+ uint32_t uint32_value;
454
+ int64_t int64_value;
455
+ uint64_t uint64_value;
456
+ float float_value;
457
+ double double_value;
458
+ void* pointer_value;
459
+ Local<Object> object_value;
460
+ Local<Array> sequence_value;
461
+ const FastApiTypedArray<uint8_t>* uint8_ta_value;
462
+ const FastApiTypedArray<int32_t>* int32_ta_value;
463
+ const FastApiTypedArray<uint32_t>* uint32_ta_value;
464
+ const FastApiTypedArray<int64_t>* int64_ta_value;
465
+ const FastApiTypedArray<uint64_t>* uint64_ta_value;
466
+ const FastApiTypedArray<float>* float_ta_value;
467
+ const FastApiTypedArray<double>* double_ta_value;
468
+ const FastOneByteString* string_value;
469
+ FastApiCallbackOptions* options_value;
440
470
  };
441
471
 
442
472
  static_assert(
443
473
  sizeof(AnyCType) == 8,
444
- "The AnyCType struct should have size == 64 bits, as this is assumed "
474
+ "The union AnyCType should have size == 64 bits, as this is assumed "
445
475
  "by EffectControlLinearizer.");
446
476
 
447
477
  class V8_EXPORT CFunction {
@@ -457,6 +487,9 @@ class V8_EXPORT CFunction {
457
487
  unsigned int ArgumentCount() const { return type_info_->ArgumentCount(); }
458
488
 
459
489
  const void* GetAddress() const { return address_; }
490
+ CFunctionInfo::Int64Representation GetInt64Representation() const {
491
+ return type_info_->GetInt64Representation();
492
+ }
460
493
  const CFunctionInfo* GetTypeInfo() const { return type_info_; }
461
494
 
462
495
  enum class OverloadResolution { kImpossible, kAtRuntime, kAtCompileTime };
@@ -544,7 +577,7 @@ struct FastApiCallbackOptions {
544
577
  * returned instance may be filled with mock data.
545
578
  */
546
579
  static FastApiCallbackOptions CreateForTesting(Isolate* isolate) {
547
- return {false, {0}};
580
+ return {false, {0}, nullptr};
548
581
  }
549
582
 
550
583
  /**
@@ -566,8 +599,13 @@ struct FastApiCallbackOptions {
566
599
  */
567
600
  union {
568
601
  uintptr_t data_ptr;
569
- v8::Value data;
602
+ v8::Local<v8::Value> data;
570
603
  };
604
+
605
+ /**
606
+ * When called from WebAssembly, a view of the calling module's memory.
607
+ */
608
+ FastApiTypedArray<uint8_t>* const wasm_memory;
571
609
  };
572
610
 
573
611
  namespace internal {
@@ -581,7 +619,8 @@ struct count<T, T, Args...>
581
619
  template <typename T, typename U, typename... Args>
582
620
  struct count<T, U, Args...> : count<T, Args...> {};
583
621
 
584
- template <typename RetBuilder, typename... ArgBuilders>
622
+ template <CFunctionInfo::Int64Representation Representation,
623
+ typename RetBuilder, typename... ArgBuilders>
585
624
  class CFunctionInfoImpl : public CFunctionInfo {
586
625
  static constexpr int kOptionsArgCount =
587
626
  count<FastApiCallbackOptions&, ArgBuilders...>();
@@ -596,17 +635,20 @@ class CFunctionInfoImpl : public CFunctionInfo {
596
635
  public:
597
636
  constexpr CFunctionInfoImpl()
598
637
  : CFunctionInfo(RetBuilder::Build(), sizeof...(ArgBuilders),
599
- arg_info_storage_),
638
+ arg_info_storage_, Representation),
600
639
  arg_info_storage_{ArgBuilders::Build()...} {
601
640
  constexpr CTypeInfo::Type kReturnType = RetBuilder::Build().GetType();
602
641
  static_assert(kReturnType == CTypeInfo::Type::kVoid ||
603
642
  kReturnType == CTypeInfo::Type::kBool ||
604
643
  kReturnType == CTypeInfo::Type::kInt32 ||
605
644
  kReturnType == CTypeInfo::Type::kUint32 ||
645
+ kReturnType == CTypeInfo::Type::kInt64 ||
646
+ kReturnType == CTypeInfo::Type::kUint64 ||
606
647
  kReturnType == CTypeInfo::Type::kFloat32 ||
607
648
  kReturnType == CTypeInfo::Type::kFloat64 ||
649
+ kReturnType == CTypeInfo::Type::kPointer ||
608
650
  kReturnType == CTypeInfo::Type::kAny,
609
- "64-bit int and api object values are not currently "
651
+ "String and api object values are not currently "
610
652
  "supported return types.");
611
653
  }
612
654
 
@@ -643,12 +685,14 @@ struct CTypeInfoTraits {};
643
685
 
644
686
  #define PRIMITIVE_C_TYPES(V) \
645
687
  V(bool, kBool) \
688
+ V(uint8_t, kUint8) \
646
689
  V(int32_t, kInt32) \
647
690
  V(uint32_t, kUint32) \
648
691
  V(int64_t, kInt64) \
649
692
  V(uint64_t, kUint64) \
650
693
  V(float, kFloat32) \
651
- V(double, kFloat64)
694
+ V(double, kFloat64) \
695
+ V(void*, kPointer)
652
696
 
653
697
  // Same as above, but includes deprecated types for compatibility.
654
698
  #define ALL_C_TYPES(V) \
@@ -682,6 +726,7 @@ PRIMITIVE_C_TYPES(DEFINE_TYPE_INFO_TRAITS)
682
726
  };
683
727
 
684
728
  #define TYPED_ARRAY_C_TYPES(V) \
729
+ V(uint8_t, kUint8) \
685
730
  V(int32_t, kInt32) \
686
731
  V(uint32_t, kUint32) \
687
732
  V(int64_t, kInt64) \
@@ -725,6 +770,18 @@ struct TypeInfoHelper<FastApiCallbackOptions&> {
725
770
  }
726
771
  };
727
772
 
773
+ template <>
774
+ struct TypeInfoHelper<const FastOneByteString&> {
775
+ static constexpr CTypeInfo::Flags Flags() { return CTypeInfo::Flags::kNone; }
776
+
777
+ static constexpr CTypeInfo::Type Type() {
778
+ return CTypeInfo::Type::kSeqOneByteString;
779
+ }
780
+ static constexpr CTypeInfo::SequenceType SequenceType() {
781
+ return CTypeInfo::SequenceType::kScalar;
782
+ }
783
+ };
784
+
728
785
  #define STATIC_ASSERT_IMPLIES(COND, ASSERTION, MSG) \
729
786
  static_assert(((COND) == 0) || (ASSERTION), MSG)
730
787
 
@@ -802,8 +859,21 @@ class CFunctionBuilderWithFunction {
802
859
  std::make_index_sequence<sizeof...(ArgBuilders)>());
803
860
  }
804
861
 
862
+ // Provided for testing purposes.
863
+ template <typename Ret, typename... Args>
864
+ auto Patch(Ret (*patching_func)(Args...)) {
865
+ static_assert(
866
+ sizeof...(Args) == sizeof...(ArgBuilders),
867
+ "The patching function must have the same number of arguments.");
868
+ fn_ = reinterpret_cast<void*>(patching_func);
869
+ return *this;
870
+ }
871
+
872
+ template <CFunctionInfo::Int64Representation Representation =
873
+ CFunctionInfo::Int64Representation::kNumber>
805
874
  auto Build() {
806
- static CFunctionInfoImpl<RetBuilder, ArgBuilders...> instance;
875
+ static CFunctionInfoImpl<Representation, RetBuilder, ArgBuilders...>
876
+ instance;
807
877
  return CFunction(fn_, &instance);
808
878
  }
809
879
 
@@ -881,31 +951,6 @@ static constexpr CTypeInfo kTypeInfoFloat64 =
881
951
  * to the requested destination type, is considered unsupported. The operation
882
952
  * returns true on success. `type_info` will be used for conversions.
883
953
  */
884
- template <const CTypeInfo* type_info, typename T>
885
- V8_DEPRECATED(
886
- "Use TryToCopyAndConvertArrayToCppBuffer<CTypeInfo::Identifier, T>()")
887
- bool V8_EXPORT V8_WARN_UNUSED_RESULT
888
- TryCopyAndConvertArrayToCppBuffer(Local<Array> src, T* dst,
889
- uint32_t max_length);
890
-
891
- template <>
892
- V8_DEPRECATED(
893
- "Use TryToCopyAndConvertArrayToCppBuffer<CTypeInfo::Identifier, T>()")
894
- inline bool V8_WARN_UNUSED_RESULT
895
- TryCopyAndConvertArrayToCppBuffer<&kTypeInfoInt32, int32_t>(
896
- Local<Array> src, int32_t* dst, uint32_t max_length) {
897
- return false;
898
- }
899
-
900
- template <>
901
- V8_DEPRECATED(
902
- "Use TryToCopyAndConvertArrayToCppBuffer<CTypeInfo::Identifier, T>()")
903
- inline bool V8_WARN_UNUSED_RESULT
904
- TryCopyAndConvertArrayToCppBuffer<&kTypeInfoFloat64, double>(
905
- Local<Array> src, double* dst, uint32_t max_length) {
906
- return false;
907
- }
908
-
909
954
  template <CTypeInfo::Identifier type_info_id, typename T>
910
955
  bool V8_EXPORT V8_WARN_UNUSED_RESULT TryToCopyAndConvertArrayToCppBuffer(
911
956
  Local<Array> src, T* dst, uint32_t max_length);
@@ -1,263 +0,0 @@
1
- #ifndef SRC_ALIASED_BUFFER_H_
2
- #define SRC_ALIASED_BUFFER_H_
3
-
4
- #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
-
6
- #include <cinttypes>
7
- #include "util-inl.h"
8
- #include "v8.h"
9
-
10
- namespace node {
11
-
12
- /**
13
- * Do not use this class directly when creating instances of it - use the
14
- * Aliased*Array defined at the end of this file instead.
15
- *
16
- * This class encapsulates the technique of having a native buffer mapped to
17
- * a JS object. Writes to the native buffer can happen efficiently without
18
- * going through JS, and the data is then available to user's via the exposed
19
- * JS object.
20
- *
21
- * While this technique is computationally efficient, it is effectively a
22
- * write to JS program state w/out going through the standard
23
- * (monitored) API. Thus any VM capabilities to detect the modification are
24
- * circumvented.
25
- *
26
- * The encapsulation herein provides a placeholder where such writes can be
27
- * observed. Any notification APIs will be left as a future exercise.
28
- */
29
- template <class NativeT,
30
- class V8T,
31
- // SFINAE NativeT to be scalar
32
- typename = std::enable_if_t<std::is_scalar<NativeT>::value>>
33
- class AliasedBufferBase {
34
- public:
35
- AliasedBufferBase(v8::Isolate* isolate, const size_t count)
36
- : isolate_(isolate), count_(count), byte_offset_(0) {
37
- CHECK_GT(count, 0);
38
- const v8::HandleScope handle_scope(isolate_);
39
- const size_t size_in_bytes =
40
- MultiplyWithOverflowCheck(sizeof(NativeT), count);
41
-
42
- // allocate v8 ArrayBuffer
43
- v8::Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(
44
- isolate_, size_in_bytes);
45
- buffer_ = static_cast<NativeT*>(ab->GetBackingStore()->Data());
46
-
47
- // allocate v8 TypedArray
48
- v8::Local<V8T> js_array = V8T::New(ab, byte_offset_, count);
49
- js_array_ = v8::Global<V8T>(isolate, js_array);
50
- }
51
-
52
- /**
53
- * Create an AliasedBufferBase over a sub-region of another aliased buffer.
54
- * The two will share a v8::ArrayBuffer instance &
55
- * a native buffer, but will each read/write to different sections of the
56
- * native buffer.
57
- *
58
- * Note that byte_offset must by aligned by sizeof(NativeT).
59
- */
60
- // TODO(refack): refactor into a non-owning `AliasedBufferBaseView`
61
- AliasedBufferBase(
62
- v8::Isolate* isolate,
63
- const size_t byte_offset,
64
- const size_t count,
65
- const AliasedBufferBase<uint8_t, v8::Uint8Array>& backing_buffer)
66
- : isolate_(isolate), count_(count), byte_offset_(byte_offset) {
67
- const v8::HandleScope handle_scope(isolate_);
68
-
69
- v8::Local<v8::ArrayBuffer> ab = backing_buffer.GetArrayBuffer();
70
-
71
- // validate that the byte_offset is aligned with sizeof(NativeT)
72
- CHECK_EQ(byte_offset & (sizeof(NativeT) - 1), 0);
73
- // validate this fits inside the backing buffer
74
- CHECK_LE(MultiplyWithOverflowCheck(sizeof(NativeT), count),
75
- ab->ByteLength() - byte_offset);
76
-
77
- buffer_ = reinterpret_cast<NativeT*>(
78
- const_cast<uint8_t*>(backing_buffer.GetNativeBuffer() + byte_offset));
79
-
80
- v8::Local<V8T> js_array = V8T::New(ab, byte_offset, count);
81
- js_array_ = v8::Global<V8T>(isolate, js_array);
82
- }
83
-
84
- AliasedBufferBase(const AliasedBufferBase& that)
85
- : isolate_(that.isolate_),
86
- count_(that.count_),
87
- byte_offset_(that.byte_offset_),
88
- buffer_(that.buffer_) {
89
- js_array_ = v8::Global<V8T>(that.isolate_, that.GetJSArray());
90
- }
91
-
92
- AliasedBufferBase& operator=(AliasedBufferBase&& that) noexcept {
93
- this->~AliasedBufferBase();
94
- isolate_ = that.isolate_;
95
- count_ = that.count_;
96
- byte_offset_ = that.byte_offset_;
97
- buffer_ = that.buffer_;
98
-
99
- js_array_.Reset(isolate_, that.js_array_.Get(isolate_));
100
-
101
- that.buffer_ = nullptr;
102
- that.js_array_.Reset();
103
- return *this;
104
- }
105
-
106
- /**
107
- * Helper class that is returned from operator[] to support assignment into
108
- * a specified location.
109
- */
110
- class Reference {
111
- public:
112
- Reference(AliasedBufferBase<NativeT, V8T>* aliased_buffer, size_t index)
113
- : aliased_buffer_(aliased_buffer), index_(index) {}
114
-
115
- Reference(const Reference& that)
116
- : aliased_buffer_(that.aliased_buffer_),
117
- index_(that.index_) {
118
- }
119
-
120
- inline Reference& operator=(const NativeT& val) {
121
- aliased_buffer_->SetValue(index_, val);
122
- return *this;
123
- }
124
-
125
- inline Reference& operator=(const Reference& val) {
126
- return *this = static_cast<NativeT>(val);
127
- }
128
-
129
- operator NativeT() const {
130
- return aliased_buffer_->GetValue(index_);
131
- }
132
-
133
- inline Reference& operator+=(const NativeT& val) {
134
- const NativeT current = aliased_buffer_->GetValue(index_);
135
- aliased_buffer_->SetValue(index_, current + val);
136
- return *this;
137
- }
138
-
139
- inline Reference& operator+=(const Reference& val) {
140
- return this->operator+=(static_cast<NativeT>(val));
141
- }
142
-
143
- inline Reference& operator-=(const NativeT& val) {
144
- const NativeT current = aliased_buffer_->GetValue(index_);
145
- aliased_buffer_->SetValue(index_, current - val);
146
- return *this;
147
- }
148
-
149
- private:
150
- AliasedBufferBase<NativeT, V8T>* aliased_buffer_;
151
- size_t index_;
152
- };
153
-
154
- /**
155
- * Get the underlying v8 TypedArray overlayed on top of the native buffer
156
- */
157
- v8::Local<V8T> GetJSArray() const {
158
- return js_array_.Get(isolate_);
159
- }
160
-
161
- /**
162
- * Get the underlying v8::ArrayBuffer underlying the TypedArray and
163
- * overlaying the native buffer
164
- */
165
- v8::Local<v8::ArrayBuffer> GetArrayBuffer() const {
166
- return GetJSArray()->Buffer();
167
- }
168
-
169
- /**
170
- * Get the underlying native buffer. Note that all reads/writes should occur
171
- * through the GetValue/SetValue/operator[] methods
172
- */
173
- inline const NativeT* GetNativeBuffer() const {
174
- return buffer_;
175
- }
176
-
177
- /**
178
- * Synonym for GetBuffer()
179
- */
180
- inline const NativeT* operator * () const {
181
- return GetNativeBuffer();
182
- }
183
-
184
- /**
185
- * Set position index to given value.
186
- */
187
- inline void SetValue(const size_t index, NativeT value) {
188
- DCHECK_LT(index, count_);
189
- buffer_[index] = value;
190
- }
191
-
192
- /**
193
- * Get value at position index
194
- */
195
- inline const NativeT GetValue(const size_t index) const {
196
- DCHECK_LT(index, count_);
197
- return buffer_[index];
198
- }
199
-
200
- /**
201
- * Effectively, a synonym for GetValue/SetValue
202
- */
203
- Reference operator[](size_t index) {
204
- return Reference(this, index);
205
- }
206
-
207
- NativeT operator[](size_t index) const {
208
- return GetValue(index);
209
- }
210
-
211
- size_t Length() const {
212
- return count_;
213
- }
214
-
215
- // Should only be used to extend the array.
216
- // Should only be used on an owning array, not one created as a sub array of
217
- // an owning `AliasedBufferBase`.
218
- void reserve(size_t new_capacity) {
219
- DCHECK_GE(new_capacity, count_);
220
- DCHECK_EQ(byte_offset_, 0);
221
- const v8::HandleScope handle_scope(isolate_);
222
-
223
- const size_t old_size_in_bytes = sizeof(NativeT) * count_;
224
- const size_t new_size_in_bytes = MultiplyWithOverflowCheck(sizeof(NativeT),
225
- new_capacity);
226
-
227
- // allocate v8 new ArrayBuffer
228
- v8::Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(
229
- isolate_, new_size_in_bytes);
230
-
231
- // allocate new native buffer
232
- NativeT* new_buffer = static_cast<NativeT*>(ab->GetBackingStore()->Data());
233
- // copy old content
234
- memcpy(new_buffer, buffer_, old_size_in_bytes);
235
-
236
- // allocate v8 TypedArray
237
- v8::Local<V8T> js_array = V8T::New(ab, byte_offset_, new_capacity);
238
-
239
- // move over old v8 TypedArray
240
- js_array_ = std::move(v8::Global<V8T>(isolate_, js_array));
241
-
242
- buffer_ = new_buffer;
243
- count_ = new_capacity;
244
- }
245
-
246
- private:
247
- v8::Isolate* isolate_;
248
- size_t count_;
249
- size_t byte_offset_;
250
- NativeT* buffer_;
251
- v8::Global<V8T> js_array_;
252
- };
253
-
254
- typedef AliasedBufferBase<int32_t, v8::Int32Array> AliasedInt32Array;
255
- typedef AliasedBufferBase<uint8_t, v8::Uint8Array> AliasedUint8Array;
256
- typedef AliasedBufferBase<uint32_t, v8::Uint32Array> AliasedUint32Array;
257
- typedef AliasedBufferBase<double, v8::Float64Array> AliasedFloat64Array;
258
- typedef AliasedBufferBase<uint64_t, v8::BigUint64Array> AliasedBigUint64Array;
259
- } // namespace node
260
-
261
- #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
262
-
263
- #endif // SRC_ALIASED_BUFFER_H_