@encharm/cws 4.4.1 → 4.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. package/binding.gyp +1 -1
  2. package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
  3. package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
  4. package/dist/bindings/cws_darwin_arm64_node137.node +0 -0
  5. package/dist/bindings/cws_linux_arm64_node115.node +0 -0
  6. package/dist/bindings/cws_linux_arm64_node127.node +0 -0
  7. package/dist/bindings/cws_linux_x64_node115.node +0 -0
  8. package/dist/bindings/cws_linux_x64_node127.node +0 -0
  9. package/dist/bindings/cws_linux_x64_node137.node +0 -0
  10. package/dist/bindings/cws_win32_x64_node108.node +0 -0
  11. package/dist/bindings/cws_win32_x64_node115.node +0 -0
  12. package/dist/bindings/cws_win32_x64_node127.node +0 -0
  13. package/dist/bindings/cws_win32_x64_node83.node +0 -0
  14. package/dist/bindings/cws_win32_x64_node93.node +0 -0
  15. package/package.json +1 -1
  16. package/src/Addon.h +13 -23
  17. package/src/Socket.h +0 -1
  18. package/src/headers/22/acorn_version.h +6 -0
  19. package/src/headers/22/aliased_buffer-inl.h +243 -0
  20. package/src/headers/22/aliased_buffer.h +206 -0
  21. package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
  22. package/src/headers/{18 → 22}/async_wrap.h +65 -59
  23. package/src/headers/{18 → 22}/base_object-inl.h +57 -117
  24. package/src/headers/{18 → 22}/base_object.h +58 -30
  25. package/src/headers/22/base_object_types.h +74 -0
  26. package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
  27. package/src/headers/22/blob_serializer_deserializer.h +132 -0
  28. package/src/headers/{16 → 22}/callback_queue.h +1 -0
  29. package/src/headers/{16 → 22}/cares_wrap.h +27 -20
  30. package/src/headers/22/cjs_module_lexer_version.h +6 -0
  31. package/src/headers/22/cleanup_queue-inl.h +62 -0
  32. package/src/headers/22/cleanup_queue.h +85 -0
  33. package/src/headers/22/compile_cache.h +104 -0
  34. package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
  35. package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
  36. package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
  37. package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
  38. package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
  39. package/src/headers/22/crypto/ncrypto.h +752 -0
  40. package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
  41. package/src/headers/{18 → 22}/debug_utils.h +25 -19
  42. package/src/headers/22/encoding_binding.h +59 -0
  43. package/src/headers/{14 → 22}/env-inl.h +276 -409
  44. package/src/headers/22/env.h +1266 -0
  45. package/src/headers/22/env_properties.h +497 -0
  46. package/src/headers/{18 → 22}/handle_wrap.h +2 -0
  47. package/src/headers/{18 → 22}/histogram.h +88 -48
  48. package/src/headers/{16 → 22}/inspector_agent.h +17 -1
  49. package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
  50. package/src/headers/22/js_native_api.h +619 -0
  51. package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
  52. package/src/headers/22/js_native_api_v8.h +485 -0
  53. package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
  54. package/src/headers/22/json_parser.h +40 -0
  55. package/src/headers/{16 → 22}/json_utils.h +19 -8
  56. package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
  57. package/src/headers/{14 → 22}/memory_tracker.h +13 -8
  58. package/src/headers/{16 → 22}/module_wrap.h +49 -19
  59. package/src/headers/22/ncrypto/ncrypto.h +752 -0
  60. package/src/headers/{18 → 22}/node.h +465 -68
  61. package/src/headers/{18 → 22}/node_api.h +66 -81
  62. package/src/headers/{18 → 22}/node_api_internals.h +8 -4
  63. package/src/headers/{18 → 22}/node_api_types.h +5 -0
  64. package/src/headers/22/node_binding.h +154 -0
  65. package/src/headers/{18 → 22}/node_blob.h +46 -78
  66. package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
  67. package/src/headers/{18 → 22}/node_bob.h +2 -6
  68. package/src/headers/{18 → 22}/node_buffer.h +1 -1
  69. package/src/headers/22/node_builtins.h +220 -0
  70. package/src/headers/{18 → 22}/node_constants.h +3 -5
  71. package/src/headers/22/node_context_data.h +168 -0
  72. package/src/headers/22/node_contextify.h +199 -0
  73. package/src/headers/{16 → 22}/node_crypto.h +1 -2
  74. package/src/headers/22/node_dotenv.h +45 -0
  75. package/src/headers/{18 → 22}/node_errors.h +86 -27
  76. package/src/headers/22/node_exit_code.h +54 -0
  77. package/src/headers/22/node_external_reference.h +249 -0
  78. package/src/headers/{18 → 22}/node_file-inl.h +127 -30
  79. package/src/headers/{16 → 22}/node_file.h +122 -11
  80. package/src/headers/{18 → 22}/node_http2.h +28 -11
  81. package/src/headers/{16 → 22}/node_http2_state.h +34 -25
  82. package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
  83. package/src/headers/{18 → 22}/node_http_common.h +56 -55
  84. package/src/headers/{16 → 22}/node_i18n.h +5 -18
  85. package/src/headers/{18 → 22}/node_internals.h +121 -59
  86. package/src/headers/{18 → 22}/node_main_instance.h +4 -31
  87. package/src/headers/{18 → 22}/node_messaging.h +27 -10
  88. package/src/headers/{18 → 22}/node_metadata.h +23 -1
  89. package/src/headers/{18 → 22}/node_options-inl.h +24 -11
  90. package/src/headers/{18 → 22}/node_options.h +124 -39
  91. package/src/headers/{18 → 22}/node_perf.h +0 -2
  92. package/src/headers/{18 → 22}/node_perf_common.h +20 -9
  93. package/src/headers/{18 → 22}/node_platform.h +11 -5
  94. package/src/headers/{18 → 22}/node_process.h +26 -14
  95. package/src/headers/22/node_realm-inl.h +145 -0
  96. package/src/headers/22/node_realm.h +184 -0
  97. package/src/headers/{16 → 22}/node_report.h +13 -17
  98. package/src/headers/{16 → 22}/node_revert.h +3 -3
  99. package/src/headers/{16 → 22}/node_root_certs.h +902 -461
  100. package/src/headers/22/node_sea.h +64 -0
  101. package/src/headers/22/node_shadow_realm.h +46 -0
  102. package/src/headers/22/node_snapshot_builder.h +57 -0
  103. package/src/headers/22/node_snapshotable.h +174 -0
  104. package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
  105. package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
  106. package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
  107. package/src/headers/22/node_threadsafe_cow.h +105 -0
  108. package/src/headers/22/node_union_bytes.h +81 -0
  109. package/src/headers/22/node_url.h +96 -0
  110. package/src/headers/22/node_v8.h +77 -0
  111. package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
  112. package/src/headers/{16 → 22}/node_version.h +21 -9
  113. package/src/headers/22/node_wasi.h +185 -0
  114. package/src/headers/{14 → 22}/node_watchdog.h +2 -0
  115. package/src/headers/{18 → 22}/node_worker.h +7 -2
  116. package/src/headers/22/permission/child_process_permission.h +31 -0
  117. package/src/headers/22/permission/fs_permission.h +167 -0
  118. package/src/headers/22/permission/inspector_permission.h +31 -0
  119. package/src/headers/22/permission/permission.h +99 -0
  120. package/src/headers/22/permission/permission_base.h +60 -0
  121. package/src/headers/22/permission/wasi_permission.h +31 -0
  122. package/src/headers/22/permission/worker_permission.h +31 -0
  123. package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
  124. package/src/headers/{14 → 22}/spawn_sync.h +3 -3
  125. package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
  126. package/src/headers/{18 → 22}/stream_base.h +35 -16
  127. package/src/headers/{18 → 22}/stream_pipe.h +3 -4
  128. package/src/headers/{16 → 22}/stream_wrap.h +2 -1
  129. package/src/headers/{18 → 22}/string_bytes.h +5 -14
  130. package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
  131. package/src/headers/{16 → 22}/string_decoder.h +0 -1
  132. package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
  133. package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
  134. package/src/headers/22/timers.h +76 -0
  135. package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
  136. package/src/headers/{16 → 22}/udp_wrap.h +8 -5
  137. package/src/headers/22/undici_version.h +6 -0
  138. package/src/headers/{18 → 22}/util-inl.h +97 -127
  139. package/src/headers/{18 → 22}/util.h +293 -106
  140. package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
  141. package/src/headers/24/acorn_version.h +6 -0
  142. package/src/headers/24/addon_permission.h +31 -0
  143. package/src/headers/{16/tracing → 24}/agent.h +1 -1
  144. package/src/headers/24/aliased_buffer-inl.h +244 -0
  145. package/src/headers/24/aliased_buffer.h +206 -0
  146. package/src/headers/24/amaro_version.h +6 -0
  147. package/src/headers/24/application.h +165 -0
  148. package/src/headers/24/async_context_frame.h +33 -0
  149. package/src/headers/{14 → 24}/async_wrap-inl.h +8 -6
  150. package/src/headers/{16 → 24}/async_wrap.h +86 -88
  151. package/src/headers/{16 → 24}/base_object-inl.h +75 -119
  152. package/src/headers/{16 → 24}/base_object.h +84 -40
  153. package/src/headers/24/base_object_types.h +74 -0
  154. package/src/headers/24/bindingdata.h +272 -0
  155. package/src/headers/24/blob_serializer_deserializer-inl.h +385 -0
  156. package/src/headers/24/blob_serializer_deserializer.h +132 -0
  157. package/src/headers/{18 → 24}/callback_queue.h +1 -0
  158. package/src/headers/{18 → 24}/cares_wrap.h +68 -144
  159. package/src/headers/24/child_process_permission.h +31 -0
  160. package/src/headers/24/cid.h +127 -0
  161. package/src/headers/24/cjs_module_lexer_version.h +6 -0
  162. package/src/headers/24/cleanup_queue-inl.h +36 -0
  163. package/src/headers/24/cleanup_queue.h +79 -0
  164. package/src/headers/24/compile_cache.h +113 -0
  165. package/src/headers/24/cppgc_helpers-inl.h +65 -0
  166. package/src/headers/24/cppgc_helpers.h +162 -0
  167. package/src/headers/24/crypto/crypto_aes.h +97 -0
  168. package/src/headers/24/crypto/crypto_argon2.h +86 -0
  169. package/src/headers/{16 → 24}/crypto/crypto_bio.h +8 -9
  170. package/src/headers/24/crypto/crypto_chacha20_poly1305.h +64 -0
  171. package/src/headers/{18 → 24}/crypto/crypto_cipher.h +48 -58
  172. package/src/headers/{16 → 24}/crypto/crypto_clienthello-inl.h +2 -2
  173. package/src/headers/{16 → 24}/crypto/crypto_clienthello.h +1 -1
  174. package/src/headers/24/crypto/crypto_common.h +48 -0
  175. package/src/headers/{16 → 24}/crypto/crypto_context.h +46 -22
  176. package/src/headers/{18 → 24}/crypto/crypto_dh.h +27 -57
  177. package/src/headers/{18 → 24}/crypto/crypto_dsa.h +7 -34
  178. package/src/headers/{18 → 24}/crypto/crypto_ec.h +42 -49
  179. package/src/headers/{18 → 24}/crypto/crypto_hash.h +11 -11
  180. package/src/headers/{18 → 24}/crypto/crypto_hkdf.h +10 -14
  181. package/src/headers/{18 → 24}/crypto/crypto_hmac.h +11 -13
  182. package/src/headers/24/crypto/crypto_kem.h +113 -0
  183. package/src/headers/{18 → 24}/crypto/crypto_keygen.h +59 -74
  184. package/src/headers/{16 → 24}/crypto/crypto_keys.h +134 -154
  185. package/src/headers/24/crypto/crypto_ml_dsa.h +21 -0
  186. package/src/headers/{18 → 24}/crypto/crypto_pbkdf2.h +9 -11
  187. package/src/headers/{18 → 24}/crypto/crypto_random.h +28 -34
  188. package/src/headers/{18 → 24}/crypto/crypto_rsa.h +30 -35
  189. package/src/headers/{18 → 24}/crypto/crypto_scrypt.h +8 -10
  190. package/src/headers/{18 → 24}/crypto/crypto_sig.h +36 -48
  191. package/src/headers/{16 → 24}/crypto/crypto_tls.h +35 -18
  192. package/src/headers/{16 → 24}/crypto/crypto_util.h +183 -321
  193. package/src/headers/24/crypto/crypto_x509.h +140 -0
  194. package/src/headers/24/data.h +148 -0
  195. package/src/headers/{14 → 24}/debug_utils-inl.h +17 -8
  196. package/src/headers/{16 → 24}/debug_utils.h +31 -22
  197. package/src/headers/24/defs.h +254 -0
  198. package/src/headers/24/embedded_data.h +17 -0
  199. package/src/headers/24/encoding_binding.h +60 -0
  200. package/src/headers/24/endpoint.h +421 -0
  201. package/src/headers/{16 → 24}/env-inl.h +198 -540
  202. package/src/headers/24/env.h +1257 -0
  203. package/src/headers/24/env_properties.h +561 -0
  204. package/src/headers/24/fs_permission.h +167 -0
  205. package/src/headers/{16 → 24}/handle_wrap.h +4 -2
  206. package/src/headers/{16 → 24}/histogram-inl.h +34 -15
  207. package/src/headers/24/histogram.h +279 -0
  208. package/src/headers/24/http3.h +44 -0
  209. package/src/headers/{18 → 24}/inspector_agent.h +23 -2
  210. package/src/headers/24/inspector_permission.h +31 -0
  211. package/src/headers/{18 → 24}/inspector_profiler.h +15 -15
  212. package/src/headers/24/io_agent.h +30 -0
  213. package/src/headers/{18 → 24}/js_native_api.h +74 -30
  214. package/src/headers/{16 → 24}/js_native_api_types.h +61 -10
  215. package/src/headers/{18 → 24}/js_native_api_v8.h +205 -160
  216. package/src/headers/{16 → 24}/js_native_api_v8_internals.h +12 -6
  217. package/src/headers/24/json_parser.h +40 -0
  218. package/src/headers/{18 → 24}/json_utils.h +19 -8
  219. package/src/headers/24/logstream.h +81 -0
  220. package/src/headers/24/main_thread_interface.h +116 -0
  221. package/src/headers/{16 → 24}/memory_tracker-inl.h +115 -17
  222. package/src/headers/{16 → 24}/memory_tracker.h +58 -9
  223. package/src/headers/24/module_wrap.h +229 -0
  224. package/src/headers/24/ncrypto.h +1625 -0
  225. package/src/headers/24/network_agent.h +118 -0
  226. package/src/headers/24/network_inspector.h +45 -0
  227. package/src/headers/24/network_resource_manager.h +29 -0
  228. package/src/headers/{16 → 24}/node.h +560 -72
  229. package/src/headers/24/node_api.h +269 -0
  230. package/src/headers/24/node_api_internals.h +46 -0
  231. package/src/headers/{16 → 24}/node_api_types.h +13 -11
  232. package/src/headers/24/node_binding.h +163 -0
  233. package/src/headers/{16 → 24}/node_blob.h +46 -78
  234. package/src/headers/{16 → 24}/node_bob-inl.h +1 -2
  235. package/src/headers/{16 → 24}/node_bob.h +2 -6
  236. package/src/headers/{14 → 24}/node_buffer.h +1 -1
  237. package/src/headers/24/node_builtins.h +223 -0
  238. package/src/headers/24/node_config_file.h +65 -0
  239. package/src/headers/{14 → 24}/node_constants.h +3 -5
  240. package/src/headers/24/node_context_data.h +168 -0
  241. package/src/headers/24/node_contextify.h +261 -0
  242. package/src/headers/{18 → 24}/node_crypto.h +7 -2
  243. package/src/headers/24/node_debug.h +25 -0
  244. package/src/headers/24/node_dotenv.h +45 -0
  245. package/src/headers/{16 → 24}/node_errors.h +146 -32
  246. package/src/headers/24/node_exit_code.h +54 -0
  247. package/src/headers/{18 → 24}/node_external_reference.h +44 -22
  248. package/src/headers/{16 → 24}/node_file-inl.h +156 -50
  249. package/src/headers/{18 → 24}/node_file.h +129 -15
  250. package/src/headers/{16 → 24}/node_http2.h +53 -18
  251. package/src/headers/{14 → 24}/node_http2_state.h +35 -25
  252. package/src/headers/{16 → 24}/node_http_common-inl.h +8 -10
  253. package/src/headers/{16 → 24}/node_http_common.h +63 -59
  254. package/src/headers/{18 → 24}/node_i18n.h +5 -18
  255. package/src/headers/{16 → 24}/node_internals.h +131 -76
  256. package/src/headers/24/node_json.h +24 -0
  257. package/src/headers/24/node_large_page.h +34 -0
  258. package/src/headers/24/node_locks.h +180 -0
  259. package/src/headers/{14 → 24}/node_main_instance.h +15 -44
  260. package/src/headers/{16 → 24}/node_mem-inl.h +7 -7
  261. package/src/headers/{16 → 24}/node_messaging.h +27 -11
  262. package/src/headers/{16 → 24}/node_metadata.h +44 -2
  263. package/src/headers/24/node_modules.h +93 -0
  264. package/src/headers/{16 → 24}/node_options-inl.h +93 -46
  265. package/src/headers/{16 → 24}/node_options.h +251 -63
  266. package/src/headers/{16 → 24}/node_perf.h +6 -25
  267. package/src/headers/{16 → 24}/node_perf_common.h +23 -10
  268. package/src/headers/24/node_platform.h +286 -0
  269. package/src/headers/24/node_process.h +111 -0
  270. package/src/headers/24/node_realm-inl.h +153 -0
  271. package/src/headers/24/node_realm.h +236 -0
  272. package/src/headers/{18 → 24}/node_report.h +13 -17
  273. package/src/headers/{18 → 24}/node_revert.h +3 -3
  274. package/src/headers/{18 → 24}/node_root_certs.h +1010 -710
  275. package/src/headers/24/node_sea.h +74 -0
  276. package/src/headers/24/node_shadow_realm.h +46 -0
  277. package/src/headers/24/node_snapshot_builder.h +57 -0
  278. package/src/headers/24/node_snapshotable.h +174 -0
  279. package/src/headers/{16 → 24}/node_sockaddr-inl.h +11 -20
  280. package/src/headers/{16 → 24}/node_sockaddr.h +9 -20
  281. package/src/headers/24/node_sqlite.h +270 -0
  282. package/src/headers/{18 → 24}/node_stat_watcher.h +2 -1
  283. package/src/headers/24/node_string.h +101 -0
  284. package/src/headers/24/node_task_runner.h +92 -0
  285. package/src/headers/24/node_threadsafe_cow-inl.h +54 -0
  286. package/src/headers/24/node_threadsafe_cow.h +105 -0
  287. package/src/headers/24/node_union_bytes.h +81 -0
  288. package/src/headers/24/node_url.h +101 -0
  289. package/src/headers/24/node_url_pattern.h +118 -0
  290. package/src/headers/24/node_v8.h +77 -0
  291. package/src/headers/{18 → 24}/node_v8_platform-inl.h +22 -31
  292. package/src/headers/{18 → 24}/node_version.h +18 -6
  293. package/src/headers/24/node_wasi.h +185 -0
  294. package/src/headers/24/node_wasm_web_api.h +55 -0
  295. package/src/headers/{18 → 24}/node_watchdog.h +2 -0
  296. package/src/headers/24/node_webstorage.h +60 -0
  297. package/src/headers/{16 → 24}/node_worker.h +24 -10
  298. package/src/headers/24/packet.h +155 -0
  299. package/src/headers/24/path.h +33 -0
  300. package/src/headers/24/permission/addon_permission.h +31 -0
  301. package/src/headers/24/permission/child_process_permission.h +31 -0
  302. package/src/headers/24/permission/fs_permission.h +167 -0
  303. package/src/headers/24/permission/inspector_permission.h +31 -0
  304. package/src/headers/24/permission/permission.h +100 -0
  305. package/src/headers/24/permission/permission_base.h +65 -0
  306. package/src/headers/24/permission/wasi_permission.h +31 -0
  307. package/src/headers/24/permission/worker_permission.h +31 -0
  308. package/src/headers/24/permission.h +100 -0
  309. package/src/headers/24/permission_base.h +65 -0
  310. package/src/headers/24/preferredaddress.h +72 -0
  311. package/src/headers/24/protocol_helper.h +27 -0
  312. package/src/headers/24/queue.h +306 -0
  313. package/src/headers/{18 → 24}/req_wrap-inl.h +12 -6
  314. package/src/headers/{16 → 24}/req_wrap.h +3 -1
  315. package/src/headers/24/runtime_agent.h +41 -0
  316. package/src/headers/24/session.h +528 -0
  317. package/src/headers/24/sessionticket.h +108 -0
  318. package/src/headers/{18 → 24}/spawn_sync.h +9 -8
  319. package/src/headers/{16 → 24}/stream_base-inl.h +3 -133
  320. package/src/headers/{16 → 24}/stream_base.h +43 -19
  321. package/src/headers/{16 → 24}/stream_pipe.h +7 -4
  322. package/src/headers/{18 → 24}/stream_wrap.h +2 -3
  323. package/src/headers/24/streams.h +370 -0
  324. package/src/headers/{16 → 24}/string_bytes.h +8 -21
  325. package/src/headers/{18 → 24}/string_decoder-inl.h +0 -6
  326. package/src/headers/{18 → 24}/string_decoder.h +0 -1
  327. package/src/headers/24/target_agent.h +75 -0
  328. package/src/headers/{16 → 24}/tcp_wrap.h +3 -1
  329. package/src/headers/{14 → 24}/threadpoolwork-inl.h +14 -1
  330. package/src/headers/24/timer_wrap-inl.h +32 -0
  331. package/src/headers/{16 → 24}/timer_wrap.h +7 -4
  332. package/src/headers/24/timers.h +75 -0
  333. package/src/headers/24/tlscontext.h +228 -0
  334. package/src/headers/24/tokens.h +256 -0
  335. package/src/headers/{14/tracing → 24}/trace_event.h +7 -5
  336. package/src/headers/24/traced_value.h +129 -0
  337. package/src/headers/24/tracing_agent.h +43 -0
  338. package/src/headers/24/transportparams.h +166 -0
  339. package/src/headers/{16 → 24}/tty_wrap.h +0 -1
  340. package/src/headers/{18 → 24}/udp_wrap.h +8 -5
  341. package/src/headers/24/undici_version.h +6 -0
  342. package/src/headers/{16 → 24}/util-inl.h +267 -131
  343. package/src/headers/{16 → 24}/util.h +338 -146
  344. package/src/headers/24/v8-external-memory-accounter.h +60 -0
  345. package/src/headers/24/v8-fast-api-calls.h +819 -0
  346. package/src/headers/24/v8-inspector.h +426 -0
  347. package/src/headers/24/wasi_permission.h +31 -0
  348. package/src/headers/24/worker_agent.h +40 -0
  349. package/src/headers/24/worker_inspector.h +124 -0
  350. package/src/headers/24/worker_permission.h +31 -0
  351. package/src/headers/24/zlib_version.h +6 -0
  352. package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
  353. package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
  354. package/dist/bindings/cws_darwin_x64_node83.node +0 -0
  355. package/dist/bindings/cws_darwin_x64_node93.node +0 -0
  356. package/dist/bindings/cws_linux_arm64_node83.node +0 -0
  357. package/dist/bindings/cws_linux_arm64_node93.node +0 -0
  358. package/dist/bindings/cws_linux_x64_node83.node +0 -0
  359. package/dist/bindings/cws_linux_x64_node93.node +0 -0
  360. package/src/headers/14/aliased_buffer.h +0 -263
  361. package/src/headers/14/allocated_buffer-inl.h +0 -110
  362. package/src/headers/14/allocated_buffer.h +0 -73
  363. package/src/headers/14/async_wrap.h +0 -230
  364. package/src/headers/14/base64.h +0 -183
  365. package/src/headers/14/base_object-inl.h +0 -371
  366. package/src/headers/14/base_object.h +0 -281
  367. package/src/headers/14/callback_queue-inl.h +0 -97
  368. package/src/headers/14/callback_queue.h +0 -78
  369. package/src/headers/14/debug_utils.h +0 -181
  370. package/src/headers/14/env.h +0 -1388
  371. package/src/headers/14/handle_wrap.h +0 -117
  372. package/src/headers/14/histogram-inl.h +0 -83
  373. package/src/headers/14/histogram.h +0 -98
  374. package/src/headers/14/inspector_agent.h +0 -149
  375. package/src/headers/14/inspector_profiler.h +0 -137
  376. package/src/headers/14/js_native_api.h +0 -544
  377. package/src/headers/14/js_native_api_types.h +0 -143
  378. package/src/headers/14/js_native_api_v8.h +0 -301
  379. package/src/headers/14/js_native_api_v8_internals.h +0 -38
  380. package/src/headers/14/json_utils.h +0 -161
  381. package/src/headers/14/memory_tracker-inl.h +0 -355
  382. package/src/headers/14/module_wrap.h +0 -99
  383. package/src/headers/14/node.h +0 -1032
  384. package/src/headers/14/node_api.h +0 -255
  385. package/src/headers/14/node_api_types.h +0 -44
  386. package/src/headers/14/node_binding.h +0 -99
  387. package/src/headers/14/node_context_data.h +0 -44
  388. package/src/headers/14/node_contextify.h +0 -161
  389. package/src/headers/14/node_crypto.h +0 -865
  390. package/src/headers/14/node_crypto_bio.h +0 -195
  391. package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
  392. package/src/headers/14/node_crypto_clienthello.h +0 -132
  393. package/src/headers/14/node_crypto_common.h +0 -138
  394. package/src/headers/14/node_crypto_groups.h +0 -415
  395. package/src/headers/14/node_dtrace.h +0 -86
  396. package/src/headers/14/node_errors.h +0 -214
  397. package/src/headers/14/node_file-inl.h +0 -306
  398. package/src/headers/14/node_file.h +0 -417
  399. package/src/headers/14/node_http2.h +0 -1191
  400. package/src/headers/14/node_http_common-inl.h +0 -194
  401. package/src/headers/14/node_http_common.h +0 -529
  402. package/src/headers/14/node_i18n.h +0 -144
  403. package/src/headers/14/node_internals.h +0 -405
  404. package/src/headers/14/node_mem.h +0 -45
  405. package/src/headers/14/node_messaging.h +0 -303
  406. package/src/headers/14/node_metadata.h +0 -109
  407. package/src/headers/14/node_mutex.h +0 -247
  408. package/src/headers/14/node_native_module.h +0 -101
  409. package/src/headers/14/node_native_module_env.h +0 -66
  410. package/src/headers/14/node_options-inl.h +0 -451
  411. package/src/headers/14/node_options.h +0 -481
  412. package/src/headers/14/node_perf.h +0 -181
  413. package/src/headers/14/node_perf_common.h +0 -97
  414. package/src/headers/14/node_platform.h +0 -189
  415. package/src/headers/14/node_process.h +0 -40
  416. package/src/headers/14/node_report.h +0 -47
  417. package/src/headers/14/node_revert.h +0 -72
  418. package/src/headers/14/node_root_certs.h +0 -3458
  419. package/src/headers/14/node_sockaddr-inl.h +0 -170
  420. package/src/headers/14/node_sockaddr.h +0 -123
  421. package/src/headers/14/node_stat_watcher.h +0 -70
  422. package/src/headers/14/node_union_bytes.h +0 -103
  423. package/src/headers/14/node_url.h +0 -188
  424. package/src/headers/14/node_version.h +0 -98
  425. package/src/headers/14/node_wasi.h +0 -108
  426. package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
  427. package/src/headers/14/node_win32_etw_provider.h +0 -99
  428. package/src/headers/14/node_worker.h +0 -141
  429. package/src/headers/14/pipe_wrap.h +0 -78
  430. package/src/headers/14/req_wrap-inl.h +0 -170
  431. package/src/headers/14/req_wrap.h +0 -77
  432. package/src/headers/14/stream_base-inl.h +0 -275
  433. package/src/headers/14/stream_base.h +0 -434
  434. package/src/headers/14/stream_pipe.h +0 -73
  435. package/src/headers/14/stream_wrap.h +0 -130
  436. package/src/headers/14/string_bytes.h +0 -129
  437. package/src/headers/14/string_decoder.h +0 -50
  438. package/src/headers/14/string_search.h +0 -638
  439. package/src/headers/14/tcp_wrap.h +0 -101
  440. package/src/headers/14/tls_wrap.h +0 -222
  441. package/src/headers/14/tracing/agent.h +0 -195
  442. package/src/headers/14/tracing/traced_value.h +0 -70
  443. package/src/headers/14/tty_wrap.h +0 -64
  444. package/src/headers/14/udp_wrap.h +0 -227
  445. package/src/headers/14/util-inl.h +0 -566
  446. package/src/headers/14/util.h +0 -804
  447. package/src/headers/14/v8abbr.h +0 -124
  448. package/src/headers/16/aliased_buffer.h +0 -315
  449. package/src/headers/16/allocated_buffer-inl.h +0 -110
  450. package/src/headers/16/allocated_buffer.h +0 -73
  451. package/src/headers/16/async_wrap-inl.h +0 -94
  452. package/src/headers/16/base64-inl.h +0 -189
  453. package/src/headers/16/base64.h +0 -69
  454. package/src/headers/16/crypto/crypto_aes.h +0 -89
  455. package/src/headers/16/crypto/crypto_cipher.h +0 -286
  456. package/src/headers/16/crypto/crypto_common.h +0 -187
  457. package/src/headers/16/crypto/crypto_dh.h +0 -157
  458. package/src/headers/16/crypto/crypto_dsa.h +0 -76
  459. package/src/headers/16/crypto/crypto_ec.h +0 -169
  460. package/src/headers/16/crypto/crypto_groups.h +0 -415
  461. package/src/headers/16/crypto/crypto_hash.h +0 -89
  462. package/src/headers/16/crypto/crypto_hkdf.h +0 -66
  463. package/src/headers/16/crypto/crypto_hmac.h +0 -94
  464. package/src/headers/16/crypto/crypto_keygen.h +0 -301
  465. package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
  466. package/src/headers/16/crypto/crypto_random.h +0 -130
  467. package/src/headers/16/crypto/crypto_rsa.h +0 -141
  468. package/src/headers/16/crypto/crypto_scrypt.h +0 -87
  469. package/src/headers/16/crypto/crypto_sig.h +0 -167
  470. package/src/headers/16/crypto/crypto_spkac.h +0 -20
  471. package/src/headers/16/crypto/crypto_timing.h +0 -20
  472. package/src/headers/16/crypto/crypto_x509.h +0 -141
  473. package/src/headers/16/env.h +0 -1629
  474. package/src/headers/16/histogram.h +0 -216
  475. package/src/headers/16/js_native_api.h +0 -561
  476. package/src/headers/16/js_native_api_v8.h +0 -451
  477. package/src/headers/16/node.d +0 -315
  478. package/src/headers/16/node.stp +0 -146
  479. package/src/headers/16/node_api.h +0 -275
  480. package/src/headers/16/node_api_internals.h +0 -30
  481. package/src/headers/16/node_binding.h +0 -99
  482. package/src/headers/16/node_buffer.h +0 -92
  483. package/src/headers/16/node_constants.h +0 -84
  484. package/src/headers/16/node_context_data.h +0 -44
  485. package/src/headers/16/node_contextify.h +0 -196
  486. package/src/headers/16/node_dtrace.h +0 -86
  487. package/src/headers/16/node_external_reference.h +0 -129
  488. package/src/headers/16/node_main_instance.h +0 -103
  489. package/src/headers/16/node_native_module.h +0 -101
  490. package/src/headers/16/node_native_module_env.h +0 -68
  491. package/src/headers/16/node_platform.h +0 -192
  492. package/src/headers/16/node_process.h +0 -43
  493. package/src/headers/16/node_provider.d +0 -80
  494. package/src/headers/16/node_snapshotable.h +0 -137
  495. package/src/headers/16/node_union_bytes.h +0 -103
  496. package/src/headers/16/node_url.h +0 -205
  497. package/src/headers/16/node_v8.h +0 -41
  498. package/src/headers/16/node_v8_platform-inl.h +0 -194
  499. package/src/headers/16/node_wasi.h +0 -108
  500. package/src/headers/16/node_watchdog.h +0 -152
  501. package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
  502. package/src/headers/16/node_win32_etw_provider.h +0 -99
  503. package/src/headers/16/spawn_sync.h +0 -242
  504. package/src/headers/16/string_decoder-inl.h +0 -37
  505. package/src/headers/16/string_search.h +0 -638
  506. package/src/headers/16/threadpoolwork-inl.h +0 -57
  507. package/src/headers/16/tracing/node_trace_buffer.h +0 -83
  508. package/src/headers/16/tracing/node_trace_writer.h +0 -75
  509. package/src/headers/16/tracing/trace_event.h +0 -720
  510. package/src/headers/16/tracing/traced_value.h +0 -70
  511. package/src/headers/16/v8abbr.h +0 -123
  512. package/src/headers/16/v8ustack.d +0 -695
  513. package/src/headers/18/aliased_buffer.h +0 -315
  514. package/src/headers/18/aliased_struct-inl.h +0 -54
  515. package/src/headers/18/aliased_struct.h +0 -63
  516. package/src/headers/18/base64-inl.h +0 -189
  517. package/src/headers/18/base64.h +0 -69
  518. package/src/headers/18/connect_wrap.h +0 -26
  519. package/src/headers/18/connection_wrap.h +0 -30
  520. package/src/headers/18/crypto/crypto_aes.h +0 -89
  521. package/src/headers/18/crypto/crypto_bio.h +0 -194
  522. package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
  523. package/src/headers/18/crypto/crypto_common.h +0 -151
  524. package/src/headers/18/crypto/crypto_groups.h +0 -415
  525. package/src/headers/18/crypto/crypto_x509.h +0 -143
  526. package/src/headers/18/debug_utils-inl.h +0 -223
  527. package/src/headers/18/diagnosticfilename-inl.h +0 -33
  528. package/src/headers/18/env-inl.h +0 -1308
  529. package/src/headers/18/env.h +0 -1667
  530. package/src/headers/18/inspector_io.h +0 -78
  531. package/src/headers/18/inspector_socket.h +0 -60
  532. package/src/headers/18/inspector_socket_server.h +0 -110
  533. package/src/headers/18/js_stream.h +0 -52
  534. package/src/headers/18/memory_tracker.h +0 -284
  535. package/src/headers/18/module_wrap.h +0 -116
  536. package/src/headers/18/node_binding.h +0 -99
  537. package/src/headers/18/node_context_data.h +0 -44
  538. package/src/headers/18/node_contextify.h +0 -196
  539. package/src/headers/18/node_dir.h +0 -52
  540. package/src/headers/18/node_dtrace.h +0 -86
  541. package/src/headers/18/node_http2_state.h +0 -149
  542. package/src/headers/18/node_mem-inl.h +0 -112
  543. package/src/headers/18/node_native_module.h +0 -109
  544. package/src/headers/18/node_native_module_env.h +0 -71
  545. package/src/headers/18/node_object_wrap.h +0 -132
  546. package/src/headers/18/node_snapshot_builder.h +0 -43
  547. package/src/headers/18/node_snapshotable.h +0 -130
  548. package/src/headers/18/node_union_bytes.h +0 -103
  549. package/src/headers/18/node_url.h +0 -205
  550. package/src/headers/18/node_v8.h +0 -41
  551. package/src/headers/18/node_wasi.h +0 -108
  552. package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
  553. package/src/headers/18/node_win32_etw_provider.h +0 -99
  554. package/src/headers/18/string_search.h +0 -638
  555. package/src/headers/18/tracing/node_trace_buffer.h +0 -83
  556. package/src/headers/18/tracing/node_trace_writer.h +0 -75
  557. package/src/headers/18/tracing/trace_event_common.h +0 -1109
  558. package/src/headers/18/tracing/traced_value.h +0 -70
  559. package/src/headers/18/v8abbr.h +0 -123
  560. /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
  561. /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
  562. /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
  563. /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
  564. /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
  565. /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
  566. /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
  567. /package/src/headers/{14 → 22}/inspector_io.h +0 -0
  568. /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
  569. /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
  570. /package/src/headers/{14 → 22}/js_stream.h +0 -0
  571. /package/src/headers/{14 → 22}/node_dir.h +0 -0
  572. /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
  573. /package/src/headers/{16 → 22}/node_mem.h +0 -0
  574. /package/src/headers/{16 → 22}/node_mutex.h +0 -0
  575. /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
  576. /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
  577. /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
  578. /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
  579. /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
  580. /package/src/headers/{18 → 22}/req_wrap.h +0 -0
  581. /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
  582. /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
  583. /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
  584. /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
  585. /package/src/headers/{18 → 22}/tty_wrap.h +0 -0
  586. /package/src/headers/{16 → 24}/aliased_struct-inl.h +0 -0
  587. /package/src/headers/{16 → 24}/aliased_struct.h +0 -0
  588. /package/src/headers/{18 → 24}/callback_queue-inl.h +0 -0
  589. /package/src/headers/{16 → 24}/connect_wrap.h +0 -0
  590. /package/src/headers/{16 → 24}/connection_wrap.h +0 -0
  591. /package/src/headers/{18 → 24}/crypto/crypto_spkac.h +0 -0
  592. /package/src/headers/{18 → 24}/crypto/crypto_timing.h +0 -0
  593. /package/src/headers/{16 → 24}/diagnosticfilename-inl.h +0 -0
  594. /package/src/headers/{16 → 24}/inspector_io.h +0 -0
  595. /package/src/headers/{16 → 24}/inspector_socket.h +0 -0
  596. /package/src/headers/{16 → 24}/inspector_socket_server.h +0 -0
  597. /package/src/headers/{16 → 24}/js_stream.h +0 -0
  598. /package/src/headers/{16 → 24}/node_dir.h +0 -0
  599. /package/src/headers/{18 → 24}/node_mem.h +0 -0
  600. /package/src/headers/{18 → 24}/node_mutex.h +0 -0
  601. /package/src/headers/{16 → 24}/node_object_wrap.h +0 -0
  602. /package/src/headers/{18 → 24}/node_process-inl.h +0 -0
  603. /package/src/headers/{14/tracing → 24}/node_trace_buffer.h +0 -0
  604. /package/src/headers/{14/tracing → 24}/node_trace_writer.h +0 -0
  605. /package/src/headers/{18 → 24}/pipe_wrap.h +0 -0
  606. /package/src/headers/{16/tracing → 24}/trace_event_common.h +0 -0
@@ -0,0 +1,81 @@
1
+ #pragma once
2
+
3
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
4
+ #if HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC
5
+
6
+ #include <async_wrap.h>
7
+ #include <base_object.h>
8
+ #include <env.h>
9
+ #include <stream_base.h>
10
+ #include <deque>
11
+
12
+ namespace node::quic {
13
+
14
+ // The LogStream is a utility that the QUIC impl uses to publish both QLog
15
+ // and Keylog diagnostic data (one instance for each).
16
+ class LogStream : public AsyncWrap, public StreamBase {
17
+ public:
18
+ static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
19
+ Environment* env);
20
+
21
+ static BaseObjectPtr<LogStream> Create(Environment* env);
22
+
23
+ LogStream(Environment* env, v8::Local<v8::Object> obj);
24
+
25
+ enum class EmitOption {
26
+ NONE,
27
+ FIN,
28
+ };
29
+
30
+ void Emit(const uint8_t* data,
31
+ size_t len,
32
+ EmitOption option = EmitOption::NONE);
33
+
34
+ void Emit(const std::string_view line, EmitOption option = EmitOption::NONE);
35
+
36
+ void End();
37
+
38
+ int ReadStart() override;
39
+
40
+ int ReadStop() override;
41
+
42
+ // We do not use either of these.
43
+ int DoShutdown(ShutdownWrap* req_wrap) override;
44
+ int DoWrite(WriteWrap* w,
45
+ uv_buf_t* bufs,
46
+ size_t count,
47
+ uv_stream_t* send_handle) override;
48
+
49
+ bool IsAlive() override;
50
+ bool IsClosing() override;
51
+ AsyncWrap* GetAsyncWrap() override;
52
+
53
+ void MemoryInfo(MemoryTracker* tracker) const override;
54
+ SET_MEMORY_INFO_NAME(LogStream)
55
+ SET_SELF_SIZE(LogStream)
56
+
57
+ private:
58
+ struct Chunk {
59
+ // len will be <= buf.len
60
+ size_t len;
61
+ uv_buf_t buf;
62
+ };
63
+ size_t total_ = 0;
64
+ bool fin_seen_ = false;
65
+ bool ended_ = false;
66
+ bool reading_ = false;
67
+ std::deque<Chunk> buffer_;
68
+
69
+ // The value here is fairly arbitrary. Once we get everything
70
+ // fully implemented and start working with this, we might
71
+ // tune this number further.
72
+ static constexpr size_t kMaxLogStreamBuffer = 1024 * 10;
73
+
74
+ // The LogStream buffer enforces a maximum size of kMaxLogStreamBuffer.
75
+ void ensure_space(size_t amt);
76
+ };
77
+
78
+ } // namespace node::quic
79
+
80
+ #endif // HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC
81
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
@@ -0,0 +1,116 @@
1
+ #ifndef SRC_INSPECTOR_MAIN_THREAD_INTERFACE_H_
2
+ #define SRC_INSPECTOR_MAIN_THREAD_INTERFACE_H_
3
+
4
+ #if !HAVE_INSPECTOR
5
+ #error("This header can only be used when inspector is enabled")
6
+ #endif
7
+
8
+ #include "inspector_agent.h"
9
+ #include "node_mutex.h"
10
+
11
+ #include <atomic>
12
+ #include <deque>
13
+ #include <memory>
14
+ #include <unordered_map>
15
+
16
+ namespace v8_inspector {
17
+ class StringBuffer;
18
+ class StringView;
19
+ } // namespace v8_inspector
20
+
21
+ namespace node {
22
+ namespace inspector {
23
+ class MainThreadInterface;
24
+
25
+ class Request {
26
+ public:
27
+ virtual void Call(MainThreadInterface*) = 0;
28
+ virtual ~Request() = default;
29
+ };
30
+
31
+ class Deletable {
32
+ public:
33
+ virtual ~Deletable() = default;
34
+ };
35
+
36
+ std::unique_ptr<v8_inspector::StringBuffer> Utf8ToStringView(
37
+ const std::string_view message);
38
+
39
+ using MessageQueue = std::deque<std::unique_ptr<Request>>;
40
+
41
+ class MainThreadHandle : public std::enable_shared_from_this<MainThreadHandle> {
42
+ public:
43
+ explicit MainThreadHandle(MainThreadInterface* main_thread)
44
+ : main_thread_(main_thread) {
45
+ }
46
+ ~MainThreadHandle() {
47
+ Mutex::ScopedLock scoped_lock(block_lock_);
48
+ CHECK_NULL(main_thread_); // main_thread_ should have called Reset
49
+ }
50
+ std::unique_ptr<InspectorSession> Connect(
51
+ std::unique_ptr<InspectorSessionDelegate> delegate,
52
+ bool prevent_shutdown);
53
+ int newObjectId() {
54
+ return ++next_object_id_;
55
+ }
56
+ bool Post(std::unique_ptr<Request> request);
57
+ std::unique_ptr<InspectorSessionDelegate> MakeDelegateThreadSafe(
58
+ std::unique_ptr<InspectorSessionDelegate> delegate);
59
+ bool Expired();
60
+ void SetTargetSessionId(int target_session_id) {
61
+ target_session_id_ = target_session_id;
62
+ }
63
+ std::optional<int> GetTargetSessionId() { return target_session_id_; }
64
+
65
+ private:
66
+ void Reset();
67
+
68
+ MainThreadInterface* main_thread_;
69
+ Mutex block_lock_;
70
+ int next_session_id_ = 0;
71
+ std::atomic_int next_object_id_ = {1};
72
+ std::optional<int> target_session_id_ = std::nullopt;
73
+
74
+ friend class MainThreadInterface;
75
+ };
76
+
77
+ class MainThreadInterface :
78
+ public std::enable_shared_from_this<MainThreadInterface> {
79
+ public:
80
+ explicit MainThreadInterface(Agent* agent);
81
+ ~MainThreadInterface();
82
+
83
+ void DispatchMessages();
84
+ void Post(std::unique_ptr<Request> request);
85
+ bool WaitForFrontendEvent();
86
+ void StopWaitingForFrontendEvent();
87
+ std::shared_ptr<MainThreadHandle> GetHandle();
88
+ Agent* inspector_agent() {
89
+ return agent_;
90
+ }
91
+ void AddObject(int handle, std::unique_ptr<Deletable> object);
92
+ Deletable* GetObject(int id);
93
+ Deletable* GetObjectIfExists(int id);
94
+ void RemoveObject(int handle);
95
+
96
+ private:
97
+ MessageQueue requests_;
98
+ Mutex requests_lock_; // requests_ live across threads
99
+ // This queue is to maintain the order of the messages for the cases
100
+ // when we reenter the DispatchMessages function.
101
+ MessageQueue dispatching_message_queue_;
102
+ bool dispatching_messages_ = false;
103
+ // This flag indicates an internal request to exit the loop in
104
+ // WaitForFrontendEvent(). It's set to true by calling
105
+ // StopWaitingForFrontendEvent().
106
+ bool stop_waiting_for_frontend_event_requested_ = false;
107
+ ConditionVariable incoming_message_cond_;
108
+ // Used from any thread
109
+ Agent* const agent_;
110
+ std::shared_ptr<MainThreadHandle> handle_;
111
+ std::unordered_map<int, std::unique_ptr<Deletable>> managed_objects_;
112
+ };
113
+
114
+ } // namespace inspector
115
+ } // namespace node
116
+ #endif // SRC_INSPECTOR_MAIN_THREAD_INTERFACE_H_
@@ -3,7 +3,9 @@
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
+ #include "cppgc_helpers.h"
6
7
  #include "memory_tracker.h"
8
+ #include "util-inl.h"
7
9
 
8
10
  namespace node {
9
11
 
@@ -27,10 +29,28 @@ class MemoryRetainerNode : public v8::EmbedderGraph::Node {
27
29
  CHECK_NOT_NULL(retainer_);
28
30
  v8::HandleScope handle_scope(tracker->isolate());
29
31
  v8::Local<v8::Object> obj = retainer_->WrappedObject();
30
- if (!obj.IsEmpty()) wrapper_node_ = tracker->graph()->V8Node(obj);
32
+ if (!obj.IsEmpty())
33
+ wrapper_node_ = tracker->graph()->V8Node(obj.As<v8::Value>());
31
34
 
32
35
  name_ = retainer_->MemoryInfoName();
33
36
  size_ = retainer_->SelfSize();
37
+ detachedness_ = retainer_->GetDetachedness();
38
+ }
39
+
40
+ inline MemoryRetainerNode(MemoryTracker* tracker, const CppgcMixin* mixin)
41
+ : retainer_(mixin) {
42
+ // In this case, the MemoryRetainerNode is merely a wrapper
43
+ // to be used in the NodeMap and stack. The actual node being using to add
44
+ // edges is always the merged wrapper node of the cppgc-managed wrapper.
45
+ CHECK_NOT_NULL(retainer_);
46
+ v8::Isolate* isolate = tracker->isolate();
47
+ v8::HandleScope handle_scope(isolate);
48
+ v8::Local<v8::Object> obj = mixin->object(isolate);
49
+ wrapper_node_ = tracker->graph()->V8Node(obj.As<v8::Value>());
50
+
51
+ name_ = retainer_->MemoryInfoName();
52
+ size_ = 0;
53
+ detachedness_ = retainer_->GetDetachedness();
34
54
  }
35
55
 
36
56
  inline MemoryRetainerNode(MemoryTracker* tracker,
@@ -43,7 +63,7 @@ class MemoryRetainerNode : public v8::EmbedderGraph::Node {
43
63
  is_root_node_ = is_root_node;
44
64
  }
45
65
 
46
- const char* Name() override { return name_.c_str(); }
66
+ const char* Name() override { return name_; }
47
67
  const char* NamePrefix() override { return "Node /"; }
48
68
  size_t SizeInBytes() override { return size_; }
49
69
  // TODO(addaleax): Merging this with the "official" WrapperNode() method
@@ -58,6 +78,14 @@ class MemoryRetainerNode : public v8::EmbedderGraph::Node {
58
78
  return is_root_node_;
59
79
  }
60
80
 
81
+ bool IsCppgcWrapper() const {
82
+ return retainer_ != nullptr && retainer_->IsCppgcWrapper();
83
+ }
84
+
85
+ v8::EmbedderGraph::Node::Detachedness GetDetachedness() override {
86
+ return detachedness_;
87
+ }
88
+
61
89
  private:
62
90
  friend class MemoryTracker;
63
91
 
@@ -71,8 +99,10 @@ class MemoryRetainerNode : public v8::EmbedderGraph::Node {
71
99
 
72
100
  // Otherwise (retainer == nullptr), we set these fields in an ad-hoc way
73
101
  bool is_root_node_ = false;
74
- std::string name_;
102
+ const char* name_;
75
103
  size_t size_ = 0;
104
+ v8::EmbedderGraph::Node::Detachedness detachedness_ =
105
+ v8::EmbedderGraph::Node::Detachedness::kUnknown;
76
106
  };
77
107
 
78
108
  void MemoryTracker::TrackFieldWithSize(const char* edge_name,
@@ -86,7 +116,7 @@ void MemoryTracker::TrackInlineFieldWithSize(const char* edge_name,
86
116
  const char* node_name) {
87
117
  if (size > 0) AddNode(GetNodeName(node_name, edge_name), size, edge_name);
88
118
  CHECK(CurrentNode());
89
- CurrentNode()->size_ -= size;
119
+ AdjustCurrentNodeSize(-static_cast<int>(size));
90
120
  }
91
121
 
92
122
  void MemoryTracker::TrackField(const char* edge_name,
@@ -147,7 +177,7 @@ void MemoryTracker::TrackField(const char* edge_name,
147
177
  // Fall back to edge name if node names are not provided
148
178
  if (CurrentNode() != nullptr && subtract_from_self) {
149
179
  // Shift the self size of this container out to a separate node
150
- CurrentNode()->size_ -= sizeof(T);
180
+ AdjustCurrentNodeSize(-static_cast<int>(sizeof(T)));
151
181
  }
152
182
  PushNode(GetNodeName(node_name, edge_name), sizeof(T), edge_name);
153
183
  for (Iterator it = value.begin(); it != value.end(); ++it) {
@@ -178,7 +208,7 @@ void MemoryTracker::TrackField(const char* edge_name,
178
208
  const T& value,
179
209
  const char* node_name) {
180
210
  // For numbers, creating new nodes is not worth the overhead.
181
- CurrentNode()->size_ += sizeof(T);
211
+ AdjustCurrentNodeSize(static_cast<int>(sizeof(T)));
182
212
  }
183
213
 
184
214
  template <typename T, typename U>
@@ -223,7 +253,9 @@ void MemoryTracker::TrackField(const char* edge_name,
223
253
  const v8::Local<T>& value,
224
254
  const char* node_name) {
225
255
  if (!value.IsEmpty())
226
- graph_->AddEdge(CurrentNode(), graph_->V8Node(value), edge_name);
256
+ graph_->AddEdge(CurrentNode(),
257
+ graph_->V8Node(value.template As<v8::Value>()),
258
+ edge_name);
227
259
  }
228
260
 
229
261
  template <typename T>
@@ -263,11 +295,20 @@ void MemoryTracker::TrackInlineField(const char* name,
263
295
  TrackInlineFieldWithSize(name, sizeof(value), "uv_async_t");
264
296
  }
265
297
 
266
- template <class NativeT, class V8T>
267
- void MemoryTracker::TrackField(const char* name,
268
- const AliasedBufferBase<NativeT, V8T>& value,
269
- const char* node_name) {
270
- TrackField(name, value.GetJSArray(), "AliasedBuffer");
298
+ void MemoryTracker::Track(const CppgcMixin* retainer, const char* edge_name) {
299
+ v8::HandleScope handle_scope(isolate_);
300
+ auto it = seen_.find(retainer);
301
+ if (it != seen_.end()) {
302
+ if (CurrentNode() != nullptr) {
303
+ graph_->AddEdge(CurrentNode(), it->second, edge_name);
304
+ }
305
+ return; // It has already been tracked, no need to call MemoryInfo again
306
+ }
307
+ MemoryRetainerNode* n = PushNode(retainer, edge_name);
308
+ retainer->MemoryInfo(this);
309
+ CHECK_EQ(CurrentNode(), n->JSWrapperNode());
310
+ // This is a dummy MemoryRetainerNode. The real graph node is wrapper_node_.
311
+ PopNode();
271
312
  }
272
313
 
273
314
  void MemoryTracker::Track(const MemoryRetainer* retainer,
@@ -291,12 +332,54 @@ void MemoryTracker::TrackInlineField(const MemoryRetainer* retainer,
291
332
  const char* edge_name) {
292
333
  Track(retainer, edge_name);
293
334
  CHECK(CurrentNode());
294
- CurrentNode()->size_ -= retainer->SelfSize();
335
+ AdjustCurrentNodeSize(-(static_cast<int>(retainer->SelfSize())));
295
336
  }
296
337
 
297
- MemoryRetainerNode* MemoryTracker::CurrentNode() const {
338
+ template <typename T>
339
+ inline void MemoryTracker::TraitTrack(const T& retainer,
340
+ const char* edge_name) {
341
+ MemoryRetainerNode* n =
342
+ PushNode(MemoryRetainerTraits<T>::MemoryInfoName(retainer),
343
+ MemoryRetainerTraits<T>::SelfSize(retainer),
344
+ edge_name);
345
+ MemoryRetainerTraits<T>::MemoryInfo(this, retainer);
346
+ CHECK_EQ(CurrentNode(), n);
347
+ CHECK_NE(n->size_, 0);
348
+ PopNode();
349
+ }
350
+
351
+ template <typename T>
352
+ inline void MemoryTracker::TraitTrackInline(const T& retainer,
353
+ const char* edge_name) {
354
+ TraitTrack(retainer, edge_name);
355
+ CHECK(CurrentNode());
356
+ AdjustCurrentNodeSize(
357
+ -(static_cast<int>(MemoryRetainerTraits<T>::SelfSize(retainer))));
358
+ }
359
+
360
+ v8::EmbedderGraph::Node* MemoryTracker::CurrentNode() const {
298
361
  if (node_stack_.empty()) return nullptr;
299
- return node_stack_.top();
362
+ MemoryRetainerNode* n = node_stack_.top();
363
+ if (n->IsCppgcWrapper()) {
364
+ return n->JSWrapperNode();
365
+ }
366
+ return n;
367
+ }
368
+
369
+ MemoryRetainerNode* MemoryTracker::AddNode(const CppgcMixin* retainer,
370
+ const char* edge_name) {
371
+ auto it = seen_.find(retainer);
372
+ if (it != seen_.end()) {
373
+ return it->second;
374
+ }
375
+
376
+ MemoryRetainerNode* n = new MemoryRetainerNode(this, retainer);
377
+ seen_[retainer] = n;
378
+ if (CurrentNode() != nullptr) {
379
+ graph_->AddEdge(CurrentNode(), n->JSWrapperNode(), edge_name);
380
+ }
381
+
382
+ return n;
300
383
  }
301
384
 
302
385
  MemoryRetainerNode* MemoryTracker::AddNode(const MemoryRetainer* retainer,
@@ -312,8 +395,8 @@ MemoryRetainerNode* MemoryTracker::AddNode(const MemoryRetainer* retainer,
312
395
  if (CurrentNode() != nullptr) graph_->AddEdge(CurrentNode(), n, edge_name);
313
396
 
314
397
  if (n->JSWrapperNode() != nullptr) {
315
- graph_->AddEdge(n, n->JSWrapperNode(), "wrapped");
316
- graph_->AddEdge(n->JSWrapperNode(), n, "wrapper");
398
+ graph_->AddEdge(n, n->JSWrapperNode(), "native_to_javascript");
399
+ graph_->AddEdge(n->JSWrapperNode(), n, "javascript_to_native");
317
400
  }
318
401
 
319
402
  return n;
@@ -330,6 +413,13 @@ MemoryRetainerNode* MemoryTracker::AddNode(const char* node_name,
330
413
  return n;
331
414
  }
332
415
 
416
+ MemoryRetainerNode* MemoryTracker::PushNode(const CppgcMixin* retainer,
417
+ const char* edge_name) {
418
+ MemoryRetainerNode* n = AddNode(retainer, edge_name);
419
+ node_stack_.push(n);
420
+ return n;
421
+ }
422
+
333
423
  MemoryRetainerNode* MemoryTracker::PushNode(const MemoryRetainer* retainer,
334
424
  const char* edge_name) {
335
425
  MemoryRetainerNode* n = AddNode(retainer, edge_name);
@@ -349,6 +439,14 @@ void MemoryTracker::PopNode() {
349
439
  node_stack_.pop();
350
440
  }
351
441
 
442
+ void MemoryTracker::AdjustCurrentNodeSize(int diff) {
443
+ if (node_stack_.empty()) return;
444
+ MemoryRetainerNode* n = node_stack_.top();
445
+ if (!n->IsCppgcWrapper()) {
446
+ n->size_ = static_cast<size_t>(static_cast<int>(n->size_) + diff);
447
+ }
448
+ }
449
+
352
450
  } // namespace node
353
451
 
354
452
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
@@ -2,7 +2,6 @@
2
2
 
3
3
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
4
4
 
5
- #include "aliased_buffer.h"
6
5
  #include "v8-profiler.h"
7
6
 
8
7
  #include <uv.h>
@@ -13,11 +12,20 @@
13
12
  #include <string>
14
13
  #include <unordered_map>
15
14
 
15
+ namespace v8 {
16
+ class BackingStore;
17
+ }
18
+
16
19
  namespace node {
17
20
 
21
+ class CppgcMixin;
22
+
23
+ template <typename T>
24
+ struct MallocedBuffer;
25
+
18
26
  // Set the node name of a MemoryRetainer to klass
19
27
  #define SET_MEMORY_INFO_NAME(Klass) \
20
- inline std::string MemoryInfoName() const override { return #Klass; }
28
+ inline const char* MemoryInfoName() const override { return #Klass; }
21
29
 
22
30
  // Set the self size of a MemoryRetainer to the stack-allocated size of a
23
31
  // certain class
@@ -68,7 +76,7 @@ class CleanupHookCallback;
68
76
  * }
69
77
  *
70
78
  * // Or use SET_MEMORY_INFO_NAME(ExampleRetainer)
71
- * std::string MemoryInfoName() const override {
79
+ * const char* MemoryInfoName() const override {
72
80
  * return "ExampleRetainer";
73
81
  * }
74
82
  *
@@ -119,7 +127,7 @@ class MemoryRetainer {
119
127
  // where all the edges start from the node of the current retainer,
120
128
  // and point to the nodes as specified by tracker->Track* calls.
121
129
  virtual void MemoryInfo(MemoryTracker* tracker) const = 0;
122
- virtual std::string MemoryInfoName() const = 0;
130
+ virtual const char* MemoryInfoName() const = 0;
123
131
  virtual size_t SelfSize() const = 0;
124
132
 
125
133
  virtual v8::Local<v8::Object> WrappedObject() const {
@@ -127,8 +135,39 @@ class MemoryRetainer {
127
135
  }
128
136
 
129
137
  virtual bool IsRootNode() const { return false; }
138
+ virtual bool IsCppgcWrapper() const { return false; }
139
+ virtual v8::EmbedderGraph::Node::Detachedness GetDetachedness() const {
140
+ return v8::EmbedderGraph::Node::Detachedness::kUnknown;
141
+ }
130
142
  };
131
143
 
144
+ /**
145
+ * MemoryRetainerTraits allows defining a custom memory info for a
146
+ * class that can not be modified to implement the MemoryRetainer interface.
147
+ *
148
+ * Example:
149
+ *
150
+ * template <>
151
+ * struct MemoryRetainerTraits<ExampleRetainer> {
152
+ * static void MemoryInfo(MemoryTracker* tracker,
153
+ * const ExampleRetainer& value) {
154
+ * tracker->TrackField("another_retainer", value.another_retainer_);
155
+ * }
156
+ * static const char* MemoryInfoName(const ExampleRetainer& value) {
157
+ * return "ExampleRetainer";
158
+ * }
159
+ * static size_t SelfSize(const ExampleRetainer& value) {
160
+ * return sizeof(value);
161
+ * }
162
+ * };
163
+ *
164
+ * This creates the following graph:
165
+ * Node / ExampleRetainer
166
+ * |> another_retainer :: Node / AnotherRetainerClass
167
+ */
168
+ template <typename T, typename = void>
169
+ struct MemoryRetainerTraits {};
170
+
132
171
  class MemoryTracker {
133
172
  public:
134
173
  // Used to specify node name and size explicitly
@@ -228,13 +267,11 @@ class MemoryTracker {
228
267
  inline void TrackInlineField(const char* edge_name,
229
268
  const uv_async_t& value,
230
269
  const char* node_name = nullptr);
231
- template <class NativeT, class V8T>
232
- inline void TrackField(const char* edge_name,
233
- const AliasedBufferBase<NativeT, V8T>& value,
234
- const char* node_name = nullptr);
235
270
 
236
271
  // Put a memory container into the graph, create an edge from
237
272
  // the current node if there is one on the stack.
273
+ inline void Track(const CppgcMixin* retainer,
274
+ const char* edge_name = nullptr);
238
275
  inline void Track(const MemoryRetainer* retainer,
239
276
  const char* edge_name = nullptr);
240
277
 
@@ -249,6 +286,13 @@ class MemoryTracker {
249
286
  inline void TrackInlineField(const MemoryRetainer* retainer,
250
287
  const char* edge_name = nullptr);
251
288
 
289
+ // MemoryRetainerTraits implementation helpers.
290
+ template <typename T>
291
+ inline void TraitTrack(const T& retainer, const char* edge_name = nullptr);
292
+ template <typename T>
293
+ inline void TraitTrackInline(const T& retainer,
294
+ const char* edge_name = nullptr);
295
+
252
296
  inline v8::EmbedderGraph* graph() { return graph_; }
253
297
  inline v8::Isolate* isolate() { return isolate_; }
254
298
 
@@ -260,9 +304,14 @@ class MemoryTracker {
260
304
  typedef std::unordered_map<const MemoryRetainer*, MemoryRetainerNode*>
261
305
  NodeMap;
262
306
 
263
- inline MemoryRetainerNode* CurrentNode() const;
307
+ inline void AdjustCurrentNodeSize(int diff);
308
+ inline v8::EmbedderGraph::Node* CurrentNode() const;
309
+ inline MemoryRetainerNode* AddNode(const CppgcMixin* retainer,
310
+ const char* edge_name = nullptr);
264
311
  inline MemoryRetainerNode* AddNode(const MemoryRetainer* retainer,
265
312
  const char* edge_name = nullptr);
313
+ inline MemoryRetainerNode* PushNode(const CppgcMixin* retainer,
314
+ const char* edge_name = nullptr);
266
315
  inline MemoryRetainerNode* PushNode(const MemoryRetainer* retainer,
267
316
  const char* edge_name = nullptr);
268
317
  inline MemoryRetainerNode* AddNode(const char* node_name,