@encharm/cws 4.4.1 → 4.5.2

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 (606) hide show
  1. package/binding.gyp +1 -1
  2. package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
  3. package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
  4. package/dist/bindings/cws_darwin_arm64_node137.node +0 -0
  5. package/dist/bindings/cws_linux_arm64_node115.node +0 -0
  6. package/dist/bindings/cws_linux_arm64_node127.node +0 -0
  7. package/dist/bindings/cws_linux_x64_node115.node +0 -0
  8. package/dist/bindings/cws_linux_x64_node127.node +0 -0
  9. package/dist/bindings/cws_linux_x64_node137.node +0 -0
  10. package/dist/bindings/cws_win32_x64_node108.node +0 -0
  11. package/dist/bindings/cws_win32_x64_node115.node +0 -0
  12. package/dist/bindings/cws_win32_x64_node127.node +0 -0
  13. package/dist/bindings/cws_win32_x64_node83.node +0 -0
  14. package/dist/bindings/cws_win32_x64_node93.node +0 -0
  15. package/package.json +1 -1
  16. package/src/Addon.h +13 -23
  17. package/src/Socket.h +0 -1
  18. package/src/headers/22/acorn_version.h +6 -0
  19. package/src/headers/22/aliased_buffer-inl.h +243 -0
  20. package/src/headers/22/aliased_buffer.h +206 -0
  21. package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
  22. package/src/headers/{18 → 22}/async_wrap.h +65 -59
  23. package/src/headers/{18 → 22}/base_object-inl.h +57 -117
  24. package/src/headers/{18 → 22}/base_object.h +58 -30
  25. package/src/headers/22/base_object_types.h +74 -0
  26. package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
  27. package/src/headers/22/blob_serializer_deserializer.h +132 -0
  28. package/src/headers/{16 → 22}/callback_queue.h +1 -0
  29. package/src/headers/{16 → 22}/cares_wrap.h +27 -20
  30. package/src/headers/22/cjs_module_lexer_version.h +6 -0
  31. package/src/headers/22/cleanup_queue-inl.h +62 -0
  32. package/src/headers/22/cleanup_queue.h +85 -0
  33. package/src/headers/22/compile_cache.h +104 -0
  34. package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
  35. package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
  36. package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
  37. package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
  38. package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
  39. package/src/headers/22/crypto/ncrypto.h +752 -0
  40. package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
  41. package/src/headers/{18 → 22}/debug_utils.h +25 -19
  42. package/src/headers/22/encoding_binding.h +59 -0
  43. package/src/headers/{14 → 22}/env-inl.h +276 -409
  44. package/src/headers/22/env.h +1266 -0
  45. package/src/headers/22/env_properties.h +497 -0
  46. package/src/headers/{18 → 22}/handle_wrap.h +2 -0
  47. package/src/headers/{18 → 22}/histogram.h +88 -48
  48. package/src/headers/{16 → 22}/inspector_agent.h +17 -1
  49. package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
  50. package/src/headers/22/js_native_api.h +619 -0
  51. package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
  52. package/src/headers/22/js_native_api_v8.h +485 -0
  53. package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
  54. package/src/headers/22/json_parser.h +40 -0
  55. package/src/headers/{16 → 22}/json_utils.h +19 -8
  56. package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
  57. package/src/headers/{14 → 22}/memory_tracker.h +13 -8
  58. package/src/headers/{16 → 22}/module_wrap.h +49 -19
  59. package/src/headers/22/ncrypto/ncrypto.h +752 -0
  60. package/src/headers/{18 → 22}/node.h +465 -68
  61. package/src/headers/{18 → 22}/node_api.h +66 -81
  62. package/src/headers/{18 → 22}/node_api_internals.h +8 -4
  63. package/src/headers/{18 → 22}/node_api_types.h +5 -0
  64. package/src/headers/22/node_binding.h +154 -0
  65. package/src/headers/{18 → 22}/node_blob.h +46 -78
  66. package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
  67. package/src/headers/{18 → 22}/node_bob.h +2 -6
  68. package/src/headers/{18 → 22}/node_buffer.h +1 -1
  69. package/src/headers/22/node_builtins.h +220 -0
  70. package/src/headers/{18 → 22}/node_constants.h +3 -5
  71. package/src/headers/22/node_context_data.h +168 -0
  72. package/src/headers/22/node_contextify.h +199 -0
  73. package/src/headers/{16 → 22}/node_crypto.h +1 -2
  74. package/src/headers/22/node_dotenv.h +45 -0
  75. package/src/headers/{18 → 22}/node_errors.h +86 -27
  76. package/src/headers/22/node_exit_code.h +54 -0
  77. package/src/headers/22/node_external_reference.h +249 -0
  78. package/src/headers/{18 → 22}/node_file-inl.h +127 -30
  79. package/src/headers/{16 → 22}/node_file.h +122 -11
  80. package/src/headers/{18 → 22}/node_http2.h +28 -11
  81. package/src/headers/{16 → 22}/node_http2_state.h +34 -25
  82. package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
  83. package/src/headers/{18 → 22}/node_http_common.h +56 -55
  84. package/src/headers/{16 → 22}/node_i18n.h +5 -18
  85. package/src/headers/{18 → 22}/node_internals.h +121 -59
  86. package/src/headers/{18 → 22}/node_main_instance.h +4 -31
  87. package/src/headers/{18 → 22}/node_messaging.h +27 -10
  88. package/src/headers/{18 → 22}/node_metadata.h +23 -1
  89. package/src/headers/{18 → 22}/node_options-inl.h +24 -11
  90. package/src/headers/{18 → 22}/node_options.h +124 -39
  91. package/src/headers/{18 → 22}/node_perf.h +0 -2
  92. package/src/headers/{18 → 22}/node_perf_common.h +20 -9
  93. package/src/headers/{18 → 22}/node_platform.h +11 -5
  94. package/src/headers/{18 → 22}/node_process.h +26 -14
  95. package/src/headers/22/node_realm-inl.h +145 -0
  96. package/src/headers/22/node_realm.h +184 -0
  97. package/src/headers/{16 → 22}/node_report.h +13 -17
  98. package/src/headers/{16 → 22}/node_revert.h +3 -3
  99. package/src/headers/{16 → 22}/node_root_certs.h +902 -461
  100. package/src/headers/22/node_sea.h +64 -0
  101. package/src/headers/22/node_shadow_realm.h +46 -0
  102. package/src/headers/22/node_snapshot_builder.h +57 -0
  103. package/src/headers/22/node_snapshotable.h +174 -0
  104. package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
  105. package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
  106. package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
  107. package/src/headers/22/node_threadsafe_cow.h +105 -0
  108. package/src/headers/22/node_union_bytes.h +81 -0
  109. package/src/headers/22/node_url.h +96 -0
  110. package/src/headers/22/node_v8.h +77 -0
  111. package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
  112. package/src/headers/{16 → 22}/node_version.h +21 -9
  113. package/src/headers/22/node_wasi.h +185 -0
  114. package/src/headers/{14 → 22}/node_watchdog.h +2 -0
  115. package/src/headers/{18 → 22}/node_worker.h +7 -2
  116. package/src/headers/22/permission/child_process_permission.h +31 -0
  117. package/src/headers/22/permission/fs_permission.h +167 -0
  118. package/src/headers/22/permission/inspector_permission.h +31 -0
  119. package/src/headers/22/permission/permission.h +99 -0
  120. package/src/headers/22/permission/permission_base.h +60 -0
  121. package/src/headers/22/permission/wasi_permission.h +31 -0
  122. package/src/headers/22/permission/worker_permission.h +31 -0
  123. package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
  124. package/src/headers/{14 → 22}/spawn_sync.h +3 -3
  125. package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
  126. package/src/headers/{18 → 22}/stream_base.h +35 -16
  127. package/src/headers/{18 → 22}/stream_pipe.h +3 -4
  128. package/src/headers/{16 → 22}/stream_wrap.h +2 -1
  129. package/src/headers/{18 → 22}/string_bytes.h +5 -14
  130. package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
  131. package/src/headers/{16 → 22}/string_decoder.h +0 -1
  132. package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
  133. package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
  134. package/src/headers/22/timers.h +76 -0
  135. package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
  136. package/src/headers/{16 → 22}/udp_wrap.h +8 -5
  137. package/src/headers/22/undici_version.h +6 -0
  138. package/src/headers/{18 → 22}/util-inl.h +97 -127
  139. package/src/headers/{18 → 22}/util.h +293 -106
  140. package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
  141. package/src/headers/24/acorn_version.h +6 -0
  142. package/src/headers/24/addon_permission.h +31 -0
  143. package/src/headers/{16/tracing → 24}/agent.h +1 -1
  144. package/src/headers/24/aliased_buffer-inl.h +244 -0
  145. package/src/headers/24/aliased_buffer.h +206 -0
  146. package/src/headers/24/amaro_version.h +6 -0
  147. package/src/headers/24/application.h +165 -0
  148. package/src/headers/24/async_context_frame.h +33 -0
  149. package/src/headers/{14 → 24}/async_wrap-inl.h +8 -6
  150. package/src/headers/{16 → 24}/async_wrap.h +86 -88
  151. package/src/headers/{16 → 24}/base_object-inl.h +75 -119
  152. package/src/headers/{16 → 24}/base_object.h +84 -40
  153. package/src/headers/24/base_object_types.h +74 -0
  154. package/src/headers/24/bindingdata.h +272 -0
  155. package/src/headers/24/blob_serializer_deserializer-inl.h +385 -0
  156. package/src/headers/24/blob_serializer_deserializer.h +132 -0
  157. package/src/headers/{18 → 24}/callback_queue.h +1 -0
  158. package/src/headers/{18 → 24}/cares_wrap.h +68 -144
  159. package/src/headers/24/child_process_permission.h +31 -0
  160. package/src/headers/24/cid.h +127 -0
  161. package/src/headers/24/cjs_module_lexer_version.h +6 -0
  162. package/src/headers/24/cleanup_queue-inl.h +36 -0
  163. package/src/headers/24/cleanup_queue.h +79 -0
  164. package/src/headers/24/compile_cache.h +113 -0
  165. package/src/headers/24/cppgc_helpers-inl.h +65 -0
  166. package/src/headers/24/cppgc_helpers.h +162 -0
  167. package/src/headers/24/crypto/crypto_aes.h +97 -0
  168. package/src/headers/24/crypto/crypto_argon2.h +86 -0
  169. package/src/headers/{16 → 24}/crypto/crypto_bio.h +8 -9
  170. package/src/headers/24/crypto/crypto_chacha20_poly1305.h +64 -0
  171. package/src/headers/{18 → 24}/crypto/crypto_cipher.h +48 -58
  172. package/src/headers/{16 → 24}/crypto/crypto_clienthello-inl.h +2 -2
  173. package/src/headers/{16 → 24}/crypto/crypto_clienthello.h +1 -1
  174. package/src/headers/24/crypto/crypto_common.h +48 -0
  175. package/src/headers/{16 → 24}/crypto/crypto_context.h +46 -22
  176. package/src/headers/{18 → 24}/crypto/crypto_dh.h +27 -57
  177. package/src/headers/{18 → 24}/crypto/crypto_dsa.h +7 -34
  178. package/src/headers/{18 → 24}/crypto/crypto_ec.h +42 -49
  179. package/src/headers/{18 → 24}/crypto/crypto_hash.h +11 -11
  180. package/src/headers/{18 → 24}/crypto/crypto_hkdf.h +10 -14
  181. package/src/headers/{18 → 24}/crypto/crypto_hmac.h +11 -13
  182. package/src/headers/24/crypto/crypto_kem.h +113 -0
  183. package/src/headers/{18 → 24}/crypto/crypto_keygen.h +59 -74
  184. package/src/headers/{16 → 24}/crypto/crypto_keys.h +134 -154
  185. package/src/headers/24/crypto/crypto_ml_dsa.h +21 -0
  186. package/src/headers/{18 → 24}/crypto/crypto_pbkdf2.h +9 -11
  187. package/src/headers/{18 → 24}/crypto/crypto_random.h +28 -34
  188. package/src/headers/{18 → 24}/crypto/crypto_rsa.h +30 -35
  189. package/src/headers/{18 → 24}/crypto/crypto_scrypt.h +8 -10
  190. package/src/headers/{18 → 24}/crypto/crypto_sig.h +36 -48
  191. package/src/headers/{16 → 24}/crypto/crypto_tls.h +35 -18
  192. package/src/headers/{16 → 24}/crypto/crypto_util.h +183 -321
  193. package/src/headers/24/crypto/crypto_x509.h +140 -0
  194. package/src/headers/24/data.h +148 -0
  195. package/src/headers/{14 → 24}/debug_utils-inl.h +17 -8
  196. package/src/headers/{16 → 24}/debug_utils.h +31 -22
  197. package/src/headers/24/defs.h +254 -0
  198. package/src/headers/24/embedded_data.h +17 -0
  199. package/src/headers/24/encoding_binding.h +60 -0
  200. package/src/headers/24/endpoint.h +421 -0
  201. package/src/headers/{16 → 24}/env-inl.h +198 -540
  202. package/src/headers/24/env.h +1257 -0
  203. package/src/headers/24/env_properties.h +561 -0
  204. package/src/headers/24/fs_permission.h +167 -0
  205. package/src/headers/{16 → 24}/handle_wrap.h +4 -2
  206. package/src/headers/{16 → 24}/histogram-inl.h +34 -15
  207. package/src/headers/24/histogram.h +279 -0
  208. package/src/headers/24/http3.h +44 -0
  209. package/src/headers/{18 → 24}/inspector_agent.h +23 -2
  210. package/src/headers/24/inspector_permission.h +31 -0
  211. package/src/headers/{18 → 24}/inspector_profiler.h +15 -15
  212. package/src/headers/24/io_agent.h +30 -0
  213. package/src/headers/{18 → 24}/js_native_api.h +74 -30
  214. package/src/headers/{16 → 24}/js_native_api_types.h +61 -10
  215. package/src/headers/{18 → 24}/js_native_api_v8.h +205 -160
  216. package/src/headers/{16 → 24}/js_native_api_v8_internals.h +12 -6
  217. package/src/headers/24/json_parser.h +40 -0
  218. package/src/headers/{18 → 24}/json_utils.h +19 -8
  219. package/src/headers/24/logstream.h +81 -0
  220. package/src/headers/24/main_thread_interface.h +116 -0
  221. package/src/headers/{16 → 24}/memory_tracker-inl.h +115 -17
  222. package/src/headers/{16 → 24}/memory_tracker.h +58 -9
  223. package/src/headers/24/module_wrap.h +229 -0
  224. package/src/headers/24/ncrypto.h +1625 -0
  225. package/src/headers/24/network_agent.h +118 -0
  226. package/src/headers/24/network_inspector.h +45 -0
  227. package/src/headers/24/network_resource_manager.h +29 -0
  228. package/src/headers/{16 → 24}/node.h +560 -72
  229. package/src/headers/24/node_api.h +269 -0
  230. package/src/headers/24/node_api_internals.h +46 -0
  231. package/src/headers/{16 → 24}/node_api_types.h +13 -11
  232. package/src/headers/24/node_binding.h +163 -0
  233. package/src/headers/{16 → 24}/node_blob.h +46 -78
  234. package/src/headers/{16 → 24}/node_bob-inl.h +1 -2
  235. package/src/headers/{16 → 24}/node_bob.h +2 -6
  236. package/src/headers/{14 → 24}/node_buffer.h +1 -1
  237. package/src/headers/24/node_builtins.h +223 -0
  238. package/src/headers/24/node_config_file.h +65 -0
  239. package/src/headers/{14 → 24}/node_constants.h +3 -5
  240. package/src/headers/24/node_context_data.h +168 -0
  241. package/src/headers/24/node_contextify.h +261 -0
  242. package/src/headers/{18 → 24}/node_crypto.h +7 -2
  243. package/src/headers/24/node_debug.h +25 -0
  244. package/src/headers/24/node_dotenv.h +45 -0
  245. package/src/headers/{16 → 24}/node_errors.h +146 -32
  246. package/src/headers/24/node_exit_code.h +54 -0
  247. package/src/headers/{18 → 24}/node_external_reference.h +44 -22
  248. package/src/headers/{16 → 24}/node_file-inl.h +156 -50
  249. package/src/headers/{18 → 24}/node_file.h +129 -15
  250. package/src/headers/{16 → 24}/node_http2.h +53 -18
  251. package/src/headers/{14 → 24}/node_http2_state.h +35 -25
  252. package/src/headers/{16 → 24}/node_http_common-inl.h +8 -10
  253. package/src/headers/{16 → 24}/node_http_common.h +63 -59
  254. package/src/headers/{18 → 24}/node_i18n.h +5 -18
  255. package/src/headers/{16 → 24}/node_internals.h +131 -76
  256. package/src/headers/24/node_json.h +24 -0
  257. package/src/headers/24/node_large_page.h +34 -0
  258. package/src/headers/24/node_locks.h +180 -0
  259. package/src/headers/{14 → 24}/node_main_instance.h +15 -44
  260. package/src/headers/{16 → 24}/node_mem-inl.h +7 -7
  261. package/src/headers/{16 → 24}/node_messaging.h +27 -11
  262. package/src/headers/{16 → 24}/node_metadata.h +44 -2
  263. package/src/headers/24/node_modules.h +93 -0
  264. package/src/headers/{16 → 24}/node_options-inl.h +93 -46
  265. package/src/headers/{16 → 24}/node_options.h +251 -63
  266. package/src/headers/{16 → 24}/node_perf.h +6 -25
  267. package/src/headers/{16 → 24}/node_perf_common.h +23 -10
  268. package/src/headers/24/node_platform.h +286 -0
  269. package/src/headers/24/node_process.h +111 -0
  270. package/src/headers/24/node_realm-inl.h +153 -0
  271. package/src/headers/24/node_realm.h +236 -0
  272. package/src/headers/{18 → 24}/node_report.h +13 -17
  273. package/src/headers/{18 → 24}/node_revert.h +3 -3
  274. package/src/headers/{18 → 24}/node_root_certs.h +1010 -710
  275. package/src/headers/24/node_sea.h +74 -0
  276. package/src/headers/24/node_shadow_realm.h +46 -0
  277. package/src/headers/24/node_snapshot_builder.h +57 -0
  278. package/src/headers/24/node_snapshotable.h +174 -0
  279. package/src/headers/{16 → 24}/node_sockaddr-inl.h +11 -20
  280. package/src/headers/{16 → 24}/node_sockaddr.h +9 -20
  281. package/src/headers/24/node_sqlite.h +270 -0
  282. package/src/headers/{18 → 24}/node_stat_watcher.h +2 -1
  283. package/src/headers/24/node_string.h +101 -0
  284. package/src/headers/24/node_task_runner.h +92 -0
  285. package/src/headers/24/node_threadsafe_cow-inl.h +54 -0
  286. package/src/headers/24/node_threadsafe_cow.h +105 -0
  287. package/src/headers/24/node_union_bytes.h +81 -0
  288. package/src/headers/24/node_url.h +101 -0
  289. package/src/headers/24/node_url_pattern.h +118 -0
  290. package/src/headers/24/node_v8.h +77 -0
  291. package/src/headers/{18 → 24}/node_v8_platform-inl.h +22 -31
  292. package/src/headers/{18 → 24}/node_version.h +18 -6
  293. package/src/headers/24/node_wasi.h +185 -0
  294. package/src/headers/24/node_wasm_web_api.h +55 -0
  295. package/src/headers/{18 → 24}/node_watchdog.h +2 -0
  296. package/src/headers/24/node_webstorage.h +60 -0
  297. package/src/headers/{16 → 24}/node_worker.h +24 -10
  298. package/src/headers/24/packet.h +155 -0
  299. package/src/headers/24/path.h +33 -0
  300. package/src/headers/24/permission/addon_permission.h +31 -0
  301. package/src/headers/24/permission/child_process_permission.h +31 -0
  302. package/src/headers/24/permission/fs_permission.h +167 -0
  303. package/src/headers/24/permission/inspector_permission.h +31 -0
  304. package/src/headers/24/permission/permission.h +100 -0
  305. package/src/headers/24/permission/permission_base.h +65 -0
  306. package/src/headers/24/permission/wasi_permission.h +31 -0
  307. package/src/headers/24/permission/worker_permission.h +31 -0
  308. package/src/headers/24/permission.h +100 -0
  309. package/src/headers/24/permission_base.h +65 -0
  310. package/src/headers/24/preferredaddress.h +72 -0
  311. package/src/headers/24/protocol_helper.h +27 -0
  312. package/src/headers/24/queue.h +306 -0
  313. package/src/headers/{18 → 24}/req_wrap-inl.h +12 -6
  314. package/src/headers/{16 → 24}/req_wrap.h +3 -1
  315. package/src/headers/24/runtime_agent.h +41 -0
  316. package/src/headers/24/session.h +528 -0
  317. package/src/headers/24/sessionticket.h +108 -0
  318. package/src/headers/{18 → 24}/spawn_sync.h +9 -8
  319. package/src/headers/{16 → 24}/stream_base-inl.h +3 -133
  320. package/src/headers/{16 → 24}/stream_base.h +43 -19
  321. package/src/headers/{16 → 24}/stream_pipe.h +7 -4
  322. package/src/headers/{18 → 24}/stream_wrap.h +2 -3
  323. package/src/headers/24/streams.h +370 -0
  324. package/src/headers/{16 → 24}/string_bytes.h +8 -21
  325. package/src/headers/{18 → 24}/string_decoder-inl.h +0 -6
  326. package/src/headers/{18 → 24}/string_decoder.h +0 -1
  327. package/src/headers/24/target_agent.h +75 -0
  328. package/src/headers/{16 → 24}/tcp_wrap.h +3 -1
  329. package/src/headers/{14 → 24}/threadpoolwork-inl.h +14 -1
  330. package/src/headers/24/timer_wrap-inl.h +32 -0
  331. package/src/headers/{16 → 24}/timer_wrap.h +7 -4
  332. package/src/headers/24/timers.h +75 -0
  333. package/src/headers/24/tlscontext.h +228 -0
  334. package/src/headers/24/tokens.h +256 -0
  335. package/src/headers/{14/tracing → 24}/trace_event.h +7 -5
  336. package/src/headers/24/traced_value.h +129 -0
  337. package/src/headers/24/tracing_agent.h +43 -0
  338. package/src/headers/24/transportparams.h +166 -0
  339. package/src/headers/{16 → 24}/tty_wrap.h +0 -1
  340. package/src/headers/{18 → 24}/udp_wrap.h +8 -5
  341. package/src/headers/24/undici_version.h +6 -0
  342. package/src/headers/{16 → 24}/util-inl.h +267 -131
  343. package/src/headers/{16 → 24}/util.h +338 -146
  344. package/src/headers/24/v8-external-memory-accounter.h +60 -0
  345. package/src/headers/24/v8-fast-api-calls.h +819 -0
  346. package/src/headers/24/v8-inspector.h +426 -0
  347. package/src/headers/24/wasi_permission.h +31 -0
  348. package/src/headers/24/worker_agent.h +40 -0
  349. package/src/headers/24/worker_inspector.h +124 -0
  350. package/src/headers/24/worker_permission.h +31 -0
  351. package/src/headers/24/zlib_version.h +6 -0
  352. package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
  353. package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
  354. package/dist/bindings/cws_darwin_x64_node83.node +0 -0
  355. package/dist/bindings/cws_darwin_x64_node93.node +0 -0
  356. package/dist/bindings/cws_linux_arm64_node83.node +0 -0
  357. package/dist/bindings/cws_linux_arm64_node93.node +0 -0
  358. package/dist/bindings/cws_linux_x64_node83.node +0 -0
  359. package/dist/bindings/cws_linux_x64_node93.node +0 -0
  360. package/src/headers/14/aliased_buffer.h +0 -263
  361. package/src/headers/14/allocated_buffer-inl.h +0 -110
  362. package/src/headers/14/allocated_buffer.h +0 -73
  363. package/src/headers/14/async_wrap.h +0 -230
  364. package/src/headers/14/base64.h +0 -183
  365. package/src/headers/14/base_object-inl.h +0 -371
  366. package/src/headers/14/base_object.h +0 -281
  367. package/src/headers/14/callback_queue-inl.h +0 -97
  368. package/src/headers/14/callback_queue.h +0 -78
  369. package/src/headers/14/debug_utils.h +0 -181
  370. package/src/headers/14/env.h +0 -1388
  371. package/src/headers/14/handle_wrap.h +0 -117
  372. package/src/headers/14/histogram-inl.h +0 -83
  373. package/src/headers/14/histogram.h +0 -98
  374. package/src/headers/14/inspector_agent.h +0 -149
  375. package/src/headers/14/inspector_profiler.h +0 -137
  376. package/src/headers/14/js_native_api.h +0 -544
  377. package/src/headers/14/js_native_api_types.h +0 -143
  378. package/src/headers/14/js_native_api_v8.h +0 -301
  379. package/src/headers/14/js_native_api_v8_internals.h +0 -38
  380. package/src/headers/14/json_utils.h +0 -161
  381. package/src/headers/14/memory_tracker-inl.h +0 -355
  382. package/src/headers/14/module_wrap.h +0 -99
  383. package/src/headers/14/node.h +0 -1032
  384. package/src/headers/14/node_api.h +0 -255
  385. package/src/headers/14/node_api_types.h +0 -44
  386. package/src/headers/14/node_binding.h +0 -99
  387. package/src/headers/14/node_context_data.h +0 -44
  388. package/src/headers/14/node_contextify.h +0 -161
  389. package/src/headers/14/node_crypto.h +0 -865
  390. package/src/headers/14/node_crypto_bio.h +0 -195
  391. package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
  392. package/src/headers/14/node_crypto_clienthello.h +0 -132
  393. package/src/headers/14/node_crypto_common.h +0 -138
  394. package/src/headers/14/node_crypto_groups.h +0 -415
  395. package/src/headers/14/node_dtrace.h +0 -86
  396. package/src/headers/14/node_errors.h +0 -214
  397. package/src/headers/14/node_file-inl.h +0 -306
  398. package/src/headers/14/node_file.h +0 -417
  399. package/src/headers/14/node_http2.h +0 -1191
  400. package/src/headers/14/node_http_common-inl.h +0 -194
  401. package/src/headers/14/node_http_common.h +0 -529
  402. package/src/headers/14/node_i18n.h +0 -144
  403. package/src/headers/14/node_internals.h +0 -405
  404. package/src/headers/14/node_mem.h +0 -45
  405. package/src/headers/14/node_messaging.h +0 -303
  406. package/src/headers/14/node_metadata.h +0 -109
  407. package/src/headers/14/node_mutex.h +0 -247
  408. package/src/headers/14/node_native_module.h +0 -101
  409. package/src/headers/14/node_native_module_env.h +0 -66
  410. package/src/headers/14/node_options-inl.h +0 -451
  411. package/src/headers/14/node_options.h +0 -481
  412. package/src/headers/14/node_perf.h +0 -181
  413. package/src/headers/14/node_perf_common.h +0 -97
  414. package/src/headers/14/node_platform.h +0 -189
  415. package/src/headers/14/node_process.h +0 -40
  416. package/src/headers/14/node_report.h +0 -47
  417. package/src/headers/14/node_revert.h +0 -72
  418. package/src/headers/14/node_root_certs.h +0 -3458
  419. package/src/headers/14/node_sockaddr-inl.h +0 -170
  420. package/src/headers/14/node_sockaddr.h +0 -123
  421. package/src/headers/14/node_stat_watcher.h +0 -70
  422. package/src/headers/14/node_union_bytes.h +0 -103
  423. package/src/headers/14/node_url.h +0 -188
  424. package/src/headers/14/node_version.h +0 -98
  425. package/src/headers/14/node_wasi.h +0 -108
  426. package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
  427. package/src/headers/14/node_win32_etw_provider.h +0 -99
  428. package/src/headers/14/node_worker.h +0 -141
  429. package/src/headers/14/pipe_wrap.h +0 -78
  430. package/src/headers/14/req_wrap-inl.h +0 -170
  431. package/src/headers/14/req_wrap.h +0 -77
  432. package/src/headers/14/stream_base-inl.h +0 -275
  433. package/src/headers/14/stream_base.h +0 -434
  434. package/src/headers/14/stream_pipe.h +0 -73
  435. package/src/headers/14/stream_wrap.h +0 -130
  436. package/src/headers/14/string_bytes.h +0 -129
  437. package/src/headers/14/string_decoder.h +0 -50
  438. package/src/headers/14/string_search.h +0 -638
  439. package/src/headers/14/tcp_wrap.h +0 -101
  440. package/src/headers/14/tls_wrap.h +0 -222
  441. package/src/headers/14/tracing/agent.h +0 -195
  442. package/src/headers/14/tracing/traced_value.h +0 -70
  443. package/src/headers/14/tty_wrap.h +0 -64
  444. package/src/headers/14/udp_wrap.h +0 -227
  445. package/src/headers/14/util-inl.h +0 -566
  446. package/src/headers/14/util.h +0 -804
  447. package/src/headers/14/v8abbr.h +0 -124
  448. package/src/headers/16/aliased_buffer.h +0 -315
  449. package/src/headers/16/allocated_buffer-inl.h +0 -110
  450. package/src/headers/16/allocated_buffer.h +0 -73
  451. package/src/headers/16/async_wrap-inl.h +0 -94
  452. package/src/headers/16/base64-inl.h +0 -189
  453. package/src/headers/16/base64.h +0 -69
  454. package/src/headers/16/crypto/crypto_aes.h +0 -89
  455. package/src/headers/16/crypto/crypto_cipher.h +0 -286
  456. package/src/headers/16/crypto/crypto_common.h +0 -187
  457. package/src/headers/16/crypto/crypto_dh.h +0 -157
  458. package/src/headers/16/crypto/crypto_dsa.h +0 -76
  459. package/src/headers/16/crypto/crypto_ec.h +0 -169
  460. package/src/headers/16/crypto/crypto_groups.h +0 -415
  461. package/src/headers/16/crypto/crypto_hash.h +0 -89
  462. package/src/headers/16/crypto/crypto_hkdf.h +0 -66
  463. package/src/headers/16/crypto/crypto_hmac.h +0 -94
  464. package/src/headers/16/crypto/crypto_keygen.h +0 -301
  465. package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
  466. package/src/headers/16/crypto/crypto_random.h +0 -130
  467. package/src/headers/16/crypto/crypto_rsa.h +0 -141
  468. package/src/headers/16/crypto/crypto_scrypt.h +0 -87
  469. package/src/headers/16/crypto/crypto_sig.h +0 -167
  470. package/src/headers/16/crypto/crypto_spkac.h +0 -20
  471. package/src/headers/16/crypto/crypto_timing.h +0 -20
  472. package/src/headers/16/crypto/crypto_x509.h +0 -141
  473. package/src/headers/16/env.h +0 -1629
  474. package/src/headers/16/histogram.h +0 -216
  475. package/src/headers/16/js_native_api.h +0 -561
  476. package/src/headers/16/js_native_api_v8.h +0 -451
  477. package/src/headers/16/node.d +0 -315
  478. package/src/headers/16/node.stp +0 -146
  479. package/src/headers/16/node_api.h +0 -275
  480. package/src/headers/16/node_api_internals.h +0 -30
  481. package/src/headers/16/node_binding.h +0 -99
  482. package/src/headers/16/node_buffer.h +0 -92
  483. package/src/headers/16/node_constants.h +0 -84
  484. package/src/headers/16/node_context_data.h +0 -44
  485. package/src/headers/16/node_contextify.h +0 -196
  486. package/src/headers/16/node_dtrace.h +0 -86
  487. package/src/headers/16/node_external_reference.h +0 -129
  488. package/src/headers/16/node_main_instance.h +0 -103
  489. package/src/headers/16/node_native_module.h +0 -101
  490. package/src/headers/16/node_native_module_env.h +0 -68
  491. package/src/headers/16/node_platform.h +0 -192
  492. package/src/headers/16/node_process.h +0 -43
  493. package/src/headers/16/node_provider.d +0 -80
  494. package/src/headers/16/node_snapshotable.h +0 -137
  495. package/src/headers/16/node_union_bytes.h +0 -103
  496. package/src/headers/16/node_url.h +0 -205
  497. package/src/headers/16/node_v8.h +0 -41
  498. package/src/headers/16/node_v8_platform-inl.h +0 -194
  499. package/src/headers/16/node_wasi.h +0 -108
  500. package/src/headers/16/node_watchdog.h +0 -152
  501. package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
  502. package/src/headers/16/node_win32_etw_provider.h +0 -99
  503. package/src/headers/16/spawn_sync.h +0 -242
  504. package/src/headers/16/string_decoder-inl.h +0 -37
  505. package/src/headers/16/string_search.h +0 -638
  506. package/src/headers/16/threadpoolwork-inl.h +0 -57
  507. package/src/headers/16/tracing/node_trace_buffer.h +0 -83
  508. package/src/headers/16/tracing/node_trace_writer.h +0 -75
  509. package/src/headers/16/tracing/trace_event.h +0 -720
  510. package/src/headers/16/tracing/traced_value.h +0 -70
  511. package/src/headers/16/v8abbr.h +0 -123
  512. package/src/headers/16/v8ustack.d +0 -695
  513. package/src/headers/18/aliased_buffer.h +0 -315
  514. package/src/headers/18/aliased_struct-inl.h +0 -54
  515. package/src/headers/18/aliased_struct.h +0 -63
  516. package/src/headers/18/base64-inl.h +0 -189
  517. package/src/headers/18/base64.h +0 -69
  518. package/src/headers/18/connect_wrap.h +0 -26
  519. package/src/headers/18/connection_wrap.h +0 -30
  520. package/src/headers/18/crypto/crypto_aes.h +0 -89
  521. package/src/headers/18/crypto/crypto_bio.h +0 -194
  522. package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
  523. package/src/headers/18/crypto/crypto_common.h +0 -151
  524. package/src/headers/18/crypto/crypto_groups.h +0 -415
  525. package/src/headers/18/crypto/crypto_x509.h +0 -143
  526. package/src/headers/18/debug_utils-inl.h +0 -223
  527. package/src/headers/18/diagnosticfilename-inl.h +0 -33
  528. package/src/headers/18/env-inl.h +0 -1308
  529. package/src/headers/18/env.h +0 -1667
  530. package/src/headers/18/inspector_io.h +0 -78
  531. package/src/headers/18/inspector_socket.h +0 -60
  532. package/src/headers/18/inspector_socket_server.h +0 -110
  533. package/src/headers/18/js_stream.h +0 -52
  534. package/src/headers/18/memory_tracker.h +0 -284
  535. package/src/headers/18/module_wrap.h +0 -116
  536. package/src/headers/18/node_binding.h +0 -99
  537. package/src/headers/18/node_context_data.h +0 -44
  538. package/src/headers/18/node_contextify.h +0 -196
  539. package/src/headers/18/node_dir.h +0 -52
  540. package/src/headers/18/node_dtrace.h +0 -86
  541. package/src/headers/18/node_http2_state.h +0 -149
  542. package/src/headers/18/node_mem-inl.h +0 -112
  543. package/src/headers/18/node_native_module.h +0 -109
  544. package/src/headers/18/node_native_module_env.h +0 -71
  545. package/src/headers/18/node_object_wrap.h +0 -132
  546. package/src/headers/18/node_snapshot_builder.h +0 -43
  547. package/src/headers/18/node_snapshotable.h +0 -130
  548. package/src/headers/18/node_union_bytes.h +0 -103
  549. package/src/headers/18/node_url.h +0 -205
  550. package/src/headers/18/node_v8.h +0 -41
  551. package/src/headers/18/node_wasi.h +0 -108
  552. package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
  553. package/src/headers/18/node_win32_etw_provider.h +0 -99
  554. package/src/headers/18/string_search.h +0 -638
  555. package/src/headers/18/tracing/node_trace_buffer.h +0 -83
  556. package/src/headers/18/tracing/node_trace_writer.h +0 -75
  557. package/src/headers/18/tracing/trace_event_common.h +0 -1109
  558. package/src/headers/18/tracing/traced_value.h +0 -70
  559. package/src/headers/18/v8abbr.h +0 -123
  560. /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
  561. /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
  562. /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
  563. /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
  564. /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
  565. /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
  566. /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
  567. /package/src/headers/{14 → 22}/inspector_io.h +0 -0
  568. /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
  569. /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
  570. /package/src/headers/{14 → 22}/js_stream.h +0 -0
  571. /package/src/headers/{14 → 22}/node_dir.h +0 -0
  572. /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
  573. /package/src/headers/{16 → 22}/node_mem.h +0 -0
  574. /package/src/headers/{16 → 22}/node_mutex.h +0 -0
  575. /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
  576. /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
  577. /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
  578. /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
  579. /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
  580. /package/src/headers/{18 → 22}/req_wrap.h +0 -0
  581. /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
  582. /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
  583. /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
  584. /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
  585. /package/src/headers/{18 → 22}/tty_wrap.h +0 -0
  586. /package/src/headers/{16 → 24}/aliased_struct-inl.h +0 -0
  587. /package/src/headers/{16 → 24}/aliased_struct.h +0 -0
  588. /package/src/headers/{18 → 24}/callback_queue-inl.h +0 -0
  589. /package/src/headers/{16 → 24}/connect_wrap.h +0 -0
  590. /package/src/headers/{16 → 24}/connection_wrap.h +0 -0
  591. /package/src/headers/{18 → 24}/crypto/crypto_spkac.h +0 -0
  592. /package/src/headers/{18 → 24}/crypto/crypto_timing.h +0 -0
  593. /package/src/headers/{16 → 24}/diagnosticfilename-inl.h +0 -0
  594. /package/src/headers/{16 → 24}/inspector_io.h +0 -0
  595. /package/src/headers/{16 → 24}/inspector_socket.h +0 -0
  596. /package/src/headers/{16 → 24}/inspector_socket_server.h +0 -0
  597. /package/src/headers/{16 → 24}/js_stream.h +0 -0
  598. /package/src/headers/{16 → 24}/node_dir.h +0 -0
  599. /package/src/headers/{18 → 24}/node_mem.h +0 -0
  600. /package/src/headers/{18 → 24}/node_mutex.h +0 -0
  601. /package/src/headers/{16 → 24}/node_object_wrap.h +0 -0
  602. /package/src/headers/{18 → 24}/node_process-inl.h +0 -0
  603. /package/src/headers/{14/tracing → 24}/node_trace_buffer.h +0 -0
  604. /package/src/headers/{14/tracing → 24}/node_trace_writer.h +0 -0
  605. /package/src/headers/{18 → 24}/pipe_wrap.h +0 -0
  606. /package/src/headers/{16/tracing → 24}/trace_event_common.h +0 -0
@@ -0,0 +1,370 @@
1
+ #pragma once
2
+
3
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
4
+ #if HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC
5
+
6
+ #include <aliased_struct.h>
7
+ #include <async_wrap.h>
8
+ #include <base_object.h>
9
+ #include <dataqueue/queue.h>
10
+ #include <env.h>
11
+ #include <memory_tracker.h>
12
+ #include <node_blob.h>
13
+ #include <node_bob.h>
14
+ #include <node_http_common.h>
15
+ #include <util.h>
16
+ #include "bindingdata.h"
17
+ #include "data.h"
18
+
19
+ namespace node::quic {
20
+
21
+ class Session;
22
+ class Stream;
23
+
24
+ using Ngtcp2Source = bob::SourceImpl<ngtcp2_vec>;
25
+
26
+ // When a request to open a stream is made before a Session is able to actually
27
+ // open a stream (either because the handshake is not yet sufficiently complete
28
+ // or concurrency limits are temporarily reached) then the request to open the
29
+ // stream is represented as a queued PendingStream.
30
+ //
31
+ // The PendingStream instance itself is held by the stream but sits in a linked
32
+ // list in the session.
33
+ //
34
+ // The PendingStream request can be canceled by dropping the PendingStream
35
+ // instance before it can be fulfilled, at which point it is removed from the
36
+ // pending stream queue.
37
+ //
38
+ // Note that only locally initiated streams can be created in a pending state.
39
+ class PendingStream final {
40
+ public:
41
+ PendingStream(Direction direction,
42
+ Stream* stream,
43
+ BaseObjectWeakPtr<Session> session);
44
+ DISALLOW_COPY_AND_MOVE(PendingStream)
45
+ ~PendingStream();
46
+
47
+ // Called when the stream has been opened. Transitions the stream from a
48
+ // pending state to an opened state.
49
+ void fulfill(int64_t id);
50
+
51
+ // Called when opening the stream fails or is canceled. Transitions the
52
+ // stream into a closed/destroyed state.
53
+ void reject(QuicError error = QuicError());
54
+
55
+ inline Direction direction() const { return direction_; }
56
+
57
+ private:
58
+ Direction direction_;
59
+ Stream* stream_;
60
+ BaseObjectWeakPtr<Session> session_;
61
+ bool waiting_ = true;
62
+
63
+ ListNode<PendingStream> pending_stream_queue_;
64
+
65
+ public:
66
+ using PendingStreamQueue =
67
+ ListHead<PendingStream, &PendingStream::pending_stream_queue_>;
68
+ };
69
+
70
+ // QUIC Stream's are simple data flows that may be:
71
+ //
72
+ // * Bidirectional (both sides can send) or Unidirectional (one side can send)
73
+ // * Server or Client Initiated
74
+ //
75
+ // The flow direction and origin of the stream are important in determining the
76
+ // write and read state (Open or Closed). Specifically:
77
+ //
78
+ // Bidirectional Stream States:
79
+ // +--------+--------------+----------+----------+
80
+ // | ON | Initiated By | Readable | Writable |
81
+ // +--------+--------------+----------+----------+
82
+ // | Server | Server | Y | Y |
83
+ // +--------+--------------+----------+----------+
84
+ // | Server | Client | Y | Y |
85
+ // +--------+--------------+----------+----------+
86
+ // | Client | Server | Y | Y |
87
+ // +--------+--------------+----------+----------+
88
+ // | Client | Client | Y | Y |
89
+ // +--------+--------------+----------+----------+
90
+ //
91
+ // Unidirectional Stream States
92
+ // +--------+--------------+----------+----------+
93
+ // | ON | Initiated By | Readable | Writable |
94
+ // +--------+--------------+----------+----------+
95
+ // | Server | Server | N | Y |
96
+ // +--------+--------------+----------+----------+
97
+ // | Server | Client | Y | N |
98
+ // +--------+--------------+----------+----------+
99
+ // | Client | Server | Y | N |
100
+ // +--------+--------------+----------+----------+
101
+ // | Client | Client | N | Y |
102
+ // +--------+--------------+----------+----------+
103
+ //
104
+ // All data sent via the Stream is buffered internally until either receipt is
105
+ // acknowledged from the peer or attempts to send are abandoned. The fact that
106
+ // data is buffered in memory makes it essential that the flow control for the
107
+ // session and the stream are properly handled. For now, we are largely relying
108
+ // on ngtcp2's default flow control mechanisms which generally should be doing
109
+ // the right thing.
110
+ //
111
+ // A Stream may be in a fully closed state (No longer readable nor writable)
112
+ // state but still have unacknowledged data in both the inbound and outbound
113
+ // queues.
114
+ //
115
+ // A Stream is gracefully closed when (a) both read and write states are closed,
116
+ // (b) all queued data has been acknowledged.
117
+ //
118
+ // The Stream may be forcefully closed immediately using destroy(err). This
119
+ // causes all queued outbound data and pending JavaScript writes are abandoned,
120
+ // and causes the Stream to be immediately closed at the ngtcp2 level without
121
+ // waiting for any outstanding acknowledgements. Keep in mind, however, that the
122
+ // peer is not notified that the stream is destroyed and may attempt to continue
123
+ // sending data and acknowledgements.
124
+ //
125
+ // QUIC streams in general do not have headers. Some QUIC applications, however,
126
+ // may associate headers with the stream (HTTP/3 for instance).
127
+ //
128
+ // Streams may be created in a pending state. This means that while the Stream
129
+ // object is created, it has not yet been opened in ngtcp2 and therefore has
130
+ // no official status yet. Certain operations can still be performed on the
131
+ // stream object such as providing data and headers, and destroying the stream.
132
+ //
133
+ // When a stream is created the data source for the stream must be given.
134
+ // If no data source is given, then the stream is assumed to not have any
135
+ // outbound data. The data source can be fixed length or may support
136
+ // streaming. What this means practically is, when a stream is opened,
137
+ // you must already have a sense of whether that will provide data or
138
+ // not. When in doubt, specify a streaming data source, which can produce
139
+ // zero-length output.
140
+ class Stream final : public AsyncWrap,
141
+ public Ngtcp2Source,
142
+ public DataQueue::BackpressureListener {
143
+ public:
144
+ using Header = NgHeaderBase<BindingData>;
145
+
146
+ static v8::Maybe<std::shared_ptr<DataQueue>> GetDataQueueFromSource(
147
+ Environment* env, v8::Local<v8::Value> value);
148
+
149
+ static Stream* From(void* stream_user_data);
150
+
151
+ static bool HasInstance(Environment* env, v8::Local<v8::Value> value);
152
+ static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
153
+ Environment* env);
154
+ static void InitPerIsolate(IsolateData* data,
155
+ v8::Local<v8::ObjectTemplate> target);
156
+ static void InitPerContext(Realm* realm, v8::Local<v8::Object> target);
157
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
158
+
159
+ // Creates a new non-pending stream.
160
+ static BaseObjectPtr<Stream> Create(
161
+ Session* session,
162
+ int64_t id,
163
+ std::shared_ptr<DataQueue> source = nullptr);
164
+
165
+ // Creates a new pending stream.
166
+ static BaseObjectPtr<Stream> Create(
167
+ Session* session,
168
+ Direction direction,
169
+ std::shared_ptr<DataQueue> source = nullptr);
170
+
171
+ // The constructor is only public to be visible by MakeDetachedBaseObject.
172
+ // Call Create to create new instances of Stream.
173
+ Stream(BaseObjectWeakPtr<Session> session,
174
+ v8::Local<v8::Object> obj,
175
+ int64_t id,
176
+ std::shared_ptr<DataQueue> source);
177
+
178
+ // Creates the stream in a pending state. The constructor is only public
179
+ // to be visible to MakeDetachedBaseObject. Call Create to create new
180
+ // instances of Stream.
181
+ Stream(BaseObjectWeakPtr<Session> session,
182
+ v8::Local<v8::Object> obj,
183
+ Direction direction,
184
+ std::shared_ptr<DataQueue> source);
185
+ DISALLOW_COPY_AND_MOVE(Stream)
186
+ ~Stream() override;
187
+
188
+ // While the stream is still pending, the id will be -1.
189
+ int64_t id() const;
190
+
191
+ // While the stream is still pending, the origin will be invalid.
192
+ Side origin() const;
193
+
194
+ Direction direction() const;
195
+
196
+ Session& session() const;
197
+
198
+ // True if this stream was created in a pending state and is still waiting
199
+ // to be created.
200
+ bool is_pending() const;
201
+
202
+ // True if we've completely sent all outbound data for this stream.
203
+ // Importantly, this does not necessarily mean that we are completely
204
+ // done with the outbound data. We may still be waiting on outbound
205
+ // data to be acknowledged by the remote peer.
206
+ bool is_eos() const;
207
+
208
+ // True if this stream is still in a readable state.
209
+ bool is_readable() const;
210
+
211
+ // True if this stream is still in a writable state.
212
+ bool is_writable() const;
213
+
214
+ // Called by the session/application to indicate that the specified number
215
+ // of bytes have been acknowledged by the peer.
216
+ void Acknowledge(size_t datalen);
217
+ void Commit(size_t datalen);
218
+
219
+ void EndWritable();
220
+ void EndReadable(std::optional<uint64_t> maybe_final_size = std::nullopt);
221
+ void EntryRead(size_t amount) override;
222
+
223
+ // Pulls data from the internal outbound DataQueue configured for this stream.
224
+ int DoPull(bob::Next<ngtcp2_vec> next,
225
+ int options,
226
+ ngtcp2_vec* data,
227
+ size_t count,
228
+ size_t max_count_hint) override;
229
+
230
+ // Forcefully close the stream immediately. Data already queued in the
231
+ // inbound is preserved but new data will not be accepted. All pending
232
+ // writes are abandoned, and the stream is immediately closed at the ngtcp2
233
+ // level without waiting for any outstanding acknowledgements.
234
+ void Destroy(QuicError error = QuicError());
235
+
236
+ struct ReceiveDataFlags final {
237
+ // Identifies the final chunk of data that the peer will send for the
238
+ // stream.
239
+ bool fin = false;
240
+ // Indicates that this chunk of data was received in a 0RTT packet before
241
+ // the TLS handshake completed, suggesting that is is not as secure and
242
+ // could be replayed by an attacker.
243
+ bool early = false;
244
+ };
245
+
246
+ void ReceiveData(const uint8_t* data, size_t len, ReceiveDataFlags flags);
247
+ void ReceiveStopSending(QuicError error);
248
+ void ReceiveStreamReset(uint64_t final_size, QuicError error);
249
+
250
+ // Currently, only HTTP/3 streams support headers. These methods are here
251
+ // to support that. They are not used when using any other QUIC application.
252
+
253
+ void BeginHeaders(HeadersKind kind);
254
+ void set_headers_kind(HeadersKind kind);
255
+ // Returns false if the header cannot be added. This will typically happen
256
+ // if the application does not support headers, a maximum number of headers
257
+ // have already been added, or the maximum total header length is reached.
258
+ bool AddHeader(const Header& header);
259
+
260
+ SET_NO_MEMORY_INFO()
261
+ SET_MEMORY_INFO_NAME(Stream)
262
+ SET_SELF_SIZE(Stream)
263
+
264
+ struct State;
265
+ struct Stats;
266
+
267
+ private:
268
+ struct Impl;
269
+ struct PendingHeaders;
270
+
271
+ class Outbound;
272
+
273
+ // Gets a reader for the data received for this stream from the peer,
274
+ BaseObjectPtr<Blob::Reader> get_reader();
275
+
276
+ void set_final_size(uint64_t amount);
277
+ void set_outbound(std::shared_ptr<DataQueue> source);
278
+
279
+ bool is_local_unidirectional() const;
280
+ bool is_remote_unidirectional() const;
281
+
282
+ // JavaScript callouts
283
+
284
+ // Notifies the JavaScript side that the stream has been destroyed.
285
+ void EmitClose(const QuicError& error);
286
+
287
+ // Notifies the JavaScript side that the stream has been reset.
288
+ void EmitReset(const QuicError& error);
289
+
290
+ // Notifies the JavaScript side that the application is ready to receive
291
+ // trailing headers.
292
+ void EmitWantTrailers();
293
+
294
+ // Notifies the JavaScript side that sending data on the stream has been
295
+ // blocked because of flow control restriction.
296
+ void EmitBlocked();
297
+
298
+ // Delivers the set of inbound headers that have been collected.
299
+ void EmitHeaders();
300
+
301
+ void NotifyReadableEnded(uint64_t code);
302
+ void NotifyWritableEnded(uint64_t code);
303
+
304
+ // When a pending stream is finally opened, the NotifyStreamOpened method
305
+ // will be called and the id will be assigned.
306
+ void NotifyStreamOpened(int64_t id);
307
+ void EnqueuePendingHeaders(HeadersKind kind,
308
+ v8::Local<v8::Array> headers,
309
+ HeadersFlags flags);
310
+
311
+ AliasedStruct<Stats> stats_;
312
+ AliasedStruct<State> state_;
313
+ BaseObjectWeakPtr<Session> session_;
314
+ std::unique_ptr<Outbound> outbound_;
315
+ std::shared_ptr<DataQueue> inbound_;
316
+
317
+ // If the stream cannot be opened yet, it will be created in a pending state.
318
+ // Once the owning session is able to, it will complete opening of the stream
319
+ // and the stream id will be assigned.
320
+ std::optional<std::unique_ptr<PendingStream>> maybe_pending_stream_ =
321
+ std::nullopt;
322
+ std::vector<std::unique_ptr<PendingHeaders>> pending_headers_queue_;
323
+ uint64_t pending_close_read_code_ = NGTCP2_APP_NOERROR;
324
+ uint64_t pending_close_write_code_ = NGTCP2_APP_NOERROR;
325
+
326
+ struct PendingPriority {
327
+ StreamPriority priority;
328
+ StreamPriorityFlags flags;
329
+ };
330
+ std::optional<PendingPriority> pending_priority_ = std::nullopt;
331
+
332
+ // The headers_ field holds a block of headers that have been received and
333
+ // are being buffered for delivery to the JavaScript side.
334
+ // TODO(@jasnell): Use v8::Global instead of v8::Local here.
335
+ v8::LocalVector<v8::Value> headers_;
336
+
337
+ // The headers_kind_ field indicates the kind of headers that are being
338
+ // buffered.
339
+ HeadersKind headers_kind_ = HeadersKind::INITIAL;
340
+
341
+ // The headers_length_ field holds the total length of the headers that have
342
+ // been buffered.
343
+ size_t headers_length_ = 0;
344
+
345
+ friend struct Impl;
346
+ friend class PendingStream;
347
+ friend class Http3ApplicationImpl;
348
+ friend class DefaultApplication;
349
+
350
+ public:
351
+ // The Queue/Schedule/Unschedule here are part of the mechanism used to
352
+ // determine which streams have data to send on the session. When a stream
353
+ // potentially has data available, it will be scheduled in the Queue. Then,
354
+ // when the Session::Application starts sending pending data, it will check
355
+ // the queue to see if there are streams waiting. If there are, it will grab
356
+ // one and check to see if there is data to send. When a stream does not have
357
+ // data to send (such as when it is initially created or is using an async
358
+ // source that is still waiting for data to be pushed) it will not appear in
359
+ // the queue.
360
+ ListNode<Stream> stream_queue_;
361
+ using Queue = ListHead<Stream, &Stream::stream_queue_>;
362
+
363
+ void Schedule(Queue* queue);
364
+ void Unschedule();
365
+ };
366
+
367
+ } // namespace node::quic
368
+
369
+ #endif // HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC
370
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
@@ -37,19 +37,19 @@ class StringBytes {
37
37
  public:
38
38
  class InlineDecoder : public MaybeStackBuffer<char> {
39
39
  public:
40
- inline v8::Maybe<bool> Decode(Environment* env,
40
+ inline v8::Maybe<void> Decode(Environment* env,
41
41
  v8::Local<v8::String> string,
42
42
  enum encoding enc) {
43
43
  size_t storage;
44
44
  if (!StringBytes::StorageSize(env->isolate(), string, enc).To(&storage))
45
- return v8::Nothing<bool>();
45
+ return v8::Nothing<void>();
46
46
  AllocateSufficientStorage(storage);
47
47
  const size_t length =
48
48
  StringBytes::Write(env->isolate(), out(), storage, string, enc);
49
49
 
50
50
  // No zero terminator is included when using this method.
51
51
  SetLength(length);
52
- return v8::Just(true);
52
+ return v8::JustVoid();
53
53
  }
54
54
 
55
55
  inline size_t size() const { return length(); }
@@ -75,15 +75,13 @@ class StringBytes {
75
75
  char* buf,
76
76
  size_t buflen,
77
77
  v8::Local<v8::Value> val,
78
- enum encoding enc,
79
- int* chars_written = nullptr);
78
+ enum encoding enc);
80
79
 
81
80
  // Take the bytes in the src, and turn it into a Buffer or String.
82
81
  static v8::MaybeLocal<v8::Value> Encode(v8::Isolate* isolate,
83
82
  const char* buf,
84
83
  size_t buflen,
85
- enum encoding encoding,
86
- v8::Local<v8::Value>* error);
84
+ enum encoding encoding);
87
85
 
88
86
  // Warning: This reverses endianness on BE platforms, even though the
89
87
  // signature using uint16_t implies that it should not.
@@ -91,28 +89,17 @@ class StringBytes {
91
89
  // be changed easily.
92
90
  static v8::MaybeLocal<v8::Value> Encode(v8::Isolate* isolate,
93
91
  const uint16_t* buf,
94
- size_t buflen,
95
- v8::Local<v8::Value>* error);
92
+ size_t buflen);
96
93
 
97
94
  static v8::MaybeLocal<v8::Value> Encode(v8::Isolate* isolate,
98
95
  const char* buf,
99
- enum encoding encoding,
100
- v8::Local<v8::Value>* error);
101
-
102
- static size_t hex_encode(const char* src,
103
- size_t slen,
104
- char* dst,
105
- size_t dlen);
106
-
107
- static std::string hex_encode(const char* src, size_t slen);
96
+ enum encoding encoding);
108
97
 
109
98
  private:
110
99
  static size_t WriteUCS2(v8::Isolate* isolate,
111
100
  char* buf,
112
101
  size_t buflen,
113
- v8::Local<v8::String> str,
114
- int flags,
115
- size_t* chars_written);
102
+ v8::Local<v8::String> str);
116
103
  };
117
104
 
118
105
  } // namespace node
@@ -7,12 +7,6 @@
7
7
 
8
8
  namespace node {
9
9
 
10
- void StringDecoder::SetEncoding(enum encoding encoding) {
11
- state_[kBufferedBytes] = 0;
12
- state_[kMissingBytes] = 0;
13
- state_[kEncodingField] = encoding;
14
- }
15
-
16
10
  enum encoding StringDecoder::Encoding() const {
17
11
  return static_cast<enum encoding>(state_[kEncodingField]);
18
12
  }
@@ -10,7 +10,6 @@ namespace node {
10
10
  class StringDecoder {
11
11
  public:
12
12
  StringDecoder() { state_[kEncodingField] = BUFFER; }
13
- inline void SetEncoding(enum encoding encoding);
14
13
  inline enum encoding Encoding() const;
15
14
 
16
15
  inline char* IncompleteCharacterBuffer();
@@ -0,0 +1,75 @@
1
+ #ifndef SRC_INSPECTOR_TARGET_AGENT_H_
2
+ #define SRC_INSPECTOR_TARGET_AGENT_H_
3
+
4
+ #include <string_view>
5
+ #include <unordered_map>
6
+ #include <vector>
7
+ #include "inspector/worker_inspector.h"
8
+ #include "node/inspector/protocol/Target.h"
9
+
10
+ namespace node {
11
+
12
+ namespace inspector {
13
+ class TargetInspector;
14
+
15
+ namespace protocol {
16
+
17
+ struct TargetInfo {
18
+ std::string target_id;
19
+ std::string type;
20
+ std::string title;
21
+ std::string url;
22
+ std::shared_ptr<MainThreadHandle> worker;
23
+ bool attached;
24
+ };
25
+
26
+ class TargetAgent : public Target::Backend,
27
+ public std::enable_shared_from_this<TargetAgent> {
28
+ public:
29
+ void Wire(UberDispatcher* dispatcher);
30
+
31
+ void createAndAttachIfNecessary(std::shared_ptr<MainThreadHandle> worker,
32
+ const std::string& title,
33
+ const std::string& url);
34
+
35
+ DispatchResponse setAutoAttach(bool auto_attach,
36
+ bool wait_for_debugger_on_start) override;
37
+
38
+ void listenWorker(std::weak_ptr<WorkerManager> worker_manager);
39
+ void reset();
40
+ static std::unordered_map<int, std::shared_ptr<MainThreadHandle>>
41
+ target_session_id_worker_map_;
42
+
43
+ bool isThisThread(MainThreadHandle* worker) { return worker == main_thread_; }
44
+
45
+ private:
46
+ int getNextTargetId();
47
+ int getNextSessionId();
48
+ void targetCreated(const std::string_view target_id,
49
+ const std::string_view type,
50
+ const std::string_view title,
51
+ const std::string_view url);
52
+ void attachedToTarget(std::shared_ptr<MainThreadHandle> worker,
53
+ const std::string& target_id,
54
+ const std::string& type,
55
+ const std::string& title,
56
+ const std::string& url);
57
+
58
+ std::shared_ptr<Target::Frontend> frontend_;
59
+ std::weak_ptr<WorkerManager> worker_manager_;
60
+ static int next_session_id_;
61
+ int next_target_id_ = 1;
62
+ std::unique_ptr<WorkerManagerEventHandle> worker_event_handle_ = nullptr;
63
+ bool auto_attach_ = false;
64
+ // TODO(islandryu): If false, implement it so that each thread does not wait
65
+ // for the worker to execute.
66
+ bool wait_for_debugger_on_start_ = true;
67
+ std::vector<TargetInfo> targets_;
68
+ MainThreadHandle* main_thread_;
69
+ };
70
+
71
+ } // namespace protocol
72
+ } // namespace inspector
73
+ } // namespace node
74
+
75
+ #endif // SRC_INSPECTOR_TARGET_AGENT_H_
@@ -50,7 +50,7 @@ class TCPWrap : public ConnectionWrap<TCPWrap, uv_tcp_t> {
50
50
 
51
51
  SET_NO_MEMORY_INFO()
52
52
  SET_SELF_SIZE(TCPWrap)
53
- std::string MemoryInfoName() const override {
53
+ const char* MemoryInfoName() const override {
54
54
  switch (provider_type()) {
55
55
  case ProviderType::PROVIDER_TCPWRAP:
56
56
  return "TCPSocketWrap";
@@ -88,6 +88,8 @@ class TCPWrap : public ConnectionWrap<TCPWrap, uv_tcp_t> {
88
88
  const v8::FunctionCallbackInfo<v8::Value>& args,
89
89
  int family,
90
90
  std::function<int(const char* ip_address, int port, T* addr)> uv_ip_addr);
91
+ static void Reset(const v8::FunctionCallbackInfo<v8::Value>& args);
92
+ int Reset(v8::Local<v8::Value> close_callback = v8::Local<v8::Value>());
91
93
 
92
94
  #ifdef _WIN32
93
95
  static void SetSimultaneousAccepts(
@@ -24,23 +24,36 @@
24
24
 
25
25
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
26
26
 
27
- #include "util-inl.h"
28
27
  #include "node_internals.h"
28
+ #include "tracing/trace_event.h"
29
+ #include "util-inl.h"
29
30
 
30
31
  namespace node {
31
32
 
32
33
  void ThreadPoolWork::ScheduleWork() {
33
34
  env_->IncreaseWaitingRequestCounter();
35
+ TRACE_EVENT_NESTABLE_ASYNC_BEGIN0(
36
+ TRACING_CATEGORY_NODE2(threadpoolwork, async), type_, this);
34
37
  int status = uv_queue_work(
35
38
  env_->event_loop(),
36
39
  &work_req_,
37
40
  [](uv_work_t* req) {
38
41
  ThreadPoolWork* self = ContainerOf(&ThreadPoolWork::work_req_, req);
42
+ TRACE_EVENT_BEGIN0(TRACING_CATEGORY_NODE2(threadpoolwork, sync),
43
+ self->type_);
39
44
  self->DoThreadPoolWork();
45
+ TRACE_EVENT_END0(TRACING_CATEGORY_NODE2(threadpoolwork, sync),
46
+ self->type_);
40
47
  },
41
48
  [](uv_work_t* req, int status) {
42
49
  ThreadPoolWork* self = ContainerOf(&ThreadPoolWork::work_req_, req);
43
50
  self->env_->DecreaseWaitingRequestCounter();
51
+ TRACE_EVENT_NESTABLE_ASYNC_END1(
52
+ TRACING_CATEGORY_NODE2(threadpoolwork, async),
53
+ self->type_,
54
+ self,
55
+ "result",
56
+ status);
44
57
  self->AfterThreadPoolWork(status);
45
58
  });
46
59
  CHECK_EQ(status, 0);
@@ -0,0 +1,32 @@
1
+ #ifndef SRC_TIMER_WRAP_INL_H_
2
+ #define SRC_TIMER_WRAP_INL_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "timer_wrap.h"
7
+
8
+ #include <utility>
9
+
10
+ #include "env.h"
11
+ #include "uv.h"
12
+
13
+ namespace node {
14
+
15
+ template <typename... Args>
16
+ inline TimerWrap::TimerWrap(Environment* env, Args&&... args)
17
+ : env_(env), fn_(std::forward<Args>(args)...) {
18
+ uv_timer_init(env->event_loop(), &timer_);
19
+ timer_.data = this;
20
+ }
21
+
22
+ template <typename... Args>
23
+ inline TimerWrapHandle::TimerWrapHandle(Environment* env, Args&&... args) {
24
+ timer_ = new TimerWrap(env, std::forward<Args>(args)...);
25
+ env->AddCleanupHook(CleanupHook, this);
26
+ }
27
+
28
+ } // namespace node
29
+
30
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
31
+
32
+ #endif // SRC_TIMER_WRAP_INL_H_
@@ -16,7 +16,9 @@ class TimerWrap final : public MemoryRetainer {
16
16
  public:
17
17
  using TimerCb = std::function<void()>;
18
18
 
19
- TimerWrap(Environment* env, const TimerCb& fn);
19
+ template <typename... Args>
20
+ explicit inline TimerWrap(Environment* env, Args&&... args);
21
+
20
22
  TimerWrap(const TimerWrap&) = delete;
21
23
 
22
24
  inline Environment* env() const { return env_; }
@@ -50,9 +52,8 @@ class TimerWrap final : public MemoryRetainer {
50
52
 
51
53
  class TimerWrapHandle : public MemoryRetainer {
52
54
  public:
53
- TimerWrapHandle(
54
- Environment* env,
55
- const TimerWrap::TimerCb& fn);
55
+ template <typename... Args>
56
+ explicit inline TimerWrapHandle(Environment* env, Args&&... args);
56
57
 
57
58
  TimerWrapHandle(const TimerWrapHandle&) = delete;
58
59
 
@@ -60,6 +61,8 @@ class TimerWrapHandle : public MemoryRetainer {
60
61
 
61
62
  void Update(uint64_t interval, uint64_t repeat = 0);
62
63
 
64
+ inline operator bool() const { return timer_ != nullptr; }
65
+
63
66
  void Ref();
64
67
  void Unref();
65
68