@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
@@ -3,12 +3,12 @@
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
- // FIXME(joyeecheung): nghttp2.h needs stdint.h to compile on Windows
7
- #include <cstdint>
6
+ // clang-format off
7
+ #include "node.h" // nghttp2.h needs ssize_t
8
+ // clang-format on
8
9
  #include "nghttp2/nghttp2.h"
9
10
 
10
11
  #include "env.h"
11
- #include "allocated_buffer.h"
12
12
  #include "aliased_struct.h"
13
13
  #include "node_http2_state.h"
14
14
  #include "node_http_common.h"
@@ -402,6 +402,10 @@ class Http2Stream : public AsyncWrap,
402
402
  size_t i = 0;
403
403
  for (const auto& header : current_headers_ )
404
404
  fn(header, i++);
405
+ ClearHeaders();
406
+ }
407
+
408
+ void ClearHeaders() {
405
409
  current_headers_.clear();
406
410
  }
407
411
 
@@ -623,6 +627,15 @@ class Http2Session : public AsyncWrap,
623
627
  flags_ |= kSessionStateClosed;
624
628
  }
625
629
 
630
+ struct custom_settings_state {
631
+ size_t number;
632
+ nghttp2_settings_entry entries[MAX_ADDITIONAL_SETTINGS];
633
+ };
634
+
635
+ custom_settings_state& custom_settings(bool local) {
636
+ return local ? local_custom_settings_ : remote_custom_settings_;
637
+ }
638
+
626
639
  #define IS_FLAG(name, flag) \
627
640
  bool is_##name() const { return flags_ & flag; } \
628
641
  void set_##name(bool on = true) { \
@@ -679,9 +692,7 @@ class Http2Session : public AsyncWrap,
679
692
 
680
693
  bool has_pending_rststream(int32_t stream_id) {
681
694
  return pending_rst_streams_.end() !=
682
- std::find(pending_rst_streams_.begin(),
683
- pending_rst_streams_.end(),
684
- stream_id);
695
+ std::ranges::find(pending_rst_streams_, stream_id);
685
696
  }
686
697
 
687
698
  // Handle reads/writes from the underlying network transport.
@@ -699,6 +710,7 @@ class Http2Session : public AsyncWrap,
699
710
  static void Consume(const v8::FunctionCallbackInfo<v8::Value>& args);
700
711
  static void Receive(const v8::FunctionCallbackInfo<v8::Value>& args);
701
712
  static void Destroy(const v8::FunctionCallbackInfo<v8::Value>& args);
713
+ static void HasPendingData(const v8::FunctionCallbackInfo<v8::Value>& args);
702
714
  static void Settings(const v8::FunctionCallbackInfo<v8::Value>& args);
703
715
  static void Request(const v8::FunctionCallbackInfo<v8::Value>& args);
704
716
  static void SetNextStreamID(const v8::FunctionCallbackInfo<v8::Value>& args);
@@ -710,8 +722,9 @@ class Http2Session : public AsyncWrap,
710
722
  static void Ping(const v8::FunctionCallbackInfo<v8::Value>& args);
711
723
  static void AltSvc(const v8::FunctionCallbackInfo<v8::Value>& args);
712
724
  static void Origin(const v8::FunctionCallbackInfo<v8::Value>& args);
725
+ static void SetGracefulClose(const v8::FunctionCallbackInfo<v8::Value>& args);
713
726
 
714
- template <get_setting fn>
727
+ template <get_setting fn, bool local>
715
728
  static void RefreshSettings(const v8::FunctionCallbackInfo<v8::Value>& args);
716
729
 
717
730
  uv_loop_t* event_loop() const {
@@ -722,6 +735,7 @@ class Http2Session : public AsyncWrap,
722
735
 
723
736
  BaseObjectPtr<Http2Ping> PopPing();
724
737
  bool AddPing(const uint8_t* data, v8::Local<v8::Function> callback);
738
+ bool HasPendingData() const;
725
739
 
726
740
  BaseObjectPtr<Http2Settings> PopSettings();
727
741
  bool AddSettings(v8::Local<v8::Function> callback);
@@ -735,6 +749,9 @@ class Http2Session : public AsyncWrap,
735
749
  current_session_memory_ -= amount;
736
750
  }
737
751
 
752
+ void UpdateLocalCustomSettings(size_t count_,
753
+ nghttp2_settings_entry* entries_);
754
+
738
755
  // Tell our custom memory allocator that this rcbuf is independent of
739
756
  // this session now, and may outlive it.
740
757
  void StopTrackingRcbuf(nghttp2_rcbuf* buf);
@@ -769,9 +786,18 @@ class Http2Session : public AsyncWrap,
769
786
 
770
787
  Statistics statistics_ = {};
771
788
 
789
+ bool IsGracefulCloseInitiated() const {
790
+ return graceful_close_initiated_;
791
+ }
792
+ void SetGracefulCloseInitiated(bool value) {
793
+ graceful_close_initiated_ = value;
794
+ }
795
+
772
796
  private:
773
797
  void EmitStatistics();
774
798
 
799
+ void FetchAllowedRemoteCustomSettings();
800
+
775
801
  // Frame Padding Strategies
776
802
  ssize_t OnDWordAlignedPadding(size_t frameLength,
777
803
  size_t maxPayloadLen);
@@ -788,6 +814,8 @@ class Http2Session : public AsyncWrap,
788
814
  void HandleAltSvcFrame(const nghttp2_frame* frame);
789
815
  void HandleOriginFrame(const nghttp2_frame* frame);
790
816
 
817
+ void DecrefHeaders(const nghttp2_frame* frame);
818
+
791
819
  // nghttp2 callbacks
792
820
  static int OnBeginHeadersCallback(
793
821
  nghttp2_session* session,
@@ -837,11 +865,11 @@ class Http2Session : public AsyncWrap,
837
865
  const nghttp2_frame* frame,
838
866
  size_t maxPayloadLen,
839
867
  void* user_data);
840
- static int OnNghttpError(
841
- nghttp2_session* session,
842
- const char* message,
843
- size_t len,
844
- void* user_data);
868
+ static int OnNghttpError(nghttp2_session* session,
869
+ int lib_error_code,
870
+ const char* message,
871
+ size_t len,
872
+ void* user_data);
845
873
  static int OnSendData(
846
874
  nghttp2_session* session,
847
875
  nghttp2_frame* frame,
@@ -897,7 +925,7 @@ class Http2Session : public AsyncWrap,
897
925
  // When processing input data, either stream_buf_ab_ or stream_buf_allocation_
898
926
  // will be set. stream_buf_ab_ is lazily created from stream_buf_allocation_.
899
927
  v8::Global<v8::ArrayBuffer> stream_buf_ab_;
900
- AllocatedBuffer stream_buf_allocation_;
928
+ std::unique_ptr<v8::BackingStore> stream_buf_allocation_;
901
929
  size_t stream_buf_offset_ = 0;
902
930
  // Custom error code for errors that originated inside one of the callbacks
903
931
  // called by nghttp2_session_mem_recv.
@@ -909,6 +937,9 @@ class Http2Session : public AsyncWrap,
909
937
  size_t max_outstanding_settings_ = kDefaultMaxSettings;
910
938
  std::queue<BaseObjectPtr<Http2Settings>> outstanding_settings_;
911
939
 
940
+ struct custom_settings_state local_custom_settings_;
941
+ struct custom_settings_state remote_custom_settings_;
942
+
912
943
  std::vector<NgHttp2StreamWrite> outgoing_buffers_;
913
944
  std::vector<uint8_t> outgoing_storage_;
914
945
  size_t outgoing_length_ = 0;
@@ -928,8 +959,13 @@ class Http2Session : public AsyncWrap,
928
959
  void CopyDataIntoOutgoing(const uint8_t* src, size_t src_length);
929
960
  void ClearOutgoing(int status);
930
961
 
962
+ void MaybeNotifyGracefulCloseComplete();
963
+
931
964
  friend class Http2Scope;
932
965
  friend class Http2StreamListener;
966
+
967
+ // Flag to indicate that JavaScript has initiated a graceful closure
968
+ bool graceful_close_initiated_ = false;
933
969
  };
934
970
 
935
971
  struct Http2SessionPerformanceEntryTraits {
@@ -1012,8 +1048,7 @@ class Http2Settings : public AsyncWrap {
1012
1048
  static void RefreshDefaults(Http2State* http2_state);
1013
1049
 
1014
1050
  // Update the local or remote settings for the given session
1015
- static void Update(Http2Session* session,
1016
- get_setting fn);
1051
+ static void Update(Http2Session* session, get_setting fn, bool local);
1017
1052
 
1018
1053
  private:
1019
1054
  static size_t Init(
@@ -1029,7 +1064,7 @@ class Http2Settings : public AsyncWrap {
1029
1064
  v8::Global<v8::Function> callback_;
1030
1065
  uint64_t startTime_;
1031
1066
  size_t count_ = 0;
1032
- nghttp2_settings_entry entries_[IDX_SETTINGS_COUNT];
1067
+ nghttp2_settings_entry entries_[IDX_SETTINGS_COUNT + MAX_ADDITIONAL_SETTINGS];
1033
1068
  };
1034
1069
 
1035
1070
  class Origins {
@@ -1040,7 +1075,7 @@ class Origins {
1040
1075
  ~Origins() = default;
1041
1076
 
1042
1077
  const nghttp2_origin_entry* operator*() const {
1043
- return reinterpret_cast<const nghttp2_origin_entry*>(buf_.data());
1078
+ return static_cast<const nghttp2_origin_entry*>(bs_->Data());
1044
1079
  }
1045
1080
 
1046
1081
  size_t length() const {
@@ -1049,7 +1084,7 @@ class Origins {
1049
1084
 
1050
1085
  private:
1051
1086
  size_t count_;
1052
- AllocatedBuffer buf_;
1087
+ std::unique_ptr<v8::BackingStore> bs_;
1053
1088
  };
1054
1089
 
1055
1090
  #define HTTP2_HIDDEN_CONSTANTS(V) \
@@ -21,6 +21,9 @@ namespace http2 {
21
21
  IDX_SETTINGS_COUNT
22
22
  };
23
23
 
24
+ // number of max additional settings, thus settings not implemented by nghttp2
25
+ const size_t MAX_ADDITIONAL_SETTINGS = 10;
26
+
24
27
  enum Http2SessionStateIndex {
25
28
  IDX_SESSION_STATE_EFFECTIVE_LOCAL_WINDOW_SIZE,
26
29
  IDX_SESSION_STATE_EFFECTIVE_RECV_DATA_LENGTH,
@@ -55,6 +58,9 @@ namespace http2 {
55
58
  IDX_OPTIONS_MAX_OUTSTANDING_SETTINGS,
56
59
  IDX_OPTIONS_MAX_SESSION_MEMORY,
57
60
  IDX_OPTIONS_MAX_SETTINGS,
61
+ IDX_OPTIONS_STREAM_RESET_RATE,
62
+ IDX_OPTIONS_STREAM_RESET_BURST,
63
+ IDX_OPTIONS_STRICT_HTTP_FIELD_WHITESPACE_VALIDATION,
58
64
  IDX_OPTIONS_FLAGS
59
65
  };
60
66
 
@@ -83,37 +89,36 @@ namespace http2 {
83
89
 
84
90
  class Http2State : public BaseObject {
85
91
  public:
86
- Http2State(Environment* env, v8::Local<v8::Object> obj)
87
- : BaseObject(env, obj),
88
- root_buffer(env->isolate(), sizeof(http2_state_internal)),
92
+ Http2State(Realm* realm, v8::Local<v8::Object> obj)
93
+ : BaseObject(realm, obj),
94
+ root_buffer(realm->isolate(), sizeof(http2_state_internal)),
89
95
  session_state_buffer(
90
- env->isolate(),
96
+ realm->isolate(),
91
97
  offsetof(http2_state_internal, session_state_buffer),
92
98
  IDX_SESSION_STATE_COUNT,
93
99
  root_buffer),
94
- stream_state_buffer(
95
- env->isolate(),
96
- offsetof(http2_state_internal, stream_state_buffer),
97
- IDX_STREAM_STATE_COUNT,
98
- root_buffer),
99
- stream_stats_buffer(
100
- env->isolate(),
101
- offsetof(http2_state_internal, stream_stats_buffer),
102
- IDX_STREAM_STATS_COUNT,
103
- root_buffer),
100
+ stream_state_buffer(realm->isolate(),
101
+ offsetof(http2_state_internal, stream_state_buffer),
102
+ IDX_STREAM_STATE_COUNT,
103
+ root_buffer),
104
+ stream_stats_buffer(realm->isolate(),
105
+ offsetof(http2_state_internal, stream_stats_buffer),
106
+ IDX_STREAM_STATS_COUNT,
107
+ root_buffer),
104
108
  session_stats_buffer(
105
- env->isolate(),
109
+ realm->isolate(),
106
110
  offsetof(http2_state_internal, session_stats_buffer),
107
111
  IDX_SESSION_STATS_COUNT,
108
112
  root_buffer),
109
- options_buffer(env->isolate(),
110
- offsetof(http2_state_internal, options_buffer),
111
- IDX_OPTIONS_FLAGS + 1,
112
- root_buffer),
113
- settings_buffer(env->isolate(),
114
- offsetof(http2_state_internal, settings_buffer),
115
- IDX_SETTINGS_COUNT + 1,
116
- root_buffer) {}
113
+ options_buffer(realm->isolate(),
114
+ offsetof(http2_state_internal, options_buffer),
115
+ IDX_OPTIONS_FLAGS + 1,
116
+ root_buffer),
117
+ settings_buffer(
118
+ realm->isolate(),
119
+ offsetof(http2_state_internal, settings_buffer),
120
+ IDX_SETTINGS_COUNT + 1 + 1 + 2 * MAX_ADDITIONAL_SETTINGS,
121
+ root_buffer) {}
117
122
 
118
123
  AliasedUint8Array root_buffer;
119
124
  AliasedFloat64Array session_state_buffer;
@@ -127,7 +132,7 @@ class Http2State : public BaseObject {
127
132
  SET_SELF_SIZE(Http2State)
128
133
  SET_MEMORY_INFO_NAME(Http2State)
129
134
 
130
- static constexpr FastStringKey binding_data_name { "http2" };
135
+ SET_BINDING_ID(http2_binding_data)
131
136
 
132
137
  private:
133
138
  struct http2_state_internal {
@@ -137,7 +142,12 @@ class Http2State : public BaseObject {
137
142
  double stream_stats_buffer[IDX_STREAM_STATS_COUNT];
138
143
  double session_stats_buffer[IDX_SESSION_STATS_COUNT];
139
144
  uint32_t options_buffer[IDX_OPTIONS_FLAGS + 1];
140
- uint32_t settings_buffer[IDX_SETTINGS_COUNT + 1];
145
+ // first + 1: number of actual nghttp2 supported settings
146
+ // second + 1: number of additional settings not supported by nghttp2
147
+ // 2 * MAX_ADDITIONAL_SETTINGS: settings id and value for each
148
+ // additional setting
149
+ uint32_t settings_buffer[IDX_SETTINGS_COUNT + 1 + 1 +
150
+ 2 * MAX_ADDITIONAL_SETTINGS];
141
151
  };
142
152
  };
143
153
 
@@ -8,6 +8,7 @@
8
8
  #include "v8.h"
9
9
 
10
10
  #include <algorithm>
11
+ #include "nbytes.h"
11
12
 
12
13
  namespace node {
13
14
 
@@ -31,7 +32,7 @@ NgHeaders<T>::NgHeaders(Environment* env, v8::Local<v8::Array> headers) {
31
32
  count_ * sizeof(nv_t) +
32
33
  header_string_len);
33
34
 
34
- char* start = AlignUp(buf_.out(), alignof(nv_t));
35
+ char* start = nbytes::AlignUp(buf_.out(), alignof(nv_t));
35
36
  char* header_contents = start + (count_ * sizeof(nv_t));
36
37
  nv_t* const nva = reinterpret_cast<nv_t*>(start);
37
38
 
@@ -92,17 +93,13 @@ bool NgHeader<T>::IsZeroLength(
92
93
  }
93
94
 
94
95
  template <typename T>
95
- bool NgHeader<T>::IsZeroLength(
96
- int32_t token,
97
- NgHeader<T>::rcbuf_t* name,
98
- NgHeader<T>::rcbuf_t* value) {
99
-
96
+ bool NgHeader<T>::IsZeroLength(int32_t token,
97
+ NgHeader<T>::rcbuf_t* name,
98
+ NgHeader<T>::rcbuf_t* value) {
100
99
  if (NgHeader<T>::rcbufferpointer_t::IsZeroLength(value))
101
100
  return true;
102
101
 
103
- const char* header_name = T::ToHttpHeaderName(token);
104
- return header_name != nullptr ||
105
- NgHeader<T>::rcbufferpointer_t::IsZeroLength(name);
102
+ return NgHeader<T>::rcbufferpointer_t::IsZeroLength(name);
106
103
  }
107
104
 
108
105
  template <typename T>
@@ -131,7 +128,8 @@ NgHeader<T>::NgHeader(
131
128
 
132
129
  template <typename T>
133
130
  NgHeader<T>::NgHeader(NgHeader<T>&& other) noexcept
134
- : name_(std::move(other.name_)),
131
+ : env_(other.env_),
132
+ name_(std::move(other.name_)),
135
133
  value_(std::move(other.value_)),
136
134
  token_(other.token_),
137
135
  flags_(other.flags_) {
@@ -24,61 +24,62 @@ class Environment;
24
24
  V(PATH, ":path") \
25
25
  V(PROTOCOL, ":protocol")
26
26
 
27
- #define HTTP_REGULAR_HEADERS(V) \
28
- V(ACCEPT_ENCODING, "accept-encoding") \
29
- V(ACCEPT_LANGUAGE, "accept-language") \
30
- V(ACCEPT_RANGES, "accept-ranges") \
31
- V(ACCEPT, "accept") \
32
- V(ACCESS_CONTROL_ALLOW_CREDENTIALS, "access-control-allow-credentials") \
33
- V(ACCESS_CONTROL_ALLOW_HEADERS, "access-control-allow-headers") \
34
- V(ACCESS_CONTROL_ALLOW_METHODS, "access-control-allow-methods") \
35
- V(ACCESS_CONTROL_ALLOW_ORIGIN, "access-control-allow-origin") \
36
- V(ACCESS_CONTROL_EXPOSE_HEADERS, "access-control-expose-headers") \
37
- V(ACCESS_CONTROL_REQUEST_HEADERS, "access-control-request-headers") \
38
- V(ACCESS_CONTROL_REQUEST_METHOD, "access-control-request-method") \
39
- V(AGE, "age") \
40
- V(AUTHORIZATION, "authorization") \
41
- V(CACHE_CONTROL, "cache-control") \
42
- V(CONNECTION, "connection") \
43
- V(CONTENT_DISPOSITION, "content-disposition") \
44
- V(CONTENT_ENCODING, "content-encoding") \
45
- V(CONTENT_LENGTH, "content-length") \
46
- V(CONTENT_TYPE, "content-type") \
47
- V(COOKIE, "cookie") \
48
- V(DATE, "date") \
49
- V(ETAG, "etag") \
50
- V(FORWARDED, "forwarded") \
51
- V(HOST, "host") \
52
- V(IF_MODIFIED_SINCE, "if-modified-since") \
53
- V(IF_NONE_MATCH, "if-none-match") \
54
- V(IF_RANGE, "if-range") \
55
- V(LAST_MODIFIED, "last-modified") \
56
- V(LINK, "link") \
57
- V(LOCATION, "location") \
58
- V(RANGE, "range") \
59
- V(REFERER, "referer") \
60
- V(SERVER, "server") \
61
- V(SET_COOKIE, "set-cookie") \
62
- V(STRICT_TRANSPORT_SECURITY, "strict-transport-security") \
63
- V(TRANSFER_ENCODING, "transfer-encoding") \
64
- V(TE, "te") \
65
- V(UPGRADE_INSECURE_REQUESTS, "upgrade-insecure-requests") \
66
- V(UPGRADE, "upgrade") \
67
- V(USER_AGENT, "user-agent") \
68
- V(VARY, "vary") \
69
- V(X_CONTENT_TYPE_OPTIONS, "x-content-type-options") \
70
- V(X_FRAME_OPTIONS, "x-frame-options") \
71
- V(KEEP_ALIVE, "keep-alive") \
72
- V(PROXY_CONNECTION, "proxy-connection") \
73
- V(X_XSS_PROTECTION, "x-xss-protection") \
74
- V(ALT_SVC, "alt-svc") \
75
- V(CONTENT_SECURITY_POLICY, "content-security-policy") \
76
- V(EARLY_DATA, "early-data") \
77
- V(EXPECT_CT, "expect-ct") \
78
- V(ORIGIN, "origin") \
79
- V(PURPOSE, "purpose") \
80
- V(TIMING_ALLOW_ORIGIN, "timing-allow-origin") \
81
- V(X_FORWARDED_FOR, "x-forwarded-for")
27
+ #define HTTP_REGULAR_HEADERS(V) \
28
+ V(ACCEPT_ENCODING, "accept-encoding") \
29
+ V(ACCEPT_LANGUAGE, "accept-language") \
30
+ V(ACCEPT_RANGES, "accept-ranges") \
31
+ V(ACCEPT, "accept") \
32
+ V(ACCESS_CONTROL_ALLOW_CREDENTIALS, "access-control-allow-credentials") \
33
+ V(ACCESS_CONTROL_ALLOW_HEADERS, "access-control-allow-headers") \
34
+ V(ACCESS_CONTROL_ALLOW_METHODS, "access-control-allow-methods") \
35
+ V(ACCESS_CONTROL_ALLOW_ORIGIN, "access-control-allow-origin") \
36
+ V(ACCESS_CONTROL_EXPOSE_HEADERS, "access-control-expose-headers") \
37
+ V(ACCESS_CONTROL_REQUEST_HEADERS, "access-control-request-headers") \
38
+ V(ACCESS_CONTROL_REQUEST_METHOD, "access-control-request-method") \
39
+ V(AGE, "age") \
40
+ V(AUTHORIZATION, "authorization") \
41
+ V(CACHE_CONTROL, "cache-control") \
42
+ V(CONNECTION, "connection") \
43
+ V(CONTENT_DISPOSITION, "content-disposition") \
44
+ V(CONTENT_ENCODING, "content-encoding") \
45
+ V(CONTENT_LENGTH, "content-length") \
46
+ V(CONTENT_TYPE, "content-type") \
47
+ V(COOKIE, "cookie") \
48
+ V(DATE, "date") \
49
+ V(ETAG, "etag") \
50
+ V(FORWARDED, "forwarded") \
51
+ V(HOST, "host") \
52
+ V(IF_MODIFIED_SINCE, "if-modified-since") \
53
+ V(IF_NONE_MATCH, "if-none-match") \
54
+ V(IF_RANGE, "if-range") \
55
+ V(LAST_MODIFIED, "last-modified") \
56
+ V(LINK, "link") \
57
+ V(LOCATION, "location") \
58
+ V(RANGE, "range") \
59
+ V(REFERER, "referer") \
60
+ V(SERVER, "server") \
61
+ V(SET_COOKIE, "set-cookie") \
62
+ V(STRICT_TRANSPORT_SECURITY, "strict-transport-security") \
63
+ V(TRANSFER_ENCODING, "transfer-encoding") \
64
+ V(TE, "te") \
65
+ V(UPGRADE_INSECURE_REQUESTS, "upgrade-insecure-requests") \
66
+ V(UPGRADE, "upgrade") \
67
+ V(USER_AGENT, "user-agent") \
68
+ V(VARY, "vary") \
69
+ V(X_CONTENT_TYPE_OPTIONS, "x-content-type-options") \
70
+ V(X_FRAME_OPTIONS, "x-frame-options") \
71
+ V(KEEP_ALIVE, "keep-alive") \
72
+ V(PROXY_CONNECTION, "proxy-connection") \
73
+ V(X_XSS_PROTECTION, "x-xss-protection") \
74
+ V(ALT_SVC, "alt-svc") \
75
+ V(CONTENT_SECURITY_POLICY, "content-security-policy") \
76
+ V(EARLY_DATA, "early-data") \
77
+ V(EXPECT_CT, "expect-ct") \
78
+ V(ORIGIN, "origin") \
79
+ V(PURPOSE, "purpose") \
80
+ V(TIMING_ALLOW_ORIGIN, "timing-allow-origin") \
81
+ V(X_FORWARDED_FOR, "x-forwarded-for") \
82
+ V(PRIORITY, "priority")
82
83
 
83
84
  #define HTTP_ADDITIONAL_HEADERS(V) \
84
85
  V(ACCEPT_CHARSET, "accept-charset") \
@@ -196,7 +197,7 @@ enum http_status_codes {
196
197
  // Unlike the HTTP/1 implementation, the HTTP/2 implementation is not limited
197
198
  // to a fixed number of known supported HTTP methods. These constants, therefore
198
199
  // are provided strictly as a convenience to users and are exposed via the
199
- // require('http2').constants object.
200
+ // require('node:http2').constants object.
200
201
  #define HTTP_KNOWN_METHODS(V) \
201
202
  V(ACL, "ACL") \
202
203
  V(BASELINE_CONTROL, "BASELINE-CONTROL") \
@@ -239,7 +240,7 @@ enum http_status_codes {
239
240
  V(VERSION_CONTROL, "VERSION-CONTROL")
240
241
 
241
242
  // NgHeaders takes as input a block of headers provided by the
242
- // JavaScript side (see http2's mapToHeaders function) and
243
+ // JavaScript side (see http2's buildNgHeaderString function) and
243
244
  // converts it into a array of ng header structs. This is done
244
245
  // generically to handle both http/2 and (in the future) http/3,
245
246
  // which use nearly identical structs. The template parameter
@@ -413,8 +414,11 @@ class NgRcBufPointer : public MemoryRetainer {
413
414
  const char* header_name = reinterpret_cast<const char*>(ptr.data());
414
415
  v8::Eternal<v8::String>& eternal = static_str_map[header_name];
415
416
  if (eternal.IsEmpty()) {
416
- v8::Local<v8::String> str =
417
- GetInternalizedString(env, ptr).ToLocalChecked();
417
+ v8::Local<v8::String> str;
418
+ if (!GetInternalizedString(env, ptr).ToLocal(&str)) {
419
+ ptr.reset();
420
+ return {};
421
+ }
418
422
  eternal.Set(env->isolate(), str);
419
423
  return str;
420
424
  }
@@ -38,34 +38,21 @@
38
38
  namespace node {
39
39
  namespace i18n {
40
40
 
41
- bool InitializeICUDirectory(const std::string& path);
41
+ bool InitializeICUDirectory(const std::string& path, std::string* error);
42
42
 
43
43
  void SetDefaultTimeZone(const char* tzid);
44
44
 
45
- enum idna_mode {
45
+ enum class idna_mode {
46
46
  // Default mode for maximum compatibility.
47
- IDNA_DEFAULT,
47
+ kDefault,
48
48
  // Ignore all errors in IDNA conversion, if possible.
49
- IDNA_LENIENT,
49
+ kLenient,
50
50
  // Enforce STD3 rules (UseSTD3ASCIIRules) and DNS length restrictions
51
51
  // (VerifyDnsLength). Corresponds to `beStrict` flag in the "domain to ASCII"
52
52
  // algorithm.
53
- IDNA_STRICT
53
+ kStrict
54
54
  };
55
55
 
56
- // Implements the WHATWG URL Standard "domain to ASCII" algorithm.
57
- // https://url.spec.whatwg.org/#concept-domain-to-ascii
58
- int32_t ToASCII(MaybeStackBuffer<char>* buf,
59
- const char* input,
60
- size_t length,
61
- enum idna_mode mode = IDNA_DEFAULT);
62
-
63
- // Implements the WHATWG URL Standard "domain to Unicode" algorithm.
64
- // https://url.spec.whatwg.org/#concept-domain-to-unicode
65
- int32_t ToUnicode(MaybeStackBuffer<char>* buf,
66
- const char* input,
67
- size_t length);
68
-
69
56
  struct ConverterDeleter {
70
57
  void operator()(UConverter* pointer) const { ucnv_close(pointer); }
71
58
  };