@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,286 @@
1
+ #ifndef SRC_NODE_PLATFORM_H_
2
+ #define SRC_NODE_PLATFORM_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include <functional>
7
+ #include <queue>
8
+ #include <type_traits>
9
+ #include <unordered_map>
10
+ #include <vector>
11
+
12
+ #include "libplatform/libplatform.h"
13
+ #include "node.h"
14
+ #include "node_mutex.h"
15
+ #include "uv.h"
16
+
17
+ namespace node {
18
+
19
+ class NodePlatform;
20
+ class IsolateData;
21
+ class PerIsolatePlatformData;
22
+
23
+ template <typename, typename = void>
24
+ struct has_priority : std::false_type {};
25
+
26
+ template <typename T>
27
+ struct has_priority<T, std::void_t<decltype(std::declval<T>().priority)>>
28
+ : std::true_type {};
29
+
30
+ template <class T>
31
+ class TaskQueue {
32
+ public:
33
+ // If the entry type has a priority member, order the priority queue by
34
+ // that - higher priority first. Otherwise, maintain insertion order.
35
+ struct EntryCompare {
36
+ bool operator()(const std::unique_ptr<T>& a,
37
+ const std::unique_ptr<T>& b) const {
38
+ if constexpr (has_priority<T>::value) {
39
+ return a->priority < b->priority;
40
+ } else {
41
+ return false;
42
+ }
43
+ }
44
+ };
45
+
46
+ using PriorityQueue = std::priority_queue<std::unique_ptr<T>,
47
+ std::vector<std::unique_ptr<T>>,
48
+ EntryCompare>;
49
+ class Locked {
50
+ public:
51
+ void Push(std::unique_ptr<T> task, bool outstanding = false);
52
+ std::unique_ptr<T> Pop();
53
+ std::unique_ptr<T> BlockingPop();
54
+ void NotifyOfOutstandingCompletion();
55
+ void BlockingDrain();
56
+ void Stop();
57
+ PriorityQueue PopAll();
58
+
59
+ private:
60
+ friend class TaskQueue;
61
+ explicit Locked(TaskQueue* queue);
62
+
63
+ TaskQueue* queue_;
64
+ Mutex::ScopedLock lock_;
65
+ };
66
+
67
+ TaskQueue();
68
+ ~TaskQueue() = default;
69
+
70
+ Locked Lock() { return Locked(this); }
71
+
72
+ private:
73
+ Mutex lock_;
74
+ ConditionVariable tasks_available_;
75
+ ConditionVariable outstanding_tasks_drained_;
76
+ int outstanding_tasks_;
77
+ bool stopped_;
78
+ PriorityQueue task_queue_;
79
+ };
80
+
81
+ struct TaskQueueEntry {
82
+ std::unique_ptr<v8::Task> task;
83
+ v8::TaskPriority priority;
84
+ TaskQueueEntry(std::unique_ptr<v8::Task> t, v8::TaskPriority p)
85
+ : task(std::move(t)), priority(p) {}
86
+ inline bool is_outstanding() const {
87
+ return priority == v8::TaskPriority::kUserBlocking;
88
+ }
89
+ };
90
+
91
+ struct DelayedTask {
92
+ std::unique_ptr<v8::Task> task;
93
+ v8::TaskPriority priority;
94
+ uv_timer_t timer;
95
+ double timeout;
96
+ std::shared_ptr<PerIsolatePlatformData> platform_data;
97
+ };
98
+
99
+ enum class PlatformDebugLogLevel {
100
+ kNone = 0,
101
+ kMinimal = 1,
102
+ kVerbose = 2,
103
+ };
104
+
105
+ // This acts as the foreground task runner for a given Isolate.
106
+ class PerIsolatePlatformData
107
+ : public IsolatePlatformDelegate,
108
+ public v8::TaskRunner,
109
+ public std::enable_shared_from_this<PerIsolatePlatformData> {
110
+ public:
111
+ PerIsolatePlatformData(
112
+ v8::Isolate* isolate,
113
+ uv_loop_t* loop,
114
+ PlatformDebugLogLevel debug_log_level = PlatformDebugLogLevel::kNone);
115
+ ~PerIsolatePlatformData() override;
116
+
117
+ std::shared_ptr<v8::TaskRunner> GetForegroundTaskRunner() override;
118
+ bool IdleTasksEnabled() override { return false; }
119
+
120
+ // Non-nestable tasks are treated like regular tasks.
121
+ bool NonNestableTasksEnabled() const override { return true; }
122
+ bool NonNestableDelayedTasksEnabled() const override { return true; }
123
+
124
+ void AddShutdownCallback(void (*callback)(void*), void* data);
125
+ void Shutdown();
126
+
127
+ // Returns true if work was dispatched or executed. New tasks that are
128
+ // posted during flushing of the queue are postponed until the next
129
+ // flushing.
130
+ bool FlushForegroundTasksInternal();
131
+
132
+ const uv_loop_t* event_loop() const { return loop_; }
133
+
134
+ private:
135
+ // v8::TaskRunner implementation.
136
+ void PostTaskImpl(std::unique_ptr<v8::Task> task,
137
+ const v8::SourceLocation& location) override;
138
+ void PostDelayedTaskImpl(std::unique_ptr<v8::Task> task,
139
+ double delay_in_seconds,
140
+ const v8::SourceLocation& location) override;
141
+ void PostIdleTaskImpl(std::unique_ptr<v8::IdleTask> task,
142
+ const v8::SourceLocation& location) override;
143
+ void PostNonNestableTaskImpl(std::unique_ptr<v8::Task> task,
144
+ const v8::SourceLocation& location) override;
145
+ void PostNonNestableDelayedTaskImpl(
146
+ std::unique_ptr<v8::Task> task,
147
+ double delay_in_seconds,
148
+ const v8::SourceLocation& location) override;
149
+
150
+ void DeleteFromScheduledTasks(DelayedTask* task);
151
+ void DecreaseHandleCount();
152
+
153
+ static void FlushTasks(uv_async_t* handle);
154
+ void RunForegroundTask(std::unique_ptr<v8::Task> task);
155
+ static void RunForegroundTask(uv_timer_t* timer);
156
+
157
+ uv_async_t* flush_tasks_ = nullptr;
158
+
159
+ struct ShutdownCallback {
160
+ void (*cb)(void*);
161
+ void* data;
162
+ };
163
+ typedef std::vector<ShutdownCallback> ShutdownCbList;
164
+ ShutdownCbList shutdown_callbacks_;
165
+ // shared_ptr to self to keep this object alive during shutdown.
166
+ std::shared_ptr<PerIsolatePlatformData> self_reference_;
167
+ uint32_t uv_handle_count_ = 1; // 1 = flush_tasks_
168
+
169
+ v8::Isolate* const isolate_;
170
+ uv_loop_t* const loop_;
171
+
172
+ // When acquiring locks for both task queues, lock foreground_tasks_
173
+ // first then foreground_delayed_tasks_ to avoid deadlocks.
174
+ TaskQueue<TaskQueueEntry> foreground_tasks_;
175
+ TaskQueue<DelayedTask> foreground_delayed_tasks_;
176
+
177
+ // Use a custom deleter because libuv needs to close the handle first.
178
+ typedef std::unique_ptr<DelayedTask, void (*)(DelayedTask*)>
179
+ DelayedTaskPointer;
180
+ std::vector<DelayedTaskPointer> scheduled_delayed_tasks_;
181
+ PlatformDebugLogLevel debug_log_level_ = PlatformDebugLogLevel::kNone;
182
+ };
183
+
184
+ // This acts as the single worker thread task runner for all Isolates.
185
+ class WorkerThreadsTaskRunner {
186
+ public:
187
+ explicit WorkerThreadsTaskRunner(int thread_pool_size,
188
+ PlatformDebugLogLevel debug_log_level);
189
+
190
+ void PostTask(v8::TaskPriority priority,
191
+ std::unique_ptr<v8::Task> task,
192
+ const v8::SourceLocation& location);
193
+ void PostDelayedTask(v8::TaskPriority priority,
194
+ std::unique_ptr<v8::Task> task,
195
+ const v8::SourceLocation& location,
196
+ double delay_in_seconds);
197
+
198
+ void BlockingDrain();
199
+ void Shutdown();
200
+
201
+ int NumberOfWorkerThreads() const;
202
+
203
+ private:
204
+ // A queue shared by all threads. The consumers are the worker threads which
205
+ // take tasks from it to run in PlatformWorkerThread(). The producers can be
206
+ // any thread. Both the foreground thread and the worker threads can push
207
+ // tasks into the queue via v8::Platform::PostTaskOnWorkerThread() which
208
+ // eventually calls PostTask() on this class. When any thread calls
209
+ // v8::Platform::PostDelayedTaskOnWorkerThread(), the DelayedTaskScheduler
210
+ // thread will schedule a timer that pushes the delayed tasks back into this
211
+ // queue when the timer expires.
212
+ TaskQueue<TaskQueueEntry> pending_worker_tasks_;
213
+
214
+ class DelayedTaskScheduler;
215
+ std::unique_ptr<DelayedTaskScheduler> delayed_task_scheduler_;
216
+
217
+ std::vector<std::unique_ptr<uv_thread_t>> threads_;
218
+ PlatformDebugLogLevel debug_log_level_ = PlatformDebugLogLevel::kNone;
219
+ };
220
+
221
+ class NodePlatform : public MultiIsolatePlatform {
222
+ public:
223
+ NodePlatform(int thread_pool_size,
224
+ v8::TracingController* tracing_controller,
225
+ v8::PageAllocator* page_allocator = nullptr);
226
+ ~NodePlatform() override;
227
+
228
+ void DrainTasks(v8::Isolate* isolate) override;
229
+ void Shutdown();
230
+
231
+ // v8::Platform implementation.
232
+ int NumberOfWorkerThreads() override;
233
+ void PostTaskOnWorkerThreadImpl(v8::TaskPriority priority,
234
+ std::unique_ptr<v8::Task> task,
235
+ const v8::SourceLocation& location) override;
236
+ void PostDelayedTaskOnWorkerThreadImpl(
237
+ v8::TaskPriority priority,
238
+ std::unique_ptr<v8::Task> task,
239
+ double delay_in_seconds,
240
+ const v8::SourceLocation& location) override;
241
+ bool IdleTasksEnabled(v8::Isolate* isolate) override;
242
+ double MonotonicallyIncreasingTime() override;
243
+ double CurrentClockTimeMillis() override;
244
+ v8::TracingController* GetTracingController() override;
245
+ bool FlushForegroundTasks(v8::Isolate* isolate) override;
246
+ std::unique_ptr<v8::JobHandle> CreateJobImpl(
247
+ v8::TaskPriority priority,
248
+ std::unique_ptr<v8::JobTask> job_task,
249
+ const v8::SourceLocation& location) override;
250
+
251
+ void RegisterIsolate(v8::Isolate* isolate, uv_loop_t* loop) override;
252
+ void RegisterIsolate(v8::Isolate* isolate,
253
+ IsolatePlatformDelegate* delegate) override;
254
+
255
+ void UnregisterIsolate(v8::Isolate* isolate) override;
256
+ void AddIsolateFinishedCallback(v8::Isolate* isolate,
257
+ void (*callback)(void*),
258
+ void* data) override;
259
+
260
+ std::shared_ptr<v8::TaskRunner> GetForegroundTaskRunner(
261
+ v8::Isolate* isolate, v8::TaskPriority priority) override;
262
+
263
+ Platform::StackTracePrinter GetStackTracePrinter() override;
264
+ v8::PageAllocator* GetPageAllocator() override;
265
+
266
+ private:
267
+ IsolatePlatformDelegate* ForIsolate(v8::Isolate* isolate);
268
+ std::shared_ptr<PerIsolatePlatformData> ForNodeIsolate(v8::Isolate* isolate);
269
+
270
+ Mutex per_isolate_mutex_;
271
+ using DelegatePair = std::pair<IsolatePlatformDelegate*,
272
+ std::shared_ptr<PerIsolatePlatformData>>;
273
+ std::unordered_map<v8::Isolate*, DelegatePair> per_isolate_;
274
+
275
+ v8::TracingController* tracing_controller_;
276
+ v8::PageAllocator* page_allocator_;
277
+ std::shared_ptr<WorkerThreadsTaskRunner> worker_thread_task_runner_;
278
+ bool has_shut_down_ = false;
279
+ PlatformDebugLogLevel debug_log_level_ = PlatformDebugLogLevel::kNone;
280
+ };
281
+
282
+ } // namespace node
283
+
284
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
285
+
286
+ #endif // SRC_NODE_PLATFORM_H_
@@ -0,0 +1,111 @@
1
+ #ifndef SRC_NODE_PROCESS_H_
2
+ #define SRC_NODE_PROCESS_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "node_snapshotable.h"
7
+ #include "v8-fast-api-calls.h"
8
+ #include "v8.h"
9
+
10
+ namespace node {
11
+
12
+ class Environment;
13
+ class IsolateData;
14
+ class MemoryTracker;
15
+ class ExternalReferenceRegistry;
16
+ class Realm;
17
+
18
+ void CreateEnvProxyTemplate(IsolateData* isolate_data);
19
+
20
+ // Most of the time, it's best to use `console.error` to write
21
+ // to the process.stderr stream. However, in some cases, such as
22
+ // when debugging the stream.Writable class or the process.nextTick
23
+ // function, it is useful to bypass JavaScript entirely.
24
+ void RawDebug(const v8::FunctionCallbackInfo<v8::Value>& args);
25
+
26
+ v8::MaybeLocal<v8::Value> ProcessEmit(Environment* env,
27
+ std::string_view event,
28
+ v8::Local<v8::Value> message);
29
+
30
+ v8::Maybe<bool> ProcessEmitWarningGeneric(Environment* env,
31
+ std::string_view warning,
32
+ std::string_view type = "",
33
+ std::string_view code = "");
34
+
35
+ template <typename... Args>
36
+ inline v8::Maybe<bool> ProcessEmitWarning(Environment* env,
37
+ const char* fmt,
38
+ Args&&... args);
39
+
40
+ v8::Maybe<void> ProcessEmitWarningSync(Environment* env,
41
+ std::string_view message);
42
+ v8::Maybe<bool> ProcessEmitExperimentalWarning(Environment* env,
43
+ const std::string& warning);
44
+ v8::Maybe<bool> ProcessEmitDeprecationWarning(
45
+ Environment* env,
46
+ const std::string& warning,
47
+ std::string_view deprecation_code);
48
+
49
+ v8::MaybeLocal<v8::Object> CreateProcessObject(Realm* env);
50
+ void PatchProcessObject(const v8::FunctionCallbackInfo<v8::Value>& args);
51
+
52
+ namespace process {
53
+ class BindingData : public SnapshotableObject {
54
+ public:
55
+ struct InternalFieldInfo : public node::InternalFieldInfoBase {
56
+ AliasedBufferIndex hrtime_buffer;
57
+ };
58
+
59
+ static void AddMethods(v8::Isolate* isolate,
60
+ v8::Local<v8::ObjectTemplate> target);
61
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
62
+
63
+ SERIALIZABLE_OBJECT_METHODS()
64
+ SET_BINDING_ID(process_binding_data)
65
+
66
+ BindingData(Realm* realm,
67
+ v8::Local<v8::Object> object,
68
+ InternalFieldInfo* info = nullptr);
69
+
70
+ void MemoryInfo(MemoryTracker* tracker) const override;
71
+ SET_MEMORY_INFO_NAME(BindingData)
72
+ SET_SELF_SIZE(BindingData)
73
+
74
+ static BindingData* FromV8Value(v8::Local<v8::Value> receiver);
75
+ static void NumberImpl(BindingData* receiver);
76
+
77
+ static void FastNumber(v8::Local<v8::Value> unused,
78
+ v8::Local<v8::Value> receiver) {
79
+ NumberImpl(FromV8Value(receiver));
80
+ }
81
+
82
+ static void SlowNumber(const v8::FunctionCallbackInfo<v8::Value>& args);
83
+
84
+ static void BigIntImpl(BindingData* receiver);
85
+
86
+ static void FastBigInt(v8::Local<v8::Value> unused,
87
+ v8::Local<v8::Value> receiver) {
88
+ BigIntImpl(FromV8Value(receiver));
89
+ }
90
+
91
+ static void SlowBigInt(const v8::FunctionCallbackInfo<v8::Value>& args);
92
+
93
+ static void LoadEnvFile(const v8::FunctionCallbackInfo<v8::Value>& args);
94
+
95
+ private:
96
+ // Buffer length in uint32.
97
+ static constexpr size_t kHrTimeBufferLength = 3;
98
+ AliasedUint32Array hrtime_buffer_;
99
+ InternalFieldInfo* internal_field_info_ = nullptr;
100
+
101
+ // These need to be static so that we have their addresses available to
102
+ // register as external references in the snapshot at environment creation
103
+ // time.
104
+ static v8::CFunction fast_number_;
105
+ static v8::CFunction fast_bigint_;
106
+ };
107
+
108
+ } // namespace process
109
+ } // namespace node
110
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
111
+ #endif // SRC_NODE_PROCESS_H_
@@ -0,0 +1,153 @@
1
+ #ifndef SRC_NODE_REALM_INL_H_
2
+ #define SRC_NODE_REALM_INL_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "node_context_data.h"
7
+ #include "node_realm.h"
8
+
9
+ namespace node {
10
+
11
+ inline Realm* Realm::GetCurrent(v8::Isolate* isolate) {
12
+ if (!isolate->InContext()) [[unlikely]] {
13
+ return nullptr;
14
+ }
15
+ v8::HandleScope handle_scope(isolate);
16
+ return GetCurrent(isolate->GetCurrentContext());
17
+ }
18
+
19
+ inline Realm* Realm::GetCurrent(v8::Local<v8::Context> context) {
20
+ if (!ContextEmbedderTag::IsNodeContext(context)) [[unlikely]] {
21
+ return nullptr;
22
+ }
23
+ return static_cast<Realm*>(
24
+ context->GetAlignedPointerFromEmbedderData(ContextEmbedderIndex::kRealm));
25
+ }
26
+
27
+ inline Realm* Realm::GetCurrent(
28
+ const v8::FunctionCallbackInfo<v8::Value>& info) {
29
+ return GetCurrent(info.GetIsolate()->GetCurrentContext());
30
+ }
31
+
32
+ template <typename T>
33
+ inline Realm* Realm::GetCurrent(const v8::PropertyCallbackInfo<T>& info) {
34
+ return GetCurrent(info.GetIsolate()->GetCurrentContext());
35
+ }
36
+
37
+ inline IsolateData* Realm::isolate_data() const {
38
+ return env_->isolate_data();
39
+ }
40
+
41
+ inline Environment* Realm::env() const {
42
+ return env_;
43
+ }
44
+
45
+ inline v8::Isolate* Realm::isolate() const {
46
+ return isolate_;
47
+ }
48
+
49
+ inline Realm::Kind Realm::kind() const {
50
+ return kind_;
51
+ }
52
+
53
+ inline bool Realm::has_run_bootstrapping_code() const {
54
+ return has_run_bootstrapping_code_;
55
+ }
56
+
57
+ // static
58
+ template <typename T, typename U>
59
+ inline T* Realm::GetBindingData(const v8::PropertyCallbackInfo<U>& info) {
60
+ return GetBindingData<T>(info.GetIsolate()->GetCurrentContext());
61
+ }
62
+
63
+ // static
64
+ template <typename T>
65
+ inline T* Realm::GetBindingData(
66
+ const v8::FunctionCallbackInfo<v8::Value>& info) {
67
+ return GetBindingData<T>(info.GetIsolate()->GetCurrentContext());
68
+ }
69
+
70
+ // static
71
+ template <typename T>
72
+ inline T* Realm::GetBindingData(v8::Local<v8::Context> context) {
73
+ Realm* realm = GetCurrent(context);
74
+ return realm->GetBindingData<T>();
75
+ }
76
+
77
+ template <typename T>
78
+ inline T* Realm::GetBindingData() {
79
+ constexpr size_t binding_index = static_cast<size_t>(T::binding_type_int);
80
+ static_assert(binding_index < std::tuple_size_v<BindingDataStore>);
81
+ auto ptr = binding_data_store_[binding_index];
82
+ if (!ptr) [[unlikely]] {
83
+ return nullptr;
84
+ }
85
+ T* result = static_cast<T*>(ptr.get());
86
+ DCHECK_NOT_NULL(result);
87
+ return result;
88
+ }
89
+
90
+ template <typename T, typename... Args>
91
+ inline T* Realm::AddBindingData(v8::Local<v8::Object> target, Args&&... args) {
92
+ // This won't compile if T is not a BaseObject subclass.
93
+ static_assert(std::is_base_of_v<BaseObject, T>);
94
+ // The binding data must be weak so that it won't keep the realm reachable
95
+ // from strong GC roots indefinitely. The wrapper object of binding data
96
+ // should be referenced from JavaScript, thus the binding data should be
97
+ // reachable throughout the lifetime of the realm.
98
+ BaseObjectWeakPtr<T> item =
99
+ MakeWeakBaseObject<T>(this, target, std::forward<Args>(args)...);
100
+ constexpr size_t binding_index = static_cast<size_t>(T::binding_type_int);
101
+ static_assert(binding_index < std::tuple_size_v<BindingDataStore>);
102
+ // Each slot is expected to be assigned only once.
103
+ CHECK(!binding_data_store_[binding_index]);
104
+ binding_data_store_[binding_index] = item;
105
+ return item.get();
106
+ }
107
+
108
+ inline BindingDataStore* Realm::binding_data_store() {
109
+ return &binding_data_store_;
110
+ }
111
+
112
+ template <typename T>
113
+ void Realm::ForEachBaseObject(T&& iterator) const {
114
+ for (auto bo : base_object_list_) {
115
+ iterator(bo);
116
+ }
117
+ }
118
+
119
+ int64_t Realm::base_object_created_after_bootstrap() const {
120
+ return base_object_count_ - base_object_created_by_bootstrap_;
121
+ }
122
+
123
+ int64_t Realm::base_object_count() const {
124
+ return base_object_count_;
125
+ }
126
+
127
+ void Realm::TrackBaseObject(BaseObject* bo) {
128
+ DCHECK_EQ(bo->realm(), this);
129
+ base_object_list_.PushBack(bo);
130
+ ++base_object_count_;
131
+ }
132
+
133
+ CppgcWrapperListNode::CppgcWrapperListNode(CppgcMixin* ptr) : persistent(ptr) {}
134
+
135
+ void Realm::TrackCppgcWrapper(CppgcMixin* handle) {
136
+ DCHECK_EQ(handle->realm(), this);
137
+ cppgc_wrapper_list_.PushFront(new CppgcWrapperListNode(handle));
138
+ }
139
+
140
+ void Realm::UntrackBaseObject(BaseObject* bo) {
141
+ DCHECK_EQ(bo->realm(), this);
142
+ --base_object_count_;
143
+ }
144
+
145
+ bool Realm::PendingCleanup() const {
146
+ return !base_object_list_.IsEmpty();
147
+ }
148
+
149
+ } // namespace node
150
+
151
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
152
+
153
+ #endif // SRC_NODE_REALM_INL_H_