@encharm/cws 4.4.1 → 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 (485) 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_node115.node +0 -0
  6. package/dist/bindings/cws_linux_x64_node127.node +0 -0
  7. package/dist/bindings/cws_win32_x64_node108.node +0 -0
  8. package/dist/bindings/cws_win32_x64_node115.node +0 -0
  9. package/dist/bindings/cws_win32_x64_node127.node +0 -0
  10. package/dist/bindings/cws_win32_x64_node83.node +0 -0
  11. package/dist/bindings/cws_win32_x64_node93.node +0 -0
  12. package/package.json +1 -1
  13. package/src/Addon.h +8 -23
  14. package/src/Socket.h +0 -1
  15. package/src/headers/22/acorn_version.h +6 -0
  16. package/src/headers/22/aliased_buffer-inl.h +243 -0
  17. package/src/headers/22/aliased_buffer.h +206 -0
  18. package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
  19. package/src/headers/{18 → 22}/async_wrap.h +65 -59
  20. package/src/headers/{16 → 22}/base_object-inl.h +57 -117
  21. package/src/headers/{18 → 22}/base_object.h +58 -30
  22. package/src/headers/22/base_object_types.h +74 -0
  23. package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
  24. package/src/headers/22/blob_serializer_deserializer.h +132 -0
  25. package/src/headers/{16 → 22}/callback_queue.h +1 -0
  26. package/src/headers/{16 → 22}/cares_wrap.h +27 -20
  27. package/src/headers/22/cjs_module_lexer_version.h +6 -0
  28. package/src/headers/22/cleanup_queue-inl.h +62 -0
  29. package/src/headers/22/cleanup_queue.h +85 -0
  30. package/src/headers/22/compile_cache.h +104 -0
  31. package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
  32. package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
  33. package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
  34. package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
  35. package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
  36. package/src/headers/22/crypto/ncrypto.h +752 -0
  37. package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
  38. package/src/headers/{18 → 22}/debug_utils.h +25 -19
  39. package/src/headers/22/encoding_binding.h +59 -0
  40. package/src/headers/{14 → 22}/env-inl.h +276 -409
  41. package/src/headers/22/env.h +1266 -0
  42. package/src/headers/22/env_properties.h +497 -0
  43. package/src/headers/{18 → 22}/handle_wrap.h +2 -0
  44. package/src/headers/{18 → 22}/histogram.h +88 -48
  45. package/src/headers/{16 → 22}/inspector_agent.h +17 -1
  46. package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
  47. package/src/headers/{18 → 22}/js_native_api.h +78 -30
  48. package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
  49. package/src/headers/{18 → 22}/js_native_api_v8.h +206 -161
  50. package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
  51. package/src/headers/22/json_parser.h +40 -0
  52. package/src/headers/{16 → 22}/json_utils.h +19 -8
  53. package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
  54. package/src/headers/{14 → 22}/memory_tracker.h +13 -8
  55. package/src/headers/{16 → 22}/module_wrap.h +49 -19
  56. package/src/headers/22/ncrypto/ncrypto.h +752 -0
  57. package/src/headers/{18 → 22}/node.h +465 -68
  58. package/src/headers/{18 → 22}/node_api.h +66 -81
  59. package/src/headers/{18 → 22}/node_api_internals.h +8 -4
  60. package/src/headers/{18 → 22}/node_api_types.h +5 -0
  61. package/src/headers/22/node_binding.h +154 -0
  62. package/src/headers/{18 → 22}/node_blob.h +46 -78
  63. package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
  64. package/src/headers/{18 → 22}/node_bob.h +2 -6
  65. package/src/headers/{18 → 22}/node_buffer.h +1 -1
  66. package/src/headers/22/node_builtins.h +220 -0
  67. package/src/headers/{18 → 22}/node_constants.h +3 -5
  68. package/src/headers/22/node_context_data.h +168 -0
  69. package/src/headers/22/node_contextify.h +199 -0
  70. package/src/headers/{16 → 22}/node_crypto.h +1 -2
  71. package/src/headers/22/node_dotenv.h +45 -0
  72. package/src/headers/{18 → 22}/node_errors.h +86 -27
  73. package/src/headers/22/node_exit_code.h +54 -0
  74. package/src/headers/22/node_external_reference.h +249 -0
  75. package/src/headers/{18 → 22}/node_file-inl.h +127 -30
  76. package/src/headers/{16 → 22}/node_file.h +122 -11
  77. package/src/headers/{18 → 22}/node_http2.h +28 -11
  78. package/src/headers/{16 → 22}/node_http2_state.h +34 -25
  79. package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
  80. package/src/headers/{18 → 22}/node_http_common.h +56 -55
  81. package/src/headers/{16 → 22}/node_i18n.h +5 -18
  82. package/src/headers/{18 → 22}/node_internals.h +121 -59
  83. package/src/headers/{18 → 22}/node_main_instance.h +4 -31
  84. package/src/headers/{18 → 22}/node_messaging.h +27 -10
  85. package/src/headers/{18 → 22}/node_metadata.h +23 -1
  86. package/src/headers/{18 → 22}/node_options-inl.h +24 -11
  87. package/src/headers/{18 → 22}/node_options.h +124 -39
  88. package/src/headers/{18 → 22}/node_perf.h +0 -2
  89. package/src/headers/{18 → 22}/node_perf_common.h +20 -9
  90. package/src/headers/{18 → 22}/node_platform.h +11 -5
  91. package/src/headers/{18 → 22}/node_process.h +26 -14
  92. package/src/headers/22/node_realm-inl.h +145 -0
  93. package/src/headers/22/node_realm.h +184 -0
  94. package/src/headers/{16 → 22}/node_report.h +13 -17
  95. package/src/headers/{16 → 22}/node_revert.h +3 -3
  96. package/src/headers/{16 → 22}/node_root_certs.h +902 -461
  97. package/src/headers/22/node_sea.h +64 -0
  98. package/src/headers/22/node_shadow_realm.h +46 -0
  99. package/src/headers/22/node_snapshot_builder.h +57 -0
  100. package/src/headers/22/node_snapshotable.h +174 -0
  101. package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
  102. package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
  103. package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
  104. package/src/headers/22/node_threadsafe_cow.h +105 -0
  105. package/src/headers/22/node_union_bytes.h +81 -0
  106. package/src/headers/22/node_url.h +96 -0
  107. package/src/headers/22/node_v8.h +77 -0
  108. package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
  109. package/src/headers/{18 → 22}/node_version.h +20 -8
  110. package/src/headers/22/node_wasi.h +185 -0
  111. package/src/headers/{14 → 22}/node_watchdog.h +2 -0
  112. package/src/headers/{18 → 22}/node_worker.h +7 -2
  113. package/src/headers/22/permission/child_process_permission.h +31 -0
  114. package/src/headers/22/permission/fs_permission.h +167 -0
  115. package/src/headers/22/permission/inspector_permission.h +31 -0
  116. package/src/headers/22/permission/permission.h +99 -0
  117. package/src/headers/22/permission/permission_base.h +60 -0
  118. package/src/headers/22/permission/wasi_permission.h +31 -0
  119. package/src/headers/22/permission/worker_permission.h +31 -0
  120. package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
  121. package/src/headers/{14 → 22}/spawn_sync.h +3 -3
  122. package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
  123. package/src/headers/{18 → 22}/stream_base.h +35 -16
  124. package/src/headers/{18 → 22}/stream_pipe.h +3 -4
  125. package/src/headers/{16 → 22}/stream_wrap.h +2 -1
  126. package/src/headers/{18 → 22}/string_bytes.h +5 -14
  127. package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
  128. package/src/headers/{16 → 22}/string_decoder.h +0 -1
  129. package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
  130. package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
  131. package/src/headers/22/timers.h +76 -0
  132. package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
  133. package/src/headers/{16 → 22}/udp_wrap.h +8 -5
  134. package/src/headers/22/undici_version.h +6 -0
  135. package/src/headers/{18 → 22}/util-inl.h +97 -127
  136. package/src/headers/{18 → 22}/util.h +293 -106
  137. package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
  138. package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
  139. package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
  140. package/dist/bindings/cws_darwin_x64_node83.node +0 -0
  141. package/dist/bindings/cws_darwin_x64_node93.node +0 -0
  142. package/dist/bindings/cws_linux_arm64_node83.node +0 -0
  143. package/dist/bindings/cws_linux_arm64_node93.node +0 -0
  144. package/dist/bindings/cws_linux_x64_node83.node +0 -0
  145. package/dist/bindings/cws_linux_x64_node93.node +0 -0
  146. package/src/headers/14/aliased_buffer.h +0 -263
  147. package/src/headers/14/allocated_buffer-inl.h +0 -110
  148. package/src/headers/14/allocated_buffer.h +0 -73
  149. package/src/headers/14/async_wrap-inl.h +0 -94
  150. package/src/headers/14/async_wrap.h +0 -230
  151. package/src/headers/14/base64.h +0 -183
  152. package/src/headers/14/base_object-inl.h +0 -371
  153. package/src/headers/14/base_object.h +0 -281
  154. package/src/headers/14/callback_queue-inl.h +0 -97
  155. package/src/headers/14/callback_queue.h +0 -78
  156. package/src/headers/14/debug_utils-inl.h +0 -223
  157. package/src/headers/14/debug_utils.h +0 -181
  158. package/src/headers/14/env.h +0 -1388
  159. package/src/headers/14/handle_wrap.h +0 -117
  160. package/src/headers/14/histogram-inl.h +0 -83
  161. package/src/headers/14/histogram.h +0 -98
  162. package/src/headers/14/inspector_agent.h +0 -149
  163. package/src/headers/14/inspector_profiler.h +0 -137
  164. package/src/headers/14/js_native_api.h +0 -544
  165. package/src/headers/14/js_native_api_types.h +0 -143
  166. package/src/headers/14/js_native_api_v8.h +0 -301
  167. package/src/headers/14/js_native_api_v8_internals.h +0 -38
  168. package/src/headers/14/json_utils.h +0 -161
  169. package/src/headers/14/memory_tracker-inl.h +0 -355
  170. package/src/headers/14/module_wrap.h +0 -99
  171. package/src/headers/14/node.h +0 -1032
  172. package/src/headers/14/node_api.h +0 -255
  173. package/src/headers/14/node_api_types.h +0 -44
  174. package/src/headers/14/node_binding.h +0 -99
  175. package/src/headers/14/node_buffer.h +0 -92
  176. package/src/headers/14/node_constants.h +0 -84
  177. package/src/headers/14/node_context_data.h +0 -44
  178. package/src/headers/14/node_contextify.h +0 -161
  179. package/src/headers/14/node_crypto.h +0 -865
  180. package/src/headers/14/node_crypto_bio.h +0 -195
  181. package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
  182. package/src/headers/14/node_crypto_clienthello.h +0 -132
  183. package/src/headers/14/node_crypto_common.h +0 -138
  184. package/src/headers/14/node_crypto_groups.h +0 -415
  185. package/src/headers/14/node_dtrace.h +0 -86
  186. package/src/headers/14/node_errors.h +0 -214
  187. package/src/headers/14/node_file-inl.h +0 -306
  188. package/src/headers/14/node_file.h +0 -417
  189. package/src/headers/14/node_http2.h +0 -1191
  190. package/src/headers/14/node_http2_state.h +0 -149
  191. package/src/headers/14/node_http_common-inl.h +0 -194
  192. package/src/headers/14/node_http_common.h +0 -529
  193. package/src/headers/14/node_i18n.h +0 -144
  194. package/src/headers/14/node_internals.h +0 -405
  195. package/src/headers/14/node_main_instance.h +0 -96
  196. package/src/headers/14/node_mem.h +0 -45
  197. package/src/headers/14/node_messaging.h +0 -303
  198. package/src/headers/14/node_metadata.h +0 -109
  199. package/src/headers/14/node_mutex.h +0 -247
  200. package/src/headers/14/node_native_module.h +0 -101
  201. package/src/headers/14/node_native_module_env.h +0 -66
  202. package/src/headers/14/node_options-inl.h +0 -451
  203. package/src/headers/14/node_options.h +0 -481
  204. package/src/headers/14/node_perf.h +0 -181
  205. package/src/headers/14/node_perf_common.h +0 -97
  206. package/src/headers/14/node_platform.h +0 -189
  207. package/src/headers/14/node_process.h +0 -40
  208. package/src/headers/14/node_report.h +0 -47
  209. package/src/headers/14/node_revert.h +0 -72
  210. package/src/headers/14/node_root_certs.h +0 -3458
  211. package/src/headers/14/node_sockaddr-inl.h +0 -170
  212. package/src/headers/14/node_sockaddr.h +0 -123
  213. package/src/headers/14/node_stat_watcher.h +0 -70
  214. package/src/headers/14/node_union_bytes.h +0 -103
  215. package/src/headers/14/node_url.h +0 -188
  216. package/src/headers/14/node_version.h +0 -98
  217. package/src/headers/14/node_wasi.h +0 -108
  218. package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
  219. package/src/headers/14/node_win32_etw_provider.h +0 -99
  220. package/src/headers/14/node_worker.h +0 -141
  221. package/src/headers/14/pipe_wrap.h +0 -78
  222. package/src/headers/14/req_wrap-inl.h +0 -170
  223. package/src/headers/14/req_wrap.h +0 -77
  224. package/src/headers/14/stream_base-inl.h +0 -275
  225. package/src/headers/14/stream_base.h +0 -434
  226. package/src/headers/14/stream_pipe.h +0 -73
  227. package/src/headers/14/stream_wrap.h +0 -130
  228. package/src/headers/14/string_bytes.h +0 -129
  229. package/src/headers/14/string_decoder.h +0 -50
  230. package/src/headers/14/string_search.h +0 -638
  231. package/src/headers/14/tcp_wrap.h +0 -101
  232. package/src/headers/14/threadpoolwork-inl.h +0 -57
  233. package/src/headers/14/tls_wrap.h +0 -222
  234. package/src/headers/14/tracing/agent.h +0 -195
  235. package/src/headers/14/tracing/node_trace_buffer.h +0 -83
  236. package/src/headers/14/tracing/node_trace_writer.h +0 -75
  237. package/src/headers/14/tracing/trace_event.h +0 -720
  238. package/src/headers/14/tracing/traced_value.h +0 -70
  239. package/src/headers/14/tty_wrap.h +0 -64
  240. package/src/headers/14/udp_wrap.h +0 -227
  241. package/src/headers/14/util-inl.h +0 -566
  242. package/src/headers/14/util.h +0 -804
  243. package/src/headers/14/v8abbr.h +0 -124
  244. package/src/headers/16/aliased_buffer.h +0 -315
  245. package/src/headers/16/aliased_struct-inl.h +0 -54
  246. package/src/headers/16/aliased_struct.h +0 -63
  247. package/src/headers/16/allocated_buffer-inl.h +0 -110
  248. package/src/headers/16/allocated_buffer.h +0 -73
  249. package/src/headers/16/async_wrap-inl.h +0 -94
  250. package/src/headers/16/async_wrap.h +0 -246
  251. package/src/headers/16/base64-inl.h +0 -189
  252. package/src/headers/16/base64.h +0 -69
  253. package/src/headers/16/base_object.h +0 -294
  254. package/src/headers/16/connect_wrap.h +0 -26
  255. package/src/headers/16/connection_wrap.h +0 -30
  256. package/src/headers/16/crypto/crypto_aes.h +0 -89
  257. package/src/headers/16/crypto/crypto_bio.h +0 -194
  258. package/src/headers/16/crypto/crypto_cipher.h +0 -286
  259. package/src/headers/16/crypto/crypto_clienthello-inl.h +0 -90
  260. package/src/headers/16/crypto/crypto_clienthello.h +0 -131
  261. package/src/headers/16/crypto/crypto_common.h +0 -187
  262. package/src/headers/16/crypto/crypto_context.h +0 -147
  263. package/src/headers/16/crypto/crypto_dh.h +0 -157
  264. package/src/headers/16/crypto/crypto_dsa.h +0 -76
  265. package/src/headers/16/crypto/crypto_ec.h +0 -169
  266. package/src/headers/16/crypto/crypto_groups.h +0 -415
  267. package/src/headers/16/crypto/crypto_hash.h +0 -89
  268. package/src/headers/16/crypto/crypto_hkdf.h +0 -66
  269. package/src/headers/16/crypto/crypto_hmac.h +0 -94
  270. package/src/headers/16/crypto/crypto_keygen.h +0 -301
  271. package/src/headers/16/crypto/crypto_keys.h +0 -412
  272. package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
  273. package/src/headers/16/crypto/crypto_random.h +0 -130
  274. package/src/headers/16/crypto/crypto_rsa.h +0 -141
  275. package/src/headers/16/crypto/crypto_scrypt.h +0 -87
  276. package/src/headers/16/crypto/crypto_sig.h +0 -167
  277. package/src/headers/16/crypto/crypto_spkac.h +0 -20
  278. package/src/headers/16/crypto/crypto_timing.h +0 -20
  279. package/src/headers/16/crypto/crypto_tls.h +0 -292
  280. package/src/headers/16/crypto/crypto_util.h +0 -736
  281. package/src/headers/16/crypto/crypto_x509.h +0 -141
  282. package/src/headers/16/debug_utils.h +0 -184
  283. package/src/headers/16/diagnosticfilename-inl.h +0 -33
  284. package/src/headers/16/env-inl.h +0 -1277
  285. package/src/headers/16/env.h +0 -1629
  286. package/src/headers/16/handle_wrap.h +0 -121
  287. package/src/headers/16/histogram-inl.h +0 -88
  288. package/src/headers/16/histogram.h +0 -216
  289. package/src/headers/16/inspector_io.h +0 -78
  290. package/src/headers/16/inspector_socket.h +0 -60
  291. package/src/headers/16/inspector_socket_server.h +0 -110
  292. package/src/headers/16/js_native_api.h +0 -561
  293. package/src/headers/16/js_native_api_types.h +0 -160
  294. package/src/headers/16/js_native_api_v8.h +0 -451
  295. package/src/headers/16/js_native_api_v8_internals.h +0 -39
  296. package/src/headers/16/js_stream.h +0 -52
  297. package/src/headers/16/memory_tracker-inl.h +0 -356
  298. package/src/headers/16/memory_tracker.h +0 -284
  299. package/src/headers/16/node.d +0 -315
  300. package/src/headers/16/node.h +0 -1132
  301. package/src/headers/16/node.stp +0 -146
  302. package/src/headers/16/node_api.h +0 -275
  303. package/src/headers/16/node_api_internals.h +0 -30
  304. package/src/headers/16/node_api_types.h +0 -50
  305. package/src/headers/16/node_binding.h +0 -99
  306. package/src/headers/16/node_blob.h +0 -191
  307. package/src/headers/16/node_bob-inl.h +0 -37
  308. package/src/headers/16/node_bob.h +0 -111
  309. package/src/headers/16/node_buffer.h +0 -92
  310. package/src/headers/16/node_constants.h +0 -84
  311. package/src/headers/16/node_context_data.h +0 -44
  312. package/src/headers/16/node_contextify.h +0 -196
  313. package/src/headers/16/node_dir.h +0 -52
  314. package/src/headers/16/node_dtrace.h +0 -86
  315. package/src/headers/16/node_errors.h +0 -277
  316. package/src/headers/16/node_external_reference.h +0 -129
  317. package/src/headers/16/node_file-inl.h +0 -306
  318. package/src/headers/16/node_http2.h +0 -1140
  319. package/src/headers/16/node_http_common-inl.h +0 -200
  320. package/src/headers/16/node_http_common.h +0 -531
  321. package/src/headers/16/node_internals.h +0 -421
  322. package/src/headers/16/node_main_instance.h +0 -103
  323. package/src/headers/16/node_mem-inl.h +0 -112
  324. package/src/headers/16/node_messaging.h +0 -373
  325. package/src/headers/16/node_metadata.h +0 -122
  326. package/src/headers/16/node_native_module.h +0 -101
  327. package/src/headers/16/node_native_module_env.h +0 -68
  328. package/src/headers/16/node_object_wrap.h +0 -132
  329. package/src/headers/16/node_options-inl.h +0 -477
  330. package/src/headers/16/node_options.h +0 -494
  331. package/src/headers/16/node_perf.h +0 -185
  332. package/src/headers/16/node_perf_common.h +0 -89
  333. package/src/headers/16/node_platform.h +0 -192
  334. package/src/headers/16/node_process.h +0 -43
  335. package/src/headers/16/node_provider.d +0 -80
  336. package/src/headers/16/node_snapshotable.h +0 -137
  337. package/src/headers/16/node_sockaddr-inl.h +0 -266
  338. package/src/headers/16/node_sockaddr.h +0 -405
  339. package/src/headers/16/node_union_bytes.h +0 -103
  340. package/src/headers/16/node_url.h +0 -205
  341. package/src/headers/16/node_v8.h +0 -41
  342. package/src/headers/16/node_v8_platform-inl.h +0 -194
  343. package/src/headers/16/node_version.h +0 -98
  344. package/src/headers/16/node_wasi.h +0 -108
  345. package/src/headers/16/node_watchdog.h +0 -152
  346. package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
  347. package/src/headers/16/node_win32_etw_provider.h +0 -99
  348. package/src/headers/16/node_worker.h +0 -145
  349. package/src/headers/16/req_wrap.h +0 -77
  350. package/src/headers/16/spawn_sync.h +0 -242
  351. package/src/headers/16/stream_base-inl.h +0 -303
  352. package/src/headers/16/stream_base.h +0 -454
  353. package/src/headers/16/stream_pipe.h +0 -73
  354. package/src/headers/16/string_bytes.h +0 -122
  355. package/src/headers/16/string_decoder-inl.h +0 -37
  356. package/src/headers/16/string_search.h +0 -638
  357. package/src/headers/16/tcp_wrap.h +0 -103
  358. package/src/headers/16/threadpoolwork-inl.h +0 -57
  359. package/src/headers/16/timer_wrap.h +0 -84
  360. package/src/headers/16/tracing/agent.h +0 -195
  361. package/src/headers/16/tracing/node_trace_buffer.h +0 -83
  362. package/src/headers/16/tracing/node_trace_writer.h +0 -75
  363. package/src/headers/16/tracing/trace_event.h +0 -720
  364. package/src/headers/16/tracing/trace_event_common.h +0 -1109
  365. package/src/headers/16/tracing/traced_value.h +0 -70
  366. package/src/headers/16/tty_wrap.h +0 -66
  367. package/src/headers/16/util-inl.h +0 -575
  368. package/src/headers/16/util.h +0 -824
  369. package/src/headers/16/v8abbr.h +0 -123
  370. package/src/headers/16/v8ustack.d +0 -695
  371. package/src/headers/18/aliased_buffer.h +0 -315
  372. package/src/headers/18/aliased_struct-inl.h +0 -54
  373. package/src/headers/18/aliased_struct.h +0 -63
  374. package/src/headers/18/base64-inl.h +0 -189
  375. package/src/headers/18/base64.h +0 -69
  376. package/src/headers/18/base_object-inl.h +0 -374
  377. package/src/headers/18/callback_queue-inl.h +0 -97
  378. package/src/headers/18/callback_queue.h +0 -78
  379. package/src/headers/18/cares_wrap.h +0 -523
  380. package/src/headers/18/connect_wrap.h +0 -26
  381. package/src/headers/18/connection_wrap.h +0 -30
  382. package/src/headers/18/crypto/crypto_aes.h +0 -89
  383. package/src/headers/18/crypto/crypto_bio.h +0 -194
  384. package/src/headers/18/crypto/crypto_cipher.h +0 -291
  385. package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
  386. package/src/headers/18/crypto/crypto_common.h +0 -151
  387. package/src/headers/18/crypto/crypto_dh.h +0 -156
  388. package/src/headers/18/crypto/crypto_dsa.h +0 -77
  389. package/src/headers/18/crypto/crypto_ec.h +0 -170
  390. package/src/headers/18/crypto/crypto_groups.h +0 -415
  391. package/src/headers/18/crypto/crypto_hash.h +0 -89
  392. package/src/headers/18/crypto/crypto_hkdf.h +0 -65
  393. package/src/headers/18/crypto/crypto_hmac.h +0 -94
  394. package/src/headers/18/crypto/crypto_keygen.h +0 -305
  395. package/src/headers/18/crypto/crypto_pbkdf2.h +0 -76
  396. package/src/headers/18/crypto/crypto_random.h +0 -130
  397. package/src/headers/18/crypto/crypto_rsa.h +0 -141
  398. package/src/headers/18/crypto/crypto_scrypt.h +0 -87
  399. package/src/headers/18/crypto/crypto_sig.h +0 -168
  400. package/src/headers/18/crypto/crypto_spkac.h +0 -21
  401. package/src/headers/18/crypto/crypto_timing.h +0 -20
  402. package/src/headers/18/crypto/crypto_x509.h +0 -143
  403. package/src/headers/18/debug_utils-inl.h +0 -223
  404. package/src/headers/18/diagnosticfilename-inl.h +0 -33
  405. package/src/headers/18/env-inl.h +0 -1308
  406. package/src/headers/18/env.h +0 -1667
  407. package/src/headers/18/inspector_agent.h +0 -144
  408. package/src/headers/18/inspector_io.h +0 -78
  409. package/src/headers/18/inspector_profiler.h +0 -149
  410. package/src/headers/18/inspector_socket.h +0 -60
  411. package/src/headers/18/inspector_socket_server.h +0 -110
  412. package/src/headers/18/js_stream.h +0 -52
  413. package/src/headers/18/json_utils.h +0 -161
  414. package/src/headers/18/memory_tracker.h +0 -284
  415. package/src/headers/18/module_wrap.h +0 -116
  416. package/src/headers/18/node_binding.h +0 -99
  417. package/src/headers/18/node_context_data.h +0 -44
  418. package/src/headers/18/node_contextify.h +0 -196
  419. package/src/headers/18/node_crypto.h +0 -57
  420. package/src/headers/18/node_dir.h +0 -52
  421. package/src/headers/18/node_dtrace.h +0 -86
  422. package/src/headers/18/node_external_reference.h +0 -145
  423. package/src/headers/18/node_file.h +0 -426
  424. package/src/headers/18/node_http2_state.h +0 -149
  425. package/src/headers/18/node_i18n.h +0 -145
  426. package/src/headers/18/node_mem-inl.h +0 -112
  427. package/src/headers/18/node_mem.h +0 -45
  428. package/src/headers/18/node_mutex.h +0 -323
  429. package/src/headers/18/node_native_module.h +0 -109
  430. package/src/headers/18/node_native_module_env.h +0 -71
  431. package/src/headers/18/node_object_wrap.h +0 -132
  432. package/src/headers/18/node_process-inl.h +0 -26
  433. package/src/headers/18/node_report.h +0 -47
  434. package/src/headers/18/node_revert.h +0 -82
  435. package/src/headers/18/node_root_certs.h +0 -3246
  436. package/src/headers/18/node_snapshot_builder.h +0 -43
  437. package/src/headers/18/node_snapshotable.h +0 -130
  438. package/src/headers/18/node_stat_watcher.h +0 -72
  439. package/src/headers/18/node_union_bytes.h +0 -103
  440. package/src/headers/18/node_url.h +0 -205
  441. package/src/headers/18/node_v8.h +0 -41
  442. package/src/headers/18/node_v8_platform-inl.h +0 -194
  443. package/src/headers/18/node_wasi.h +0 -108
  444. package/src/headers/18/node_watchdog.h +0 -152
  445. package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
  446. package/src/headers/18/node_win32_etw_provider.h +0 -99
  447. package/src/headers/18/pipe_wrap.h +0 -80
  448. package/src/headers/18/req_wrap-inl.h +0 -170
  449. package/src/headers/18/spawn_sync.h +0 -242
  450. package/src/headers/18/stream_wrap.h +0 -133
  451. package/src/headers/18/string_decoder-inl.h +0 -37
  452. package/src/headers/18/string_decoder.h +0 -50
  453. package/src/headers/18/string_search.h +0 -638
  454. package/src/headers/18/tracing/node_trace_buffer.h +0 -83
  455. package/src/headers/18/tracing/node_trace_writer.h +0 -75
  456. package/src/headers/18/tracing/trace_event_common.h +0 -1109
  457. package/src/headers/18/tracing/traced_value.h +0 -70
  458. package/src/headers/18/udp_wrap.h +0 -227
  459. package/src/headers/18/v8abbr.h +0 -123
  460. /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
  461. /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
  462. /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
  463. /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
  464. /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
  465. /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
  466. /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
  467. /package/src/headers/{14 → 22}/inspector_io.h +0 -0
  468. /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
  469. /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
  470. /package/src/headers/{14 → 22}/js_stream.h +0 -0
  471. /package/src/headers/{14 → 22}/node_dir.h +0 -0
  472. /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
  473. /package/src/headers/{16 → 22}/node_mem.h +0 -0
  474. /package/src/headers/{16 → 22}/node_mutex.h +0 -0
  475. /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
  476. /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
  477. /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
  478. /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
  479. /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
  480. /package/src/headers/{18 → 22}/req_wrap.h +0 -0
  481. /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
  482. /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
  483. /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
  484. /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
  485. /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_