@kungfu-tech/libnode-win32-x64 22.22.3-kf.0 → 22.22.3-kf.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/dist/node/include/acorn_version.h +6 -0
  2. package/dist/node/include/aliased_buffer-inl.h +244 -0
  3. package/dist/node/include/aliased_buffer.h +206 -0
  4. package/dist/node/include/aliased_struct-inl.h +54 -0
  5. package/dist/node/include/aliased_struct.h +63 -0
  6. package/dist/node/include/amaro_version.h +6 -0
  7. package/dist/node/include/async_context_frame.h +33 -0
  8. package/dist/node/include/async_wrap-inl.h +96 -0
  9. package/dist/node/include/async_wrap.h +243 -0
  10. package/dist/node/include/base_object-inl.h +335 -0
  11. package/dist/node/include/base_object.h +342 -0
  12. package/dist/node/include/base_object_types.h +74 -0
  13. package/dist/node/include/blob_serializer_deserializer-inl.h +385 -0
  14. package/dist/node/include/blob_serializer_deserializer.h +132 -0
  15. package/dist/node/include/callback_queue-inl.h +97 -0
  16. package/dist/node/include/callback_queue.h +79 -0
  17. package/dist/node/include/cares_wrap.h +447 -0
  18. package/dist/node/include/cjs_module_lexer_version.h +6 -0
  19. package/dist/node/include/cleanup_queue-inl.h +36 -0
  20. package/dist/node/include/cleanup_queue.h +79 -0
  21. package/dist/node/include/compile_cache.h +104 -0
  22. package/dist/node/include/connect_wrap.h +26 -0
  23. package/dist/node/include/connection_wrap.h +30 -0
  24. package/dist/node/include/cppgc/allocation.h +310 -0
  25. package/dist/node/include/cppgc/common.h +28 -0
  26. package/dist/node/include/cppgc/cross-thread-persistent.h +466 -0
  27. package/dist/node/include/cppgc/custom-space.h +97 -0
  28. package/dist/node/include/cppgc/default-platform.h +67 -0
  29. package/dist/node/include/cppgc/ephemeron-pair.h +30 -0
  30. package/dist/node/include/cppgc/explicit-management.h +100 -0
  31. package/dist/node/include/cppgc/garbage-collected.h +106 -0
  32. package/dist/node/include/cppgc/heap-consistency.h +309 -0
  33. package/dist/node/include/cppgc/heap-handle.h +48 -0
  34. package/dist/node/include/cppgc/heap-state.h +82 -0
  35. package/dist/node/include/cppgc/heap-statistics.h +120 -0
  36. package/dist/node/include/cppgc/heap.h +202 -0
  37. package/dist/node/include/cppgc/internal/api-constants.h +87 -0
  38. package/dist/node/include/cppgc/internal/atomic-entry-flag.h +48 -0
  39. package/dist/node/include/cppgc/internal/base-page-handle.h +45 -0
  40. package/dist/node/include/cppgc/internal/caged-heap-local-data.h +121 -0
  41. package/dist/node/include/cppgc/internal/caged-heap.h +68 -0
  42. package/dist/node/include/cppgc/internal/compiler-specific.h +38 -0
  43. package/dist/node/include/cppgc/internal/finalizer-trait.h +93 -0
  44. package/dist/node/include/cppgc/internal/gc-info.h +148 -0
  45. package/dist/node/include/cppgc/internal/logging.h +50 -0
  46. package/dist/node/include/cppgc/internal/member-storage.h +256 -0
  47. package/dist/node/include/cppgc/internal/name-trait.h +137 -0
  48. package/dist/node/include/cppgc/internal/persistent-node.h +214 -0
  49. package/dist/node/include/cppgc/internal/pointer-policies.h +243 -0
  50. package/dist/node/include/cppgc/internal/write-barrier.h +487 -0
  51. package/dist/node/include/cppgc/liveness-broker.h +78 -0
  52. package/dist/node/include/cppgc/macros.h +35 -0
  53. package/dist/node/include/cppgc/member.h +629 -0
  54. package/dist/node/include/cppgc/name-provider.h +65 -0
  55. package/dist/node/include/cppgc/object-size-trait.h +58 -0
  56. package/dist/node/include/cppgc/persistent.h +377 -0
  57. package/dist/node/include/cppgc/platform.h +163 -0
  58. package/dist/node/include/cppgc/prefinalizer.h +75 -0
  59. package/dist/node/include/cppgc/process-heap-statistics.h +36 -0
  60. package/dist/node/include/cppgc/sentinel-pointer.h +39 -0
  61. package/dist/node/include/cppgc/source-location.h +16 -0
  62. package/dist/node/include/cppgc/testing.h +106 -0
  63. package/dist/node/include/cppgc/trace-trait.h +128 -0
  64. package/dist/node/include/cppgc/type-traits.h +271 -0
  65. package/dist/node/include/cppgc/visitor.h +504 -0
  66. package/dist/node/include/crypto/crypto_aes.h +88 -0
  67. package/dist/node/include/crypto/crypto_bio.h +193 -0
  68. package/dist/node/include/crypto/crypto_cipher.h +293 -0
  69. package/dist/node/include/crypto/crypto_clienthello-inl.h +90 -0
  70. package/dist/node/include/crypto/crypto_clienthello.h +131 -0
  71. package/dist/node/include/crypto/crypto_common.h +64 -0
  72. package/dist/node/include/crypto/crypto_context.h +171 -0
  73. package/dist/node/include/crypto/crypto_dh.h +126 -0
  74. package/dist/node/include/crypto/crypto_dsa.h +52 -0
  75. package/dist/node/include/crypto/crypto_ec.h +164 -0
  76. package/dist/node/include/crypto/crypto_hash.h +91 -0
  77. package/dist/node/include/crypto/crypto_hkdf.h +61 -0
  78. package/dist/node/include/crypto/crypto_hmac.h +92 -0
  79. package/dist/node/include/crypto/crypto_keygen.h +299 -0
  80. package/dist/node/include/crypto/crypto_keys.h +392 -0
  81. package/dist/node/include/crypto/crypto_pbkdf2.h +74 -0
  82. package/dist/node/include/crypto/crypto_random.h +124 -0
  83. package/dist/node/include/crypto/crypto_rsa.h +136 -0
  84. package/dist/node/include/crypto/crypto_scrypt.h +85 -0
  85. package/dist/node/include/crypto/crypto_sig.h +165 -0
  86. package/dist/node/include/crypto/crypto_spkac.h +21 -0
  87. package/dist/node/include/crypto/crypto_timing.h +20 -0
  88. package/dist/node/include/crypto/crypto_tls.h +305 -0
  89. package/dist/node/include/crypto/crypto_util.h +725 -0
  90. package/dist/node/include/crypto/crypto_x509.h +140 -0
  91. package/dist/node/include/dataqueue/queue.h +306 -0
  92. package/dist/node/include/debug_utils-inl.h +278 -0
  93. package/dist/node/include/debug_utils.h +196 -0
  94. package/dist/node/include/diagnosticfilename-inl.h +33 -0
  95. package/dist/node/include/embedded_data.h +17 -0
  96. package/dist/node/include/encoding_binding.h +61 -0
  97. package/dist/node/include/env-inl.h +984 -0
  98. package/dist/node/include/env.h +1287 -0
  99. package/dist/node/include/env_properties.h +540 -0
  100. package/dist/node/include/handle_wrap.h +123 -0
  101. package/dist/node/include/histogram-inl.h +107 -0
  102. package/dist/node/include/histogram.h +279 -0
  103. package/dist/node/include/inspector/io_agent.h +30 -0
  104. package/dist/node/include/inspector/main_thread_interface.h +116 -0
  105. package/dist/node/include/inspector/network_agent.h +94 -0
  106. package/dist/node/include/inspector/network_inspector.h +45 -0
  107. package/dist/node/include/inspector/network_requests_buffer.h +195 -0
  108. package/dist/node/include/inspector/network_resource_manager.h +29 -0
  109. package/dist/node/include/inspector/node_json.h +24 -0
  110. package/dist/node/include/inspector/node_string.h +101 -0
  111. package/dist/node/include/inspector/protocol_helper.h +27 -0
  112. package/dist/node/include/inspector/runtime_agent.h +41 -0
  113. package/dist/node/include/inspector/target_agent.h +75 -0
  114. package/dist/node/include/inspector/tracing_agent.h +43 -0
  115. package/dist/node/include/inspector/worker_agent.h +40 -0
  116. package/dist/node/include/inspector/worker_inspector.h +124 -0
  117. package/dist/node/include/inspector_agent.h +165 -0
  118. package/dist/node/include/inspector_io.h +78 -0
  119. package/dist/node/include/inspector_profiler.h +149 -0
  120. package/dist/node/include/inspector_socket.h +60 -0
  121. package/dist/node/include/inspector_socket_server.h +110 -0
  122. package/dist/node/include/js_native_api.h +607 -0
  123. package/dist/node/include/js_native_api_types.h +226 -0
  124. package/dist/node/include/js_native_api_v8.h +485 -0
  125. package/dist/node/include/js_native_api_v8_internals.h +45 -0
  126. package/dist/node/include/js_stream.h +52 -0
  127. package/dist/node/include/json_utils.h +172 -0
  128. package/dist/node/include/large_pages/node_large_page.h +34 -0
  129. package/dist/node/include/libplatform/libplatform-export.h +29 -0
  130. package/dist/node/include/libplatform/libplatform.h +112 -0
  131. package/dist/node/include/libplatform/v8-tracing.h +333 -0
  132. package/dist/node/include/memory_tracker-inl.h +359 -0
  133. package/dist/node/include/memory_tracker.h +289 -0
  134. package/dist/node/include/module_wrap.h +216 -0
  135. package/dist/node/include/node.h +1593 -0
  136. package/dist/node/include/node_api.h +265 -0
  137. package/dist/node/include/node_api_internals.h +48 -0
  138. package/dist/node/include/node_api_types.h +56 -0
  139. package/dist/node/include/node_binding.h +161 -0
  140. package/dist/node/include/node_blob.h +159 -0
  141. package/dist/node/include/node_bob-inl.h +36 -0
  142. package/dist/node/include/node_bob.h +107 -0
  143. package/dist/node/include/node_buffer.h +92 -0
  144. package/dist/node/include/node_builtins.h +220 -0
  145. package/dist/node/include/node_config_file.h +46 -0
  146. package/dist/node/include/node_constants.h +82 -0
  147. package/dist/node/include/node_context_data.h +168 -0
  148. package/dist/node/include/node_contextify.h +204 -0
  149. package/dist/node/include/node_crypto.h +56 -0
  150. package/dist/node/include/node_debug.h +30 -0
  151. package/dist/node/include/node_dir.h +52 -0
  152. package/dist/node/include/node_dotenv.h +45 -0
  153. package/dist/node/include/node_errors.h +380 -0
  154. package/dist/node/include/node_exit_code.h +54 -0
  155. package/dist/node/include/node_external_reference.h +165 -0
  156. package/dist/node/include/node_file-inl.h +406 -0
  157. package/dist/node/include/node_file.h +537 -0
  158. package/dist/node/include/node_http2.h +1177 -0
  159. package/dist/node/include/node_http2_state.h +159 -0
  160. package/dist/node/include/node_http_common-inl.h +202 -0
  161. package/dist/node/include/node_http_common.h +535 -0
  162. package/dist/node/include/node_i18n.h +132 -0
  163. package/dist/node/include/node_internals.h +483 -0
  164. package/dist/node/include/node_main_instance.h +67 -0
  165. package/dist/node/include/node_mem-inl.h +113 -0
  166. package/dist/node/include/node_mem.h +45 -0
  167. package/dist/node/include/node_messaging.h +389 -0
  168. package/dist/node/include/node_metadata.h +164 -0
  169. package/dist/node/include/node_modules.h +91 -0
  170. package/dist/node/include/node_mutex.h +323 -0
  171. package/dist/node/include/node_object_wrap.h +132 -0
  172. package/dist/node/include/node_options-inl.h +490 -0
  173. package/dist/node/include/node_options.h +615 -0
  174. package/dist/node/include/node_perf.h +166 -0
  175. package/dist/node/include/node_perf_common.h +102 -0
  176. package/dist/node/include/node_platform.h +238 -0
  177. package/dist/node/include/node_process-inl.h +26 -0
  178. package/dist/node/include/node_process.h +112 -0
  179. package/dist/node/include/node_realm-inl.h +151 -0
  180. package/dist/node/include/node_realm.h +183 -0
  181. package/dist/node/include/node_report.h +43 -0
  182. package/dist/node/include/node_revert.h +82 -0
  183. package/dist/node/include/node_root_certs.h +3520 -0
  184. package/dist/node/include/node_sea.h +74 -0
  185. package/dist/node/include/node_shadow_realm.h +46 -0
  186. package/dist/node/include/node_snapshot_builder.h +57 -0
  187. package/dist/node/include/node_snapshotable.h +174 -0
  188. package/dist/node/include/node_sockaddr-inl.h +257 -0
  189. package/dist/node/include/node_sockaddr.h +394 -0
  190. package/dist/node/include/node_sqlite.h +270 -0
  191. package/dist/node/include/node_stat_watcher.h +73 -0
  192. package/dist/node/include/node_task_runner.h +92 -0
  193. package/dist/node/include/node_threadsafe_cow-inl.h +54 -0
  194. package/dist/node/include/node_threadsafe_cow.h +105 -0
  195. package/dist/node/include/node_union_bytes.h +81 -0
  196. package/dist/node/include/node_url.h +96 -0
  197. package/dist/node/include/node_v8.h +77 -0
  198. package/dist/node/include/node_v8_platform-inl.h +185 -0
  199. package/dist/node/include/node_version.h +110 -0
  200. package/dist/node/include/node_wasi.h +184 -0
  201. package/dist/node/include/node_wasm_web_api.h +55 -0
  202. package/dist/node/include/node_watchdog.h +154 -0
  203. package/dist/node/include/node_webstorage.h +60 -0
  204. package/dist/node/include/node_worker.h +158 -0
  205. package/dist/node/include/path.h +33 -0
  206. package/dist/node/include/permission/addon_permission.h +31 -0
  207. package/dist/node/include/permission/child_process_permission.h +31 -0
  208. package/dist/node/include/permission/fs_permission.h +167 -0
  209. package/dist/node/include/permission/inspector_permission.h +31 -0
  210. package/dist/node/include/permission/permission.h +138 -0
  211. package/dist/node/include/permission/permission_base.h +65 -0
  212. package/dist/node/include/permission/wasi_permission.h +31 -0
  213. package/dist/node/include/permission/worker_permission.h +31 -0
  214. package/dist/node/include/pipe_wrap.h +80 -0
  215. package/dist/node/include/quic/application.h +159 -0
  216. package/dist/node/include/quic/bindingdata.h +272 -0
  217. package/dist/node/include/quic/cid.h +127 -0
  218. package/dist/node/include/quic/data.h +148 -0
  219. package/dist/node/include/quic/defs.h +245 -0
  220. package/dist/node/include/quic/endpoint.h +458 -0
  221. package/dist/node/include/quic/http3.h +15 -0
  222. package/dist/node/include/quic/logstream.h +81 -0
  223. package/dist/node/include/quic/packet.h +152 -0
  224. package/dist/node/include/quic/preferredaddress.h +72 -0
  225. package/dist/node/include/quic/session.h +443 -0
  226. package/dist/node/include/quic/sessionticket.h +108 -0
  227. package/dist/node/include/quic/streams.h +232 -0
  228. package/dist/node/include/quic/tlscontext.h +227 -0
  229. package/dist/node/include/quic/tokens.h +256 -0
  230. package/dist/node/include/quic/transportparams.h +165 -0
  231. package/dist/node/include/req_wrap-inl.h +171 -0
  232. package/dist/node/include/req_wrap.h +77 -0
  233. package/dist/node/include/spawn_sync.h +243 -0
  234. package/dist/node/include/stream_base-inl.h +173 -0
  235. package/dist/node/include/stream_base.h +478 -0
  236. package/dist/node/include/stream_pipe.h +76 -0
  237. package/dist/node/include/stream_wrap.h +132 -0
  238. package/dist/node/include/string_bytes.h +113 -0
  239. package/dist/node/include/string_decoder-inl.h +31 -0
  240. package/dist/node/include/string_decoder.h +49 -0
  241. package/dist/node/include/tcp_wrap.h +105 -0
  242. package/dist/node/include/threadpoolwork-inl.h +70 -0
  243. package/dist/node/include/timer_wrap-inl.h +32 -0
  244. package/dist/node/include/timer_wrap.h +85 -0
  245. package/dist/node/include/timers.h +70 -0
  246. package/dist/node/include/tracing/agent.h +195 -0
  247. package/dist/node/include/tracing/node_trace_buffer.h +83 -0
  248. package/dist/node/include/tracing/node_trace_writer.h +75 -0
  249. package/dist/node/include/tracing/trace_event.h +722 -0
  250. package/dist/node/include/tracing/trace_event_common.h +1109 -0
  251. package/dist/node/include/tracing/traced_value.h +129 -0
  252. package/dist/node/include/tty_wrap.h +65 -0
  253. package/dist/node/include/udp_wrap.h +230 -0
  254. package/dist/node/include/undici_version.h +6 -0
  255. package/dist/node/include/util-inl.h +700 -0
  256. package/dist/node/include/util.h +1021 -0
  257. package/dist/node/include/uv/aix.h +32 -0
  258. package/dist/node/include/uv/bsd.h +34 -0
  259. package/dist/node/include/uv/darwin.h +61 -0
  260. package/dist/node/include/uv/errno.h +483 -0
  261. package/dist/node/include/uv/linux.h +34 -0
  262. package/dist/node/include/uv/os390.h +33 -0
  263. package/dist/node/include/uv/posix.h +31 -0
  264. package/dist/node/include/uv/sunos.h +44 -0
  265. package/dist/node/include/uv/threadpool.h +37 -0
  266. package/dist/node/include/uv/tree.h +521 -0
  267. package/dist/node/include/uv/unix.h +512 -0
  268. package/dist/node/include/uv/version.h +43 -0
  269. package/dist/node/include/uv/win.h +698 -0
  270. package/dist/node/include/uv.h +1990 -0
  271. package/dist/node/include/v8-array-buffer.h +525 -0
  272. package/dist/node/include/v8-callbacks.h +462 -0
  273. package/dist/node/include/v8-container.h +183 -0
  274. package/dist/node/include/v8-context.h +485 -0
  275. package/dist/node/include/v8-cppgc.h +245 -0
  276. package/dist/node/include/v8-data.h +80 -0
  277. package/dist/node/include/v8-date.h +48 -0
  278. package/dist/node/include/v8-debug.h +168 -0
  279. package/dist/node/include/v8-embedder-heap.h +82 -0
  280. package/dist/node/include/v8-embedder-state-scope.h +52 -0
  281. package/dist/node/include/v8-exception.h +223 -0
  282. package/dist/node/include/v8-extension.h +62 -0
  283. package/dist/node/include/v8-external.h +37 -0
  284. package/dist/node/include/v8-fast-api-calls.h +984 -0
  285. package/dist/node/include/v8-forward.h +82 -0
  286. package/dist/node/include/v8-function-callback.h +607 -0
  287. package/dist/node/include/v8-function.h +140 -0
  288. package/dist/node/include/v8-handle-base.h +137 -0
  289. package/dist/node/include/v8-initialization.h +289 -0
  290. package/dist/node/include/v8-inspector-protocol.h +13 -0
  291. package/dist/node/include/v8-inspector.h +419 -0
  292. package/dist/node/include/v8-internal.h +1397 -0
  293. package/dist/node/include/v8-isolate.h +1767 -0
  294. package/dist/node/include/v8-json.h +47 -0
  295. package/dist/node/include/v8-local-handle.h +758 -0
  296. package/dist/node/include/v8-locker.h +138 -0
  297. package/dist/node/include/v8-maybe.h +160 -0
  298. package/dist/node/include/v8-memory-span.h +198 -0
  299. package/dist/node/include/v8-message.h +233 -0
  300. package/dist/node/include/v8-metrics.h +264 -0
  301. package/dist/node/include/v8-microtask-queue.h +157 -0
  302. package/dist/node/include/v8-microtask.h +28 -0
  303. package/dist/node/include/v8-object.h +824 -0
  304. package/dist/node/include/v8-persistent-handle.h +582 -0
  305. package/dist/node/include/v8-platform.h +1358 -0
  306. package/dist/node/include/v8-primitive-object.h +118 -0
  307. package/dist/node/include/v8-primitive.h +877 -0
  308. package/dist/node/include/v8-profiler.h +1302 -0
  309. package/dist/node/include/v8-promise.h +174 -0
  310. package/dist/node/include/v8-proxy.h +50 -0
  311. package/dist/node/include/v8-regexp.h +106 -0
  312. package/dist/node/include/v8-script.h +904 -0
  313. package/dist/node/include/v8-snapshot.h +266 -0
  314. package/dist/node/include/v8-source-location.h +92 -0
  315. package/dist/node/include/v8-statistics.h +238 -0
  316. package/dist/node/include/v8-template.h +1297 -0
  317. package/dist/node/include/v8-traced-handle.h +432 -0
  318. package/dist/node/include/v8-typed-array.h +390 -0
  319. package/dist/node/include/v8-unwinder-state.h +31 -0
  320. package/dist/node/include/v8-unwinder.h +132 -0
  321. package/dist/node/include/v8-util.h +665 -0
  322. package/dist/node/include/v8-value-serializer-version.h +24 -0
  323. package/dist/node/include/v8-value-serializer.h +316 -0
  324. package/dist/node/include/v8-value.h +655 -0
  325. package/dist/node/include/v8-version-string.h +38 -0
  326. package/dist/node/include/v8-version.h +20 -0
  327. package/dist/node/include/v8-wasm-trap-handler-posix.h +31 -0
  328. package/dist/node/include/v8-wasm-trap-handler-win.h +28 -0
  329. package/dist/node/include/v8-wasm.h +201 -0
  330. package/dist/node/include/v8-weak-callback-info.h +80 -0
  331. package/dist/node/include/v8.h +88 -0
  332. package/dist/node/include/v8config.h +981 -0
  333. package/dist/node/include/zlib_version.h +6 -0
  334. package/dist/node/libnode.dll +0 -0
  335. package/dist/node/libnode.lib +0 -0
  336. package/dist/node/libnodebuildinfo.json +10 -0
  337. package/dist/node/link_node.lib +0 -0
  338. package/dist/node/link_node.node +0 -0
  339. package/libnode.release.json +2 -2
  340. package/package.json +1 -1
@@ -0,0 +1,94 @@
1
+ #ifndef SRC_INSPECTOR_NETWORK_AGENT_H_
2
+ #define SRC_INSPECTOR_NETWORK_AGENT_H_
3
+
4
+ #include "env.h"
5
+ #include "io_agent.h"
6
+ #include "network_requests_buffer.h"
7
+ #include "network_resource_manager.h"
8
+ #include "node/inspector/protocol/Network.h"
9
+
10
+ #include <map>
11
+ #include <memory>
12
+ #include <unordered_map>
13
+
14
+ namespace node {
15
+ namespace inspector {
16
+
17
+ class NetworkInspector;
18
+
19
+ class NetworkAgent : public protocol::Network::Backend {
20
+ public:
21
+ explicit NetworkAgent(
22
+ NetworkInspector* inspector,
23
+ v8_inspector::V8Inspector* v8_inspector,
24
+ Environment* env,
25
+ std::shared_ptr<NetworkResourceManager> network_resource_manager);
26
+
27
+ void Wire(protocol::UberDispatcher* dispatcher);
28
+
29
+ protocol::DispatchResponse enable(
30
+ std::optional<int> in_maxTotalBufferSize,
31
+ std::optional<int> in_maxResourceBufferSize) override;
32
+
33
+ protocol::DispatchResponse disable() override;
34
+
35
+ protocol::DispatchResponse getRequestPostData(
36
+ const protocol::String& in_requestId,
37
+ protocol::String* out_postData) override;
38
+
39
+ protocol::DispatchResponse getResponseBody(
40
+ const protocol::String& in_requestId,
41
+ protocol::String* out_body,
42
+ bool* out_base64Encoded) override;
43
+
44
+ protocol::DispatchResponse streamResourceContent(
45
+ const protocol::String& in_requestId,
46
+ protocol::Binary* out_bufferedData) override;
47
+
48
+ protocol::DispatchResponse loadNetworkResource(
49
+ const protocol::String& in_url,
50
+ std::unique_ptr<protocol::Network::LoadNetworkResourcePageResult>*
51
+ out_resource) override;
52
+
53
+ void emitNotification(v8::Local<v8::Context> context,
54
+ const protocol::String& event,
55
+ v8::Local<v8::Object> params);
56
+
57
+ void requestWillBeSent(v8::Local<v8::Context> context,
58
+ v8::Local<v8::Object> params);
59
+
60
+ void responseReceived(v8::Local<v8::Context> context,
61
+ v8::Local<v8::Object> params);
62
+
63
+ void loadingFailed(v8::Local<v8::Context> context,
64
+ v8::Local<v8::Object> params);
65
+
66
+ void loadingFinished(v8::Local<v8::Context> context,
67
+ v8::Local<v8::Object> params);
68
+
69
+ void dataSent(v8::Local<v8::Context> context, v8::Local<v8::Object> params);
70
+
71
+ void dataReceived(v8::Local<v8::Context> context,
72
+ v8::Local<v8::Object> params);
73
+
74
+ private:
75
+ NetworkInspector* inspector_;
76
+ v8_inspector::V8Inspector* v8_inspector_;
77
+ std::shared_ptr<protocol::Network::Frontend> frontend_;
78
+
79
+ using EventNotifier = void (NetworkAgent::*)(v8::Local<v8::Context> context,
80
+ v8::Local<v8::Object>);
81
+ std::unordered_map<protocol::String, EventNotifier> event_notifier_map_;
82
+ Environment* env_;
83
+ std::shared_ptr<NetworkResourceManager> network_resource_manager_;
84
+
85
+ // Per-resource buffer size in bytes to use when preserving network payloads
86
+ // (XHRs, etc).
87
+ size_t max_resource_buffer_size_ = 5 * 1024 * 1024; // 5MB
88
+ RequestsBuffer requests_;
89
+ };
90
+
91
+ } // namespace inspector
92
+ } // namespace node
93
+
94
+ #endif // SRC_INSPECTOR_NETWORK_AGENT_H_
@@ -0,0 +1,45 @@
1
+ #ifndef SRC_INSPECTOR_NETWORK_INSPECTOR_H_
2
+ #define SRC_INSPECTOR_NETWORK_INSPECTOR_H_
3
+
4
+ #include <memory>
5
+ #include "env.h"
6
+ #include "network_agent.h"
7
+ #include "network_resource_manager.h"
8
+
9
+ namespace node {
10
+ class Environment;
11
+
12
+ namespace inspector {
13
+
14
+ class NetworkInspector {
15
+ public:
16
+ explicit NetworkInspector(
17
+ Environment* env,
18
+ v8_inspector::V8Inspector* v8_inspector,
19
+ std::shared_ptr<NetworkResourceManager> network_resource_manager);
20
+ ~NetworkInspector();
21
+
22
+ void Wire(protocol::UberDispatcher* dispatcher);
23
+
24
+ bool canEmit(const std::string& domain);
25
+
26
+ void emitNotification(v8::Local<v8::Context> context,
27
+ const std::string& domain,
28
+ const std::string& method,
29
+ v8::Local<v8::Object> params);
30
+
31
+ void Enable();
32
+ void Disable();
33
+ bool IsEnabled() const { return enabled_; }
34
+
35
+ private:
36
+ bool enabled_;
37
+ Environment* env_;
38
+ std::unique_ptr<NetworkAgent> network_agent_;
39
+ std::shared_ptr<NetworkResourceManager> network_resource_manager_;
40
+ };
41
+
42
+ } // namespace inspector
43
+ } // namespace node
44
+
45
+ #endif // SRC_INSPECTOR_NETWORK_INSPECTOR_H_
@@ -0,0 +1,195 @@
1
+ #ifndef SRC_INSPECTOR_NETWORK_REQUESTS_BUFFER_H_
2
+ #define SRC_INSPECTOR_NETWORK_REQUESTS_BUFFER_H_
3
+
4
+ #include <list>
5
+ #include <map>
6
+ #include <vector>
7
+
8
+ #include "inspector/node_string.h"
9
+
10
+ namespace node {
11
+ namespace inspector {
12
+
13
+ // Supported charsets for devtools frontend on request/response data.
14
+ // If the charset is kUTF8, the data is expected to be text and can be
15
+ // formatted on the frontend.
16
+ enum class Charset {
17
+ kUTF8,
18
+ kBinary,
19
+ };
20
+
21
+ struct RequestEntry {
22
+ double timestamp;
23
+ bool is_request_finished = false;
24
+ bool is_response_finished = false;
25
+ bool is_streaming = false;
26
+ Charset request_charset;
27
+ Charset response_charset = Charset::kBinary;
28
+
29
+ size_t max_resource_buffer_size;
30
+ size_t buffer_size() const {
31
+ return request_data_size_ + response_data_size_;
32
+ }
33
+
34
+ const std::vector<protocol::Binary> request_data_blobs() const {
35
+ return request_data_blobs_;
36
+ }
37
+ const std::vector<protocol::Binary> response_data_blobs() const {
38
+ return response_data_blobs_;
39
+ }
40
+
41
+ void push_request_data_blob(const protocol::Binary& blob) {
42
+ if (buffer_size() + blob.size() > max_resource_buffer_size) {
43
+ // Exceed the per-resource buffer size limit, ignore the blob.
44
+ return;
45
+ }
46
+ request_data_blobs_.push_back(blob);
47
+ request_data_size_ += blob.size();
48
+ }
49
+ void push_response_data_blob(const protocol::Binary& blob) {
50
+ if (buffer_size() + blob.size() > max_resource_buffer_size) {
51
+ // Exceed the per-resource buffer size limit, ignore the blob.
52
+ return;
53
+ }
54
+ response_data_blobs_.push_back(blob);
55
+ response_data_size_ += blob.size();
56
+ }
57
+
58
+ void clear_response_data_blobs() {
59
+ response_data_blobs_.clear();
60
+ response_data_size_ = 0;
61
+ }
62
+
63
+ RequestEntry(double timestamp,
64
+ Charset request_charset,
65
+ bool has_request_body,
66
+ size_t max_resource_buffer_size)
67
+ : timestamp(timestamp),
68
+ is_request_finished(!has_request_body),
69
+ request_charset(request_charset),
70
+ max_resource_buffer_size(max_resource_buffer_size) {}
71
+
72
+ private:
73
+ size_t request_data_size_ = 0;
74
+ std::vector<protocol::Binary> request_data_blobs_;
75
+ size_t response_data_size_ = 0;
76
+ std::vector<protocol::Binary> response_data_blobs_;
77
+ };
78
+
79
+ class RequestsBuffer {
80
+ using key_value_pair_t = typename std::pair<protocol::String, RequestEntry>;
81
+ using list_iterator = typename std::list<key_value_pair_t>::iterator;
82
+ using const_list_iterator =
83
+ typename std::list<key_value_pair_t>::const_iterator;
84
+
85
+ public:
86
+ struct mutable_iterator {
87
+ list_iterator it;
88
+ size_t buffer_size;
89
+ RequestsBuffer* parent;
90
+
91
+ key_value_pair_t& operator*() { return *it; }
92
+ key_value_pair_t* operator->() { return &(*it); }
93
+ bool operator==(const const_list_iterator& other) const {
94
+ return it == other;
95
+ }
96
+ bool operator!=(const const_list_iterator& other) const {
97
+ return it != other;
98
+ }
99
+
100
+ mutable_iterator(std::nullptr_t, RequestsBuffer* parent)
101
+ : it(parent->list_.end()), buffer_size(0), parent(parent) {}
102
+
103
+ mutable_iterator(list_iterator it, RequestsBuffer* parent)
104
+ : it(it), buffer_size(it->second.buffer_size()), parent(parent) {}
105
+ ~mutable_iterator() {
106
+ if (it == parent->list_.end()) return;
107
+ // The entry must not have been erased.
108
+ DCHECK(parent->lookup_map_.contains(it->first));
109
+ // Update the total buffer size if the buffer size has changed.
110
+ if (buffer_size == it->second.buffer_size()) {
111
+ return;
112
+ }
113
+ parent->total_buffer_size_ += it->second.buffer_size();
114
+ DCHECK_GE(parent->total_buffer_size_, buffer_size);
115
+ parent->total_buffer_size_ -= buffer_size;
116
+ parent->enforceBufferLimits();
117
+ }
118
+ };
119
+
120
+ explicit RequestsBuffer(size_t max_total_buffer_size)
121
+ : max_total_buffer_size_(max_total_buffer_size) {}
122
+
123
+ size_t max_total_buffer_size() const { return max_total_buffer_size_; }
124
+ size_t total_buffer_size() const { return total_buffer_size_; }
125
+
126
+ const_list_iterator begin() const { return list_.begin(); }
127
+ const_list_iterator end() const { return list_.end(); }
128
+
129
+ // Get a mutable iterator to the entry with the given key.
130
+ // The iterator will update the total buffer size when it is destroyed.
131
+ mutable_iterator find(const protocol::String& key) {
132
+ auto it = lookup_map_.find(key);
133
+ if (it == lookup_map_.end()) {
134
+ return mutable_iterator(nullptr, this);
135
+ }
136
+ return mutable_iterator(it->second, this);
137
+ }
138
+ const_list_iterator cfind(const protocol::String& key) const {
139
+ auto it = lookup_map_.find(key);
140
+ if (it == lookup_map_.end()) {
141
+ return list_.end();
142
+ }
143
+ return it->second;
144
+ }
145
+
146
+ bool contains(const protocol::String& key) const {
147
+ return lookup_map_.contains(key);
148
+ }
149
+
150
+ bool emplace(const protocol::String& key, RequestEntry&& value) {
151
+ if (lookup_map_.contains(key)) {
152
+ return false;
153
+ }
154
+ list_.emplace_front(key, std::move(value));
155
+ lookup_map_[key] = list_.begin();
156
+ // No buffer yet.
157
+ DCHECK_EQ(begin()->second.buffer_size(), 0u);
158
+ return true;
159
+ }
160
+
161
+ void erase(const protocol::String& key) {
162
+ auto it = lookup_map_.find(key);
163
+ if (it == lookup_map_.end()) {
164
+ return;
165
+ }
166
+ erase(it->second);
167
+ }
168
+
169
+ void erase(const_list_iterator it) {
170
+ DCHECK(it != list_.end());
171
+ DCHECK_GE(total_buffer_size_, it->second.buffer_size());
172
+ total_buffer_size_ -= it->second.buffer_size();
173
+ lookup_map_.erase(it->first);
174
+ list_.erase(it);
175
+ }
176
+
177
+ private:
178
+ void enforceBufferLimits() {
179
+ while (total_buffer_size_ > max_total_buffer_size_ && !list_.empty()) {
180
+ auto last_it = --list_.end();
181
+ erase(last_it);
182
+ }
183
+ }
184
+
185
+ size_t max_total_buffer_size_;
186
+ size_t total_buffer_size_ = 0;
187
+
188
+ std::list<key_value_pair_t> list_;
189
+ std::map<protocol::String, list_iterator> lookup_map_;
190
+ };
191
+
192
+ } // namespace inspector
193
+ } // namespace node
194
+
195
+ #endif // SRC_INSPECTOR_NETWORK_REQUESTS_BUFFER_H_
@@ -0,0 +1,29 @@
1
+ // network_resource_manager.h
2
+ #ifndef SRC_INSPECTOR_NETWORK_RESOURCE_MANAGER_H_
3
+ #define SRC_INSPECTOR_NETWORK_RESOURCE_MANAGER_H_
4
+
5
+ #include <atomic>
6
+ #include <string>
7
+ #include <unordered_map>
8
+ #include "node_mutex.h"
9
+
10
+ namespace node {
11
+ namespace inspector {
12
+
13
+ class NetworkResourceManager {
14
+ public:
15
+ void Put(const std::string& url, const std::string& data);
16
+ std::string Get(const std::string& url);
17
+
18
+ // Erase resource and mapping by stream id
19
+ void Erase(const std::string& stream_id);
20
+
21
+ private:
22
+ std::unordered_map<std::string, std::string> resources_;
23
+ Mutex mutex_; // Protects access to resources_
24
+ };
25
+
26
+ } // namespace inspector
27
+ } // namespace node
28
+
29
+ #endif // SRC_INSPECTOR_NETWORK_RESOURCE_MANAGER_H_
@@ -0,0 +1,24 @@
1
+ #ifndef SRC_INSPECTOR_NODE_JSON_H_
2
+ #define SRC_INSPECTOR_NODE_JSON_H_
3
+
4
+ #include "node/inspector/protocol/Protocol.h"
5
+
6
+ namespace node {
7
+ namespace inspector {
8
+
9
+ struct JsonUtil {
10
+ // Parse s JSON string into protocol::Value.
11
+ static std::unique_ptr<protocol::Value> ParseJSON(const uint8_t* chars,
12
+ size_t size);
13
+ static std::unique_ptr<protocol::Value> ParseJSON(const uint16_t* chars,
14
+ size_t size);
15
+
16
+ static std::unique_ptr<protocol::Value> parseJSON(const std::string_view);
17
+ static std::unique_ptr<protocol::Value> parseJSON(
18
+ v8_inspector::StringView view);
19
+ };
20
+
21
+ } // namespace inspector
22
+ } // namespace node
23
+
24
+ #endif // SRC_INSPECTOR_NODE_JSON_H_
@@ -0,0 +1,101 @@
1
+ // Bridges V8 Inspector generated code with the std::string used by the Node
2
+ // Compare to V8 counterpart - deps/v8/src/inspector/string-util.h
3
+ #ifndef SRC_INSPECTOR_NODE_STRING_H_
4
+ #define SRC_INSPECTOR_NODE_STRING_H_
5
+
6
+ #include <cstring>
7
+ #include <sstream>
8
+ #include <string>
9
+ #include "crdtp/protocol_core.h"
10
+ #include "util.h"
11
+ #include "v8-inspector.h"
12
+
13
+ namespace node::inspector::protocol {
14
+ class Binary;
15
+ }
16
+
17
+ namespace crdtp {
18
+
19
+ template <>
20
+ struct ProtocolTypeTraits<std::string> {
21
+ static bool Deserialize(DeserializerState* state, std::string* value);
22
+ static void Serialize(const std::string& value, std::vector<uint8_t>* bytes);
23
+ };
24
+
25
+ template <>
26
+ struct ProtocolTypeTraits<node::inspector::protocol::Binary> {
27
+ static bool Deserialize(DeserializerState* state,
28
+ node::inspector::protocol::Binary* value);
29
+ static void Serialize(const node::inspector::protocol::Binary& value,
30
+ std::vector<uint8_t>* bytes);
31
+ };
32
+
33
+ } // namespace crdtp
34
+
35
+ namespace node {
36
+ namespace inspector {
37
+ namespace protocol {
38
+
39
+ class Value;
40
+
41
+ using String = std::string;
42
+ using StringBuilder = std::ostringstream;
43
+ using ProtocolMessage = std::string;
44
+
45
+ // Implements StringUtil methods used in `inspector_protocol/lib/`.
46
+ // Refer to
47
+ // https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/inspector/v8_inspector_string.h;l=40;drc=2b15d6974a49d3a14d3d67ae099a649d523a828d
48
+ // for more details about the interface.
49
+ struct StringUtil {
50
+ // Convert Utf16 in local endianness to Utf8 if needed.
51
+ static String StringViewToUtf8(v8_inspector::StringView view);
52
+ static String fromUTF16(const uint16_t* data, size_t length);
53
+
54
+ static String fromUTF8(const uint8_t* data, size_t length);
55
+ static String fromUTF16LE(const uint16_t* data, size_t length);
56
+ static const uint8_t* CharactersUTF8(const std::string_view s);
57
+ static size_t CharacterCount(const std::string_view s);
58
+
59
+ // Unimplemented. The generated code will fall back to CharactersUTF8().
60
+ inline static uint8_t* CharactersLatin1(const std::string_view s) {
61
+ return nullptr;
62
+ }
63
+ inline static const uint16_t* CharactersUTF16(const std::string_view s) {
64
+ return nullptr;
65
+ }
66
+ };
67
+
68
+ // A read-only sequence of uninterpreted bytes with reference-counted storage.
69
+ class Binary {
70
+ public:
71
+ Binary() : bytes_(std::make_shared<std::vector<uint8_t>>()) {}
72
+
73
+ const uint8_t* data() const { return bytes_->data(); }
74
+ size_t size() const { return bytes_->size(); }
75
+
76
+ String toBase64() const;
77
+
78
+ static Binary concat(const std::vector<Binary>& binaries);
79
+
80
+ static Binary fromBase64(const String& base64, bool* success);
81
+ static Binary fromUint8Array(v8::Local<v8::Uint8Array> data);
82
+ static Binary fromSpan(const uint8_t* data, size_t size) {
83
+ return Binary::fromSpan(crdtp::span<uint8_t>(data, size));
84
+ }
85
+ static Binary fromSpan(crdtp::span<uint8_t> span) {
86
+ return Binary(
87
+ std::make_shared<std::vector<uint8_t>>(span.begin(), span.end()));
88
+ }
89
+
90
+ private:
91
+ std::shared_ptr<std::vector<uint8_t>> bytes_;
92
+
93
+ explicit Binary(std::shared_ptr<std::vector<uint8_t>> bytes)
94
+ : bytes_(bytes) {}
95
+ };
96
+
97
+ } // namespace protocol
98
+ } // namespace inspector
99
+ } // namespace node
100
+
101
+ #endif // SRC_INSPECTOR_NODE_STRING_H_
@@ -0,0 +1,27 @@
1
+ #ifndef SRC_INSPECTOR_PROTOCOL_HELPER_H_
2
+ #define SRC_INSPECTOR_PROTOCOL_HELPER_H_
3
+
4
+ #include "node/inspector/protocol/Protocol.h"
5
+ #include "util.h"
6
+ #include "v8-inspector.h"
7
+
8
+ namespace node::inspector {
9
+
10
+ // Convert a V8 string to v8_inspector StringBuffer, encoded in UTF16.
11
+ inline std::unique_ptr<v8_inspector::StringBuffer> ToInspectorString(
12
+ v8::Isolate* isolate, v8::Local<v8::Value> value) {
13
+ TwoByteValue buffer(isolate, value);
14
+ return v8_inspector::StringBuffer::create(
15
+ v8_inspector::StringView(*buffer, buffer.length()));
16
+ }
17
+
18
+ // Convert a V8 string to node::inspector::protocol::String, encoded in UTF8.
19
+ inline protocol::String ToProtocolString(v8::Isolate* isolate,
20
+ v8::Local<v8::Value> value) {
21
+ Utf8Value buffer(isolate, value);
22
+ return buffer.ToString();
23
+ }
24
+
25
+ } // namespace node::inspector
26
+
27
+ #endif // SRC_INSPECTOR_PROTOCOL_HELPER_H_
@@ -0,0 +1,41 @@
1
+ #ifndef SRC_INSPECTOR_RUNTIME_AGENT_H_
2
+ #define SRC_INSPECTOR_RUNTIME_AGENT_H_
3
+
4
+ #include "node/inspector/protocol/NodeRuntime.h"
5
+ #include "v8.h"
6
+
7
+ namespace node {
8
+ class Environment;
9
+
10
+ namespace inspector {
11
+ namespace protocol {
12
+
13
+ class RuntimeAgent : public NodeRuntime::Backend {
14
+ public:
15
+ RuntimeAgent();
16
+
17
+ void Wire(UberDispatcher* dispatcher);
18
+
19
+ DispatchResponse notifyWhenWaitingForDisconnect(bool enabled) override;
20
+
21
+ DispatchResponse enable() override;
22
+
23
+ DispatchResponse disable() override;
24
+
25
+ bool notifyWaitingForDisconnect();
26
+
27
+ void setWaitingForDebugger();
28
+
29
+ void unsetWaitingForDebugger();
30
+
31
+ private:
32
+ std::shared_ptr<NodeRuntime::Frontend> frontend_;
33
+ bool notify_when_waiting_for_disconnect_;
34
+ bool enabled_;
35
+ bool is_waiting_for_debugger_;
36
+ };
37
+ } // namespace protocol
38
+ } // namespace inspector
39
+ } // namespace node
40
+
41
+ #endif // SRC_INSPECTOR_RUNTIME_AGENT_H_
@@ -0,0 +1,75 @@
1
+ #ifndef SRC_INSPECTOR_TARGET_AGENT_H_
2
+ #define SRC_INSPECTOR_TARGET_AGENT_H_
3
+
4
+ #include <string_view>
5
+ #include <unordered_map>
6
+ #include <vector>
7
+ #include "inspector/worker_inspector.h"
8
+ #include "node/inspector/protocol/Target.h"
9
+
10
+ namespace node {
11
+
12
+ namespace inspector {
13
+ class TargetInspector;
14
+
15
+ namespace protocol {
16
+
17
+ struct TargetInfo {
18
+ std::string target_id;
19
+ std::string type;
20
+ std::string title;
21
+ std::string url;
22
+ std::shared_ptr<MainThreadHandle> worker;
23
+ bool attached;
24
+ };
25
+
26
+ class TargetAgent : public Target::Backend,
27
+ public std::enable_shared_from_this<TargetAgent> {
28
+ public:
29
+ void Wire(UberDispatcher* dispatcher);
30
+
31
+ void createAndAttachIfNecessary(std::shared_ptr<MainThreadHandle> worker,
32
+ const std::string& title,
33
+ const std::string& url);
34
+
35
+ DispatchResponse setAutoAttach(bool auto_attach,
36
+ bool wait_for_debugger_on_start) override;
37
+
38
+ void listenWorker(std::weak_ptr<WorkerManager> worker_manager);
39
+ void reset();
40
+ static std::unordered_map<int, std::shared_ptr<MainThreadHandle>>
41
+ target_session_id_worker_map_;
42
+
43
+ bool isThisThread(MainThreadHandle* worker) { return worker == main_thread_; }
44
+
45
+ private:
46
+ int getNextTargetId();
47
+ int getNextSessionId();
48
+ void targetCreated(const std::string_view target_id,
49
+ const std::string_view type,
50
+ const std::string_view title,
51
+ const std::string_view url);
52
+ void attachedToTarget(std::shared_ptr<MainThreadHandle> worker,
53
+ const std::string& target_id,
54
+ const std::string& type,
55
+ const std::string& title,
56
+ const std::string& url);
57
+
58
+ std::shared_ptr<Target::Frontend> frontend_;
59
+ std::weak_ptr<WorkerManager> worker_manager_;
60
+ static int next_session_id_;
61
+ int next_target_id_ = 1;
62
+ std::unique_ptr<WorkerManagerEventHandle> worker_event_handle_ = nullptr;
63
+ bool auto_attach_ = false;
64
+ // TODO(islandryu): If false, implement it so that each thread does not wait
65
+ // for the worker to execute.
66
+ bool wait_for_debugger_on_start_ = true;
67
+ std::vector<TargetInfo> targets_;
68
+ MainThreadHandle* main_thread_;
69
+ };
70
+
71
+ } // namespace protocol
72
+ } // namespace inspector
73
+ } // namespace node
74
+
75
+ #endif // SRC_INSPECTOR_TARGET_AGENT_H_
@@ -0,0 +1,43 @@
1
+ #ifndef SRC_INSPECTOR_TRACING_AGENT_H_
2
+ #define SRC_INSPECTOR_TRACING_AGENT_H_
3
+
4
+ #include "node/inspector/protocol/NodeTracing.h"
5
+ #include "tracing/agent.h"
6
+ #include "v8.h"
7
+
8
+
9
+ namespace node {
10
+ class Environment;
11
+
12
+ namespace inspector {
13
+ class MainThreadHandle;
14
+
15
+ namespace protocol {
16
+
17
+ class TracingAgent : public NodeTracing::Backend {
18
+ public:
19
+ explicit TracingAgent(Environment*, std::shared_ptr<MainThreadHandle>);
20
+ ~TracingAgent() override;
21
+
22
+ void Wire(UberDispatcher* dispatcher);
23
+
24
+ DispatchResponse start(
25
+ std::unique_ptr<protocol::NodeTracing::TraceConfig> traceConfig) override;
26
+ DispatchResponse stop() override;
27
+ DispatchResponse getCategories(
28
+ std::unique_ptr<protocol::Array<String>>* categories) override;
29
+
30
+ private:
31
+ Environment* env_;
32
+ std::shared_ptr<MainThreadHandle> main_thread_;
33
+ tracing::AgentWriterHandle trace_writer_;
34
+ int frontend_object_id_ = 0;
35
+ std::shared_ptr<NodeTracing::Frontend> frontend_;
36
+ };
37
+
38
+
39
+ } // namespace protocol
40
+ } // namespace inspector
41
+ } // namespace node
42
+
43
+ #endif // SRC_INSPECTOR_TRACING_AGENT_H_