@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
@@ -86,13 +86,22 @@ template <typename NativeT, typename V8T>
86
86
  void FillStatsArray(AliasedBufferBase<NativeT, V8T>* fields,
87
87
  const uv_stat_t* s,
88
88
  const size_t offset) {
89
- #define SET_FIELD_WITH_STAT(stat_offset, stat) \
90
- fields->SetValue(offset + static_cast<size_t>(FsStatsOffset::stat_offset), \
89
+ #define SET_FIELD_WITH_STAT(stat_offset, stat) \
90
+ fields->SetValue(offset + static_cast<size_t>(FsStatsOffset::stat_offset), \
91
91
  static_cast<NativeT>(stat))
92
92
 
93
- #define SET_FIELD_WITH_TIME_STAT(stat_offset, stat) \
94
- /* NOLINTNEXTLINE(runtime/int) */ \
93
+ // On win32, time is stored in uint64_t and starts from 1601-01-01.
94
+ // libuv calculates tv_sec and tv_nsec from it and converts to signed long,
95
+ // which causes Y2038 overflow. On the other platforms it is safe to treat
96
+ // negative values as pre-epoch time.
97
+ #ifdef _WIN32
98
+ #define SET_FIELD_WITH_TIME_STAT(stat_offset, stat) \
99
+ /* NOLINTNEXTLINE(runtime/int) */ \
95
100
  SET_FIELD_WITH_STAT(stat_offset, static_cast<unsigned long>(stat))
101
+ #else
102
+ #define SET_FIELD_WITH_TIME_STAT(stat_offset, stat) \
103
+ SET_FIELD_WITH_STAT(stat_offset, static_cast<double>(stat))
104
+ #endif // _WIN32
96
105
 
97
106
  SET_FIELD_WITH_STAT(kDev, s->st_dev);
98
107
  SET_FIELD_WITH_STAT(kMode, s->st_mode);
@@ -135,6 +144,38 @@ v8::Local<v8::Value> FillGlobalStatsArray(BindingData* binding_data,
135
144
  }
136
145
  }
137
146
 
147
+ template <typename NativeT, typename V8T>
148
+ void FillStatFsArray(AliasedBufferBase<NativeT, V8T>* fields,
149
+ const uv_statfs_t* s) {
150
+ #define SET_FIELD(field, stat) \
151
+ fields->SetValue(static_cast<size_t>(FsStatFsOffset::field), \
152
+ static_cast<NativeT>(stat))
153
+
154
+ SET_FIELD(kType, s->f_type);
155
+ SET_FIELD(kBSize, s->f_bsize);
156
+ SET_FIELD(kBlocks, s->f_blocks);
157
+ SET_FIELD(kBFree, s->f_bfree);
158
+ SET_FIELD(kBAvail, s->f_bavail);
159
+ SET_FIELD(kFiles, s->f_files);
160
+ SET_FIELD(kFFree, s->f_ffree);
161
+
162
+ #undef SET_FIELD
163
+ }
164
+
165
+ v8::Local<v8::Value> FillGlobalStatFsArray(BindingData* binding_data,
166
+ const bool use_bigint,
167
+ const uv_statfs_t* s) {
168
+ if (use_bigint) {
169
+ auto* const arr = &binding_data->statfs_field_bigint_array;
170
+ FillStatFsArray(arr, s);
171
+ return arr->GetJSArray();
172
+ } else {
173
+ auto* const arr = &binding_data->statfs_field_array;
174
+ FillStatFsArray(arr, s);
175
+ return arr->GetJSArray();
176
+ }
177
+ }
178
+
138
179
  template <typename AliasedBufferT>
139
180
  FSReqPromise<AliasedBufferT>*
140
181
  FSReqPromise<AliasedBufferT>::New(BindingData* binding_data,
@@ -156,31 +197,39 @@ FSReqPromise<AliasedBufferT>::New(BindingData* binding_data,
156
197
 
157
198
  template <typename AliasedBufferT>
158
199
  FSReqPromise<AliasedBufferT>::~FSReqPromise() {
159
- // Validate that the promise was explicitly resolved or rejected.
160
- CHECK(finished_);
200
+ // Validate that the promise was explicitly resolved or rejected but only if
201
+ // the Isolate is not terminating because in this case the promise might have
202
+ // not finished.
203
+ CHECK_IMPLIES(!finished_, !env()->can_call_into_js());
161
204
  }
162
205
 
163
206
  template <typename AliasedBufferT>
164
- FSReqPromise<AliasedBufferT>::FSReqPromise(
165
- BindingData* binding_data,
166
- v8::Local<v8::Object> obj,
167
- bool use_bigint)
168
- : FSReqBase(binding_data,
169
- obj,
170
- AsyncWrap::PROVIDER_FSREQPROMISE,
171
- use_bigint),
172
- stats_field_array_(
173
- env()->isolate(),
174
- static_cast<size_t>(FsStatsOffset::kFsStatsFieldsNumber)) {}
207
+ FSReqPromise<AliasedBufferT>::FSReqPromise(BindingData* binding_data,
208
+ v8::Local<v8::Object> obj,
209
+ bool use_bigint)
210
+ : FSReqBase(
211
+ binding_data, obj, AsyncWrap::PROVIDER_FSREQPROMISE, use_bigint),
212
+ stats_field_array_(
213
+ env()->isolate(),
214
+ static_cast<size_t>(FsStatsOffset::kFsStatsFieldsNumber)),
215
+ statfs_field_array_(
216
+ env()->isolate(),
217
+ static_cast<size_t>(FsStatFsOffset::kFsStatFsFieldsNumber)) {}
175
218
 
176
219
  template <typename AliasedBufferT>
177
220
  void FSReqPromise<AliasedBufferT>::Reject(v8::Local<v8::Value> reject) {
178
221
  finished_ = true;
179
222
  v8::HandleScope scope(env()->isolate());
180
223
  InternalCallbackScope callback_scope(this);
181
- v8::Local<v8::Value> value =
182
- object()->Get(env()->context(),
183
- env()->promise_string()).ToLocalChecked();
224
+ v8::Local<v8::Value> value;
225
+ if (!object()
226
+ ->Get(env()->context(), env()->promise_string())
227
+ .ToLocal(&value)) {
228
+ // If we hit this, getting the value from the object failed and
229
+ // an error was likely scheduled. We could try to reject the promise
230
+ // but let's just allow the error to propagate.
231
+ return;
232
+ }
184
233
  v8::Local<v8::Promise::Resolver> resolver = value.As<v8::Promise::Resolver>();
185
234
  USE(resolver->Reject(env()->context(), reject).FromJust());
186
235
  }
@@ -190,9 +239,13 @@ void FSReqPromise<AliasedBufferT>::Resolve(v8::Local<v8::Value> value) {
190
239
  finished_ = true;
191
240
  v8::HandleScope scope(env()->isolate());
192
241
  InternalCallbackScope callback_scope(this);
193
- v8::Local<v8::Value> val =
194
- object()->Get(env()->context(),
195
- env()->promise_string()).ToLocalChecked();
242
+ v8::Local<v8::Value> val;
243
+ if (!object()->Get(env()->context(), env()->promise_string()).ToLocal(&val)) {
244
+ // If we hit this, getting the value from the object failed and
245
+ // an error was likely scheduled. We could try to reject the promise
246
+ // but let's just allow the error to propagate.
247
+ return;
248
+ }
196
249
  v8::Local<v8::Promise::Resolver> resolver = val.As<v8::Promise::Resolver>();
197
250
  USE(resolver->Resolve(env()->context(), value).FromJust());
198
251
  }
@@ -203,12 +256,22 @@ void FSReqPromise<AliasedBufferT>::ResolveStat(const uv_stat_t* stat) {
203
256
  Resolve(stats_field_array_.GetJSArray());
204
257
  }
205
258
 
259
+ template <typename AliasedBufferT>
260
+ void FSReqPromise<AliasedBufferT>::ResolveStatFs(const uv_statfs_t* stat) {
261
+ FillStatFsArray(&statfs_field_array_, stat);
262
+ Resolve(statfs_field_array_.GetJSArray());
263
+ }
264
+
206
265
  template <typename AliasedBufferT>
207
266
  void FSReqPromise<AliasedBufferT>::SetReturnValue(
208
267
  const v8::FunctionCallbackInfo<v8::Value>& args) {
209
- v8::Local<v8::Value> val =
210
- object()->Get(env()->context(),
211
- env()->promise_string()).ToLocalChecked();
268
+ v8::Local<v8::Value> val;
269
+ if (!object()->Get(env()->context(), env()->promise_string()).ToLocal(&val)) {
270
+ // If we hit this, getting the value from the object failed and
271
+ // an error was likely scheduled. We could try to reject the promise
272
+ // but let's just allow the error to propagate.
273
+ return;
274
+ }
212
275
  v8::Local<v8::Promise::Resolver> resolver = val.As<v8::Promise::Resolver>();
213
276
  args.GetReturnValue().Set(resolver->GetPromise());
214
277
  }
@@ -217,6 +280,7 @@ template <typename AliasedBufferT>
217
280
  void FSReqPromise<AliasedBufferT>::MemoryInfo(MemoryTracker* tracker) const {
218
281
  FSReqBase::MemoryInfo(tracker);
219
282
  tracker->TrackField("stats_field_array", stats_field_array_);
283
+ tracker->TrackField("statfs_field_array", statfs_field_array_);
220
284
  }
221
285
 
222
286
  FSReqBase* GetReqWrap(const v8::FunctionCallbackInfo<v8::Value>& args,
@@ -227,11 +291,12 @@ FSReqBase* GetReqWrap(const v8::FunctionCallbackInfo<v8::Value>& args,
227
291
  return Unwrap<FSReqBase>(value.As<v8::Object>());
228
292
  }
229
293
 
230
- BindingData* binding_data = Environment::GetBindingData<BindingData>(args);
231
- Environment* env = binding_data->env();
232
- if (value->StrictEquals(env->fs_use_promises_symbol())) {
294
+ Realm* realm = Realm::GetCurrent(args);
295
+ BindingData* binding_data = realm->GetBindingData<BindingData>();
296
+
297
+ if (value->StrictEquals(realm->isolate_data()->fs_use_promises_symbol())) {
233
298
  if (use_bigint) {
234
- return FSReqPromise<AliasedBigUint64Array>::New(binding_data, use_bigint);
299
+ return FSReqPromise<AliasedBigInt64Array>::New(binding_data, use_bigint);
235
300
  } else {
236
301
  return FSReqPromise<AliasedFloat64Array>::New(binding_data, use_bigint);
237
302
  }
@@ -298,6 +363,38 @@ int SyncCall(Environment* env, v8::Local<v8::Value> ctx,
298
363
  return err;
299
364
  }
300
365
 
366
+ // Similar to SyncCall but throws immediately if there is an error.
367
+ template <typename Predicate, typename Func, typename... Args>
368
+ int SyncCallAndThrowIf(Predicate should_throw,
369
+ Environment* env,
370
+ FSReqWrapSync* req_wrap,
371
+ Func fn,
372
+ Args... args) {
373
+ env->PrintSyncTrace();
374
+ int result = fn(nullptr, &(req_wrap->req), args..., nullptr);
375
+ if (should_throw(result)) {
376
+ env->ThrowUVException(result,
377
+ req_wrap->syscall_p,
378
+ nullptr,
379
+ req_wrap->path_p,
380
+ req_wrap->dest_p);
381
+ }
382
+ return result;
383
+ }
384
+
385
+ constexpr bool is_uv_error(int result) {
386
+ return result < 0;
387
+ }
388
+
389
+ // Similar to SyncCall but throws immediately if there is an error.
390
+ template <typename Func, typename... Args>
391
+ int SyncCallAndThrowOnError(Environment* env,
392
+ FSReqWrapSync* req_wrap,
393
+ Func fn,
394
+ Args... args) {
395
+ return SyncCallAndThrowIf(is_uv_error, env, req_wrap, fn, args...);
396
+ }
397
+
301
398
  } // namespace fs
302
399
  } // namespace node
303
400
 
@@ -3,6 +3,7 @@
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
+ #include <optional>
6
7
  #include "aliased_buffer.h"
7
8
  #include "node_messaging.h"
8
9
  #include "node_snapshotable.h"
@@ -13,24 +14,94 @@ namespace fs {
13
14
 
14
15
  class FileHandleReadWrap;
15
16
 
17
+ enum class FsStatsOffset {
18
+ kDev = 0,
19
+ kMode,
20
+ kNlink,
21
+ kUid,
22
+ kGid,
23
+ kRdev,
24
+ kBlkSize,
25
+ kIno,
26
+ kSize,
27
+ kBlocks,
28
+ kATimeSec,
29
+ kATimeNsec,
30
+ kMTimeSec,
31
+ kMTimeNsec,
32
+ kCTimeSec,
33
+ kCTimeNsec,
34
+ kBirthTimeSec,
35
+ kBirthTimeNsec,
36
+ kFsStatsFieldsNumber
37
+ };
38
+
39
+ // Stat fields buffers contain twice the number of entries in an uv_stat_t
40
+ // because `fs.StatWatcher` needs room to store 2 `fs.Stats` instances.
41
+ constexpr size_t kFsStatsBufferLength =
42
+ static_cast<size_t>(FsStatsOffset::kFsStatsFieldsNumber) * 2;
43
+
44
+ enum class FsStatFsOffset {
45
+ kType = 0,
46
+ kBSize,
47
+ kBlocks,
48
+ kBFree,
49
+ kBAvail,
50
+ kFiles,
51
+ kFFree,
52
+ kFsStatFsFieldsNumber
53
+ };
54
+
55
+ constexpr size_t kFsStatFsBufferLength =
56
+ static_cast<size_t>(FsStatFsOffset::kFsStatFsFieldsNumber);
57
+
16
58
  class BindingData : public SnapshotableObject {
17
59
  public:
18
- explicit BindingData(Environment* env, v8::Local<v8::Object> wrap);
60
+ struct InternalFieldInfo : public node::InternalFieldInfoBase {
61
+ AliasedBufferIndex stats_field_array;
62
+ AliasedBufferIndex stats_field_bigint_array;
63
+ AliasedBufferIndex statfs_field_array;
64
+ AliasedBufferIndex statfs_field_bigint_array;
65
+ };
66
+
67
+ enum class FilePathIsFileReturnType {
68
+ kIsFile = 0,
69
+ kIsNotFile,
70
+ kThrowInsufficientPermissions
71
+ };
72
+
73
+ explicit BindingData(Realm* realm,
74
+ v8::Local<v8::Object> wrap,
75
+ InternalFieldInfo* info = nullptr);
19
76
 
20
77
  AliasedFloat64Array stats_field_array;
21
- AliasedBigUint64Array stats_field_bigint_array;
78
+ AliasedBigInt64Array stats_field_bigint_array;
79
+
80
+ AliasedFloat64Array statfs_field_array;
81
+ AliasedBigInt64Array statfs_field_bigint_array;
22
82
 
23
83
  std::vector<BaseObjectPtr<FileHandleReadWrap>>
24
84
  file_handle_read_wrap_freelist;
25
85
 
26
86
  SERIALIZABLE_OBJECT_METHODS()
27
- static constexpr FastStringKey type_name{"node::fs::BindingData"};
28
- static constexpr EmbedderObjectType type_int =
29
- EmbedderObjectType::k_fs_binding_data;
87
+ SET_BINDING_ID(fs_binding_data)
88
+
89
+ static void LegacyMainResolve(
90
+ const v8::FunctionCallbackInfo<v8::Value>& args);
91
+
92
+ static void CreatePerIsolateProperties(IsolateData* isolate_data,
93
+ v8::Local<v8::ObjectTemplate> ctor);
94
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
30
95
 
31
96
  void MemoryInfo(MemoryTracker* tracker) const override;
32
97
  SET_SELF_SIZE(BindingData)
33
98
  SET_MEMORY_INFO_NAME(BindingData)
99
+
100
+ private:
101
+ InternalFieldInfo* internal_field_info_ = nullptr;
102
+
103
+ static FilePathIsFileReturnType FilePathIsFile(Environment* env,
104
+ const std::string& file_path);
34
105
  };
35
106
 
36
107
  // structure used to store state during a complex operation, e.g., mkdirp.
@@ -81,6 +152,7 @@ class FSReqBase : public ReqWrap<uv_fs_t> {
81
152
  virtual void Reject(v8::Local<v8::Value> reject) = 0;
82
153
  virtual void Resolve(v8::Local<v8::Value> value) = 0;
83
154
  virtual void ResolveStat(const uv_stat_t* stat) = 0;
155
+ virtual void ResolveStatFs(const uv_statfs_t* stat) = 0;
84
156
  virtual void SetReturnValue(
85
157
  const v8::FunctionCallbackInfo<v8::Value>& args) = 0;
86
158
 
@@ -89,8 +161,10 @@ class FSReqBase : public ReqWrap<uv_fs_t> {
89
161
  enum encoding encoding() const { return encoding_; }
90
162
  bool use_bigint() const { return use_bigint_; }
91
163
  bool is_plain_open() const { return is_plain_open_; }
164
+ bool with_file_types() const { return with_file_types_; }
92
165
 
93
166
  void set_is_plain_open(bool value) { is_plain_open_ = value; }
167
+ void set_with_file_types(bool value) { with_file_types_ = value; }
94
168
 
95
169
  FSContinuationData* continuation_data() const {
96
170
  return continuation_data_.get();
@@ -116,6 +190,7 @@ class FSReqBase : public ReqWrap<uv_fs_t> {
116
190
  bool has_data_ = false;
117
191
  bool use_bigint_ = false;
118
192
  bool is_plain_open_ = false;
193
+ bool with_file_types_ = false;
119
194
  const char* syscall_ = nullptr;
120
195
 
121
196
  BaseObjectPtr<BindingData> binding_data_;
@@ -134,6 +209,7 @@ class FSReqCallback final : public FSReqBase {
134
209
  void Reject(v8::Local<v8::Value> reject) override;
135
210
  void Resolve(v8::Local<v8::Value> value) override;
136
211
  void ResolveStat(const uv_stat_t* stat) override;
212
+ void ResolveStatFs(const uv_statfs_t* stat) override;
137
213
  void SetReturnValue(const v8::FunctionCallbackInfo<v8::Value>& args) override;
138
214
 
139
215
  SET_MEMORY_INFO_NAME(FSReqCallback)
@@ -153,6 +229,14 @@ inline v8::Local<v8::Value> FillGlobalStatsArray(BindingData* binding_data,
153
229
  const uv_stat_t* s,
154
230
  const bool second = false);
155
231
 
232
+ template <typename NativeT, typename V8T>
233
+ void FillStatFsArray(AliasedBufferBase<NativeT, V8T>* fields,
234
+ const uv_statfs_t* s);
235
+
236
+ inline v8::Local<v8::Value> FillGlobalStatFsArray(BindingData* binding_data,
237
+ const bool use_bigint,
238
+ const uv_statfs_t* s);
239
+
156
240
  template <typename AliasedBufferT>
157
241
  class FSReqPromise final : public FSReqBase {
158
242
  public:
@@ -163,6 +247,7 @@ class FSReqPromise final : public FSReqBase {
163
247
  inline void Reject(v8::Local<v8::Value> reject) override;
164
248
  inline void Resolve(v8::Local<v8::Value> value) override;
165
249
  inline void ResolveStat(const uv_stat_t* stat) override;
250
+ inline void ResolveStatFs(const uv_statfs_t* stat) override;
166
251
  inline void SetReturnValue(
167
252
  const v8::FunctionCallbackInfo<v8::Value>& args) override;
168
253
  inline void MemoryInfo(MemoryTracker* tracker) const override;
@@ -182,6 +267,7 @@ class FSReqPromise final : public FSReqBase {
182
267
 
183
268
  bool finished_ = false;
184
269
  AliasedBufferT stats_field_array_;
270
+ AliasedBufferT statfs_field_array_;
185
271
  };
186
272
 
187
273
  class FSReqAfterScope final {
@@ -242,13 +328,17 @@ class FileHandle final : public AsyncWrap, public StreamBase {
242
328
 
243
329
  static FileHandle* New(BindingData* binding_data,
244
330
  int fd,
245
- v8::Local<v8::Object> obj = v8::Local<v8::Object>());
331
+ v8::Local<v8::Object> obj = v8::Local<v8::Object>(),
332
+ std::optional<int64_t> maybeOffset = std::nullopt,
333
+ std::optional<int64_t> maybeLength = std::nullopt);
246
334
  ~FileHandle() override;
247
335
 
248
336
  static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
249
337
 
250
338
  int GetFD() override { return fd_; }
251
339
 
340
+ int Release();
341
+
252
342
  // Will asynchronously close the FD and return a Promise that will
253
343
  // be resolved once closing is complete.
254
344
  static void Close(const v8::FunctionCallbackInfo<v8::Value>& args);
@@ -283,7 +373,7 @@ class FileHandle final : public AsyncWrap, public StreamBase {
283
373
  FileHandle(const FileHandle&&) = delete;
284
374
  FileHandle& operator=(const FileHandle&&) = delete;
285
375
 
286
- TransferMode GetTransferMode() const override;
376
+ BaseObject::TransferMode GetTransferMode() const override;
287
377
  std::unique_ptr<worker::TransferData> TransferForMessaging() override;
288
378
 
289
379
  private:
@@ -367,10 +457,22 @@ int MKDirpSync(uv_loop_t* loop,
367
457
 
368
458
  class FSReqWrapSync {
369
459
  public:
370
- FSReqWrapSync() = default;
460
+ FSReqWrapSync(const char* syscall = nullptr,
461
+ const char* path = nullptr,
462
+ const char* dest = nullptr)
463
+ : syscall_p(syscall), path_p(path), dest_p(dest) {}
371
464
  ~FSReqWrapSync() { uv_fs_req_cleanup(&req); }
465
+
372
466
  uv_fs_t req;
467
+ const char* syscall_p;
468
+ const char* path_p;
469
+ const char* dest_p;
373
470
 
471
+ FSReqWrapSync(const FSReqWrapSync&) = delete;
472
+ FSReqWrapSync& operator=(const FSReqWrapSync&) = delete;
473
+
474
+ // TODO(joyeecheung): move these out of FSReqWrapSync and into a special
475
+ // class for mkdirp
374
476
  FSContinuationData* continuation_data() const {
375
477
  return continuation_data_.get();
376
478
  }
@@ -378,9 +480,6 @@ class FSReqWrapSync {
378
480
  continuation_data_ = std::move(data);
379
481
  }
380
482
 
381
- FSReqWrapSync(const FSReqWrapSync&) = delete;
382
- FSReqWrapSync& operator=(const FSReqWrapSync&) = delete;
383
-
384
483
  private:
385
484
  std::unique_ptr<FSContinuationData> continuation_data_;
386
485
  };
@@ -417,6 +516,18 @@ inline int SyncCall(Environment* env, v8::Local<v8::Value> ctx,
417
516
  FSReqWrapSync* req_wrap, const char* syscall,
418
517
  Func fn, Args... args);
419
518
 
519
+ // Similar to SyncCall but throws immediately if there is an error.
520
+ template <typename Predicate, typename Func, typename... Args>
521
+ int SyncCallAndThrowIf(Predicate should_throw,
522
+ Environment* env,
523
+ FSReqWrapSync* req_wrap,
524
+ Func fn,
525
+ Args... args);
526
+ template <typename Func, typename... Args>
527
+ int SyncCallAndThrowOnError(Environment* env,
528
+ FSReqWrapSync* req_wrap,
529
+ Func fn,
530
+ Args... args);
420
531
  } // namespace fs
421
532
 
422
533
  } // namespace node
@@ -3,8 +3,9 @@
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"
@@ -626,6 +627,15 @@ class Http2Session : public AsyncWrap,
626
627
  flags_ |= kSessionStateClosed;
627
628
  }
628
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
+
629
639
  #define IS_FLAG(name, flag) \
630
640
  bool is_##name() const { return flags_ & flag; } \
631
641
  void set_##name(bool on = true) { \
@@ -714,7 +724,7 @@ class Http2Session : public AsyncWrap,
714
724
  static void AltSvc(const v8::FunctionCallbackInfo<v8::Value>& args);
715
725
  static void Origin(const v8::FunctionCallbackInfo<v8::Value>& args);
716
726
 
717
- template <get_setting fn>
727
+ template <get_setting fn, bool local>
718
728
  static void RefreshSettings(const v8::FunctionCallbackInfo<v8::Value>& args);
719
729
 
720
730
  uv_loop_t* event_loop() const {
@@ -738,6 +748,9 @@ class Http2Session : public AsyncWrap,
738
748
  current_session_memory_ -= amount;
739
749
  }
740
750
 
751
+ void UpdateLocalCustomSettings(size_t count_,
752
+ nghttp2_settings_entry* entries_);
753
+
741
754
  // Tell our custom memory allocator that this rcbuf is independent of
742
755
  // this session now, and may outlive it.
743
756
  void StopTrackingRcbuf(nghttp2_rcbuf* buf);
@@ -775,6 +788,8 @@ class Http2Session : public AsyncWrap,
775
788
  private:
776
789
  void EmitStatistics();
777
790
 
791
+ void FetchAllowedRemoteCustomSettings();
792
+
778
793
  // Frame Padding Strategies
779
794
  ssize_t OnDWordAlignedPadding(size_t frameLength,
780
795
  size_t maxPayloadLen);
@@ -842,11 +857,11 @@ class Http2Session : public AsyncWrap,
842
857
  const nghttp2_frame* frame,
843
858
  size_t maxPayloadLen,
844
859
  void* user_data);
845
- static int OnNghttpError(
846
- nghttp2_session* session,
847
- const char* message,
848
- size_t len,
849
- void* user_data);
860
+ static int OnNghttpError(nghttp2_session* session,
861
+ int lib_error_code,
862
+ const char* message,
863
+ size_t len,
864
+ void* user_data);
850
865
  static int OnSendData(
851
866
  nghttp2_session* session,
852
867
  nghttp2_frame* frame,
@@ -914,6 +929,9 @@ class Http2Session : public AsyncWrap,
914
929
  size_t max_outstanding_settings_ = kDefaultMaxSettings;
915
930
  std::queue<BaseObjectPtr<Http2Settings>> outstanding_settings_;
916
931
 
932
+ struct custom_settings_state local_custom_settings_;
933
+ struct custom_settings_state remote_custom_settings_;
934
+
917
935
  std::vector<NgHttp2StreamWrite> outgoing_buffers_;
918
936
  std::vector<uint8_t> outgoing_storage_;
919
937
  size_t outgoing_length_ = 0;
@@ -1017,8 +1035,7 @@ class Http2Settings : public AsyncWrap {
1017
1035
  static void RefreshDefaults(Http2State* http2_state);
1018
1036
 
1019
1037
  // Update the local or remote settings for the given session
1020
- static void Update(Http2Session* session,
1021
- get_setting fn);
1038
+ static void Update(Http2Session* session, get_setting fn, bool local);
1022
1039
 
1023
1040
  private:
1024
1041
  static size_t Init(
@@ -1034,7 +1051,7 @@ class Http2Settings : public AsyncWrap {
1034
1051
  v8::Global<v8::Function> callback_;
1035
1052
  uint64_t startTime_;
1036
1053
  size_t count_ = 0;
1037
- nghttp2_settings_entry entries_[IDX_SETTINGS_COUNT];
1054
+ nghttp2_settings_entry entries_[IDX_SETTINGS_COUNT + MAX_ADDITIONAL_SETTINGS];
1038
1055
  };
1039
1056
 
1040
1057
  class Origins {
@@ -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,8 @@ 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,
58
63
  IDX_OPTIONS_FLAGS
59
64
  };
60
65
 
@@ -83,37 +88,36 @@ namespace http2 {
83
88
 
84
89
  class Http2State : public BaseObject {
85
90
  public:
86
- Http2State(Environment* env, v8::Local<v8::Object> obj)
87
- : BaseObject(env, obj),
88
- root_buffer(env->isolate(), sizeof(http2_state_internal)),
91
+ Http2State(Realm* realm, v8::Local<v8::Object> obj)
92
+ : BaseObject(realm, obj),
93
+ root_buffer(realm->isolate(), sizeof(http2_state_internal)),
89
94
  session_state_buffer(
90
- env->isolate(),
95
+ realm->isolate(),
91
96
  offsetof(http2_state_internal, session_state_buffer),
92
97
  IDX_SESSION_STATE_COUNT,
93
98
  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),
99
+ stream_state_buffer(realm->isolate(),
100
+ offsetof(http2_state_internal, stream_state_buffer),
101
+ IDX_STREAM_STATE_COUNT,
102
+ root_buffer),
103
+ stream_stats_buffer(realm->isolate(),
104
+ offsetof(http2_state_internal, stream_stats_buffer),
105
+ IDX_STREAM_STATS_COUNT,
106
+ root_buffer),
104
107
  session_stats_buffer(
105
- env->isolate(),
108
+ realm->isolate(),
106
109
  offsetof(http2_state_internal, session_stats_buffer),
107
110
  IDX_SESSION_STATS_COUNT,
108
111
  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) {}
112
+ options_buffer(realm->isolate(),
113
+ offsetof(http2_state_internal, options_buffer),
114
+ IDX_OPTIONS_FLAGS + 1,
115
+ root_buffer),
116
+ settings_buffer(
117
+ realm->isolate(),
118
+ offsetof(http2_state_internal, settings_buffer),
119
+ IDX_SETTINGS_COUNT + 1 + 1 + 2 * MAX_ADDITIONAL_SETTINGS,
120
+ root_buffer) {}
117
121
 
118
122
  AliasedUint8Array root_buffer;
119
123
  AliasedFloat64Array session_state_buffer;
@@ -127,7 +131,7 @@ class Http2State : public BaseObject {
127
131
  SET_SELF_SIZE(Http2State)
128
132
  SET_MEMORY_INFO_NAME(Http2State)
129
133
 
130
- static constexpr FastStringKey type_name { "http2" };
134
+ SET_BINDING_ID(http2_binding_data)
131
135
 
132
136
  private:
133
137
  struct http2_state_internal {
@@ -137,7 +141,12 @@ class Http2State : public BaseObject {
137
141
  double stream_stats_buffer[IDX_STREAM_STATS_COUNT];
138
142
  double session_stats_buffer[IDX_SESSION_STATS_COUNT];
139
143
  uint32_t options_buffer[IDX_OPTIONS_FLAGS + 1];
140
- uint32_t settings_buffer[IDX_SETTINGS_COUNT + 1];
144
+ // first + 1: number of actual nghttp2 supported settings
145
+ // second + 1: number of additional settings not supported by nghttp2
146
+ // 2 * MAX_ADDITIONAL_SETTINGS: settings id and value for each
147
+ // additional setting
148
+ uint32_t settings_buffer[IDX_SETTINGS_COUNT + 1 + 1 +
149
+ 2 * MAX_ADDITIONAL_SETTINGS];
141
150
  };
142
151
  };
143
152