@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
@@ -24,16 +24,18 @@
24
24
 
25
25
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
26
26
 
27
- #include "aliased_buffer.h"
28
- #include "allocated_buffer-inl.h"
27
+ #include "aliased_buffer-inl.h"
29
28
  #include "callback_queue-inl.h"
30
29
  #include "env.h"
31
30
  #include "node.h"
31
+ #include "node_context_data.h"
32
+ #include "node_internals.h"
33
+ #include "node_perf_common.h"
34
+ #include "node_realm-inl.h"
32
35
  #include "util-inl.h"
33
36
  #include "uv.h"
37
+ #include "v8-cppgc.h"
34
38
  #include "v8.h"
35
- #include "node_perf_common.h"
36
- #include "node_context_data.h"
37
39
 
38
40
  #include <cstddef>
39
41
  #include <cstdint>
@@ -50,6 +52,14 @@ inline uv_loop_t* IsolateData::event_loop() const {
50
52
  return event_loop_;
51
53
  }
52
54
 
55
+ inline uint16_t* IsolateData::embedder_id_for_cppgc() const {
56
+ return &(wrapper_data_->cppgc_id);
57
+ }
58
+
59
+ inline uint16_t* IsolateData::embedder_id_for_non_cppgc() const {
60
+ return &(wrapper_data_->non_cppgc_id);
61
+ }
62
+
53
63
  inline NodeArrayBufferAllocator* IsolateData::node_allocator() const {
54
64
  return node_allocator_;
55
65
  }
@@ -58,6 +68,10 @@ inline MultiIsolatePlatform* IsolateData::platform() const {
58
68
  return platform_;
59
69
  }
60
70
 
71
+ inline const SnapshotData* IsolateData::snapshot_data() const {
72
+ return snapshot_data_;
73
+ }
74
+
61
75
  inline void IsolateData::set_worker_context(worker::Worker* context) {
62
76
  CHECK_NULL(worker_context_); // Should be set only once.
63
77
  worker_context_ = context;
@@ -84,7 +98,7 @@ inline AliasedFloat64Array& AsyncHooks::async_ids_stack() {
84
98
  }
85
99
 
86
100
  v8::Local<v8::Array> AsyncHooks::js_execution_async_resources() {
87
- if (UNLIKELY(js_execution_async_resources_.IsEmpty())) {
101
+ if (js_execution_async_resources_.IsEmpty()) [[unlikely]] {
88
102
  js_execution_async_resources_.Reset(
89
103
  env()->isolate(), v8::Array::New(env()->isolate()));
90
104
  }
@@ -93,26 +107,7 @@ v8::Local<v8::Array> AsyncHooks::js_execution_async_resources() {
93
107
 
94
108
  v8::Local<v8::Object> AsyncHooks::native_execution_async_resource(size_t i) {
95
109
  if (i >= native_execution_async_resources_.size()) return {};
96
- return PersistentToLocal::Strong(native_execution_async_resources_[i]);
97
- }
98
-
99
- inline void AsyncHooks::SetJSPromiseHooks(v8::Local<v8::Function> init,
100
- v8::Local<v8::Function> before,
101
- v8::Local<v8::Function> after,
102
- v8::Local<v8::Function> resolve) {
103
- js_promise_hooks_[0].Reset(env()->isolate(), init);
104
- js_promise_hooks_[1].Reset(env()->isolate(), before);
105
- js_promise_hooks_[2].Reset(env()->isolate(), after);
106
- js_promise_hooks_[3].Reset(env()->isolate(), resolve);
107
- for (auto it = contexts_.begin(); it != contexts_.end(); it++) {
108
- if (it->IsEmpty()) {
109
- it = contexts_.erase(it);
110
- it--;
111
- continue;
112
- }
113
- PersistentToLocal::Weak(env()->isolate(), *it)
114
- ->SetPromiseHooks(init, before, after, resolve);
115
- }
110
+ return native_execution_async_resources_[i];
116
111
  }
117
112
 
118
113
  inline v8::Local<v8::String> AsyncHooks::provider_string(int idx) {
@@ -127,177 +122,6 @@ inline Environment* AsyncHooks::env() {
127
122
  return Environment::ForAsyncHooks(this);
128
123
  }
129
124
 
130
- // Remember to keep this code aligned with pushAsyncContext() in JS.
131
- inline void AsyncHooks::push_async_context(double async_id,
132
- double trigger_async_id,
133
- v8::Local<v8::Object> resource) {
134
- // Since async_hooks is experimental, do only perform the check
135
- // when async_hooks is enabled.
136
- if (fields_[kCheck] > 0) {
137
- CHECK_GE(async_id, -1);
138
- CHECK_GE(trigger_async_id, -1);
139
- }
140
-
141
- uint32_t offset = fields_[kStackLength];
142
- if (offset * 2 >= async_ids_stack_.Length())
143
- grow_async_ids_stack();
144
- async_ids_stack_[2 * offset] = async_id_fields_[kExecutionAsyncId];
145
- async_ids_stack_[2 * offset + 1] = async_id_fields_[kTriggerAsyncId];
146
- fields_[kStackLength] += 1;
147
- async_id_fields_[kExecutionAsyncId] = async_id;
148
- async_id_fields_[kTriggerAsyncId] = trigger_async_id;
149
-
150
- #ifdef DEBUG
151
- for (uint32_t i = offset; i < native_execution_async_resources_.size(); i++)
152
- CHECK(native_execution_async_resources_[i].IsEmpty());
153
- #endif
154
-
155
- // When this call comes from JS (as a way of increasing the stack size),
156
- // `resource` will be empty, because JS caches these values anyway, and
157
- // we should avoid creating strong global references that might keep
158
- // these JS resource objects alive longer than necessary.
159
- if (!resource.IsEmpty()) {
160
- native_execution_async_resources_.resize(offset + 1);
161
- native_execution_async_resources_[offset].Reset(env()->isolate(), resource);
162
- }
163
- }
164
-
165
- // Remember to keep this code aligned with popAsyncContext() in JS.
166
- inline bool AsyncHooks::pop_async_context(double async_id) {
167
- // In case of an exception then this may have already been reset, if the
168
- // stack was multiple MakeCallback()'s deep.
169
- if (fields_[kStackLength] == 0) return false;
170
-
171
- // Ask for the async_id to be restored as a check that the stack
172
- // hasn't been corrupted.
173
- // Since async_hooks is experimental, do only perform the check
174
- // when async_hooks is enabled.
175
- if (fields_[kCheck] > 0 && async_id_fields_[kExecutionAsyncId] != async_id) {
176
- fprintf(stderr,
177
- "Error: async hook stack has become corrupted ("
178
- "actual: %.f, expected: %.f)\n",
179
- async_id_fields_.GetValue(kExecutionAsyncId),
180
- async_id);
181
- DumpBacktrace(stderr);
182
- fflush(stderr);
183
- if (!env()->abort_on_uncaught_exception())
184
- exit(1);
185
- fprintf(stderr, "\n");
186
- fflush(stderr);
187
- ABORT_NO_BACKTRACE();
188
- }
189
-
190
- uint32_t offset = fields_[kStackLength] - 1;
191
- async_id_fields_[kExecutionAsyncId] = async_ids_stack_[2 * offset];
192
- async_id_fields_[kTriggerAsyncId] = async_ids_stack_[2 * offset + 1];
193
- fields_[kStackLength] = offset;
194
-
195
- if (LIKELY(offset < native_execution_async_resources_.size() &&
196
- !native_execution_async_resources_[offset].IsEmpty())) {
197
- #ifdef DEBUG
198
- for (uint32_t i = offset + 1;
199
- i < native_execution_async_resources_.size();
200
- i++) {
201
- CHECK(native_execution_async_resources_[i].IsEmpty());
202
- }
203
- #endif
204
- native_execution_async_resources_.resize(offset);
205
- if (native_execution_async_resources_.size() <
206
- native_execution_async_resources_.capacity() / 2 &&
207
- native_execution_async_resources_.size() > 16) {
208
- native_execution_async_resources_.shrink_to_fit();
209
- }
210
- }
211
-
212
- if (UNLIKELY(js_execution_async_resources()->Length() > offset)) {
213
- v8::HandleScope handle_scope(env()->isolate());
214
- USE(js_execution_async_resources()->Set(
215
- env()->context(),
216
- env()->length_string(),
217
- v8::Integer::NewFromUnsigned(env()->isolate(), offset)));
218
- }
219
-
220
- return fields_[kStackLength] > 0;
221
- }
222
-
223
- void AsyncHooks::clear_async_id_stack() {
224
- v8::Isolate* isolate = env()->isolate();
225
- v8::HandleScope handle_scope(isolate);
226
- if (!js_execution_async_resources_.IsEmpty()) {
227
- USE(PersistentToLocal::Strong(js_execution_async_resources_)->Set(
228
- env()->context(),
229
- env()->length_string(),
230
- v8::Integer::NewFromUnsigned(isolate, 0)));
231
- }
232
- native_execution_async_resources_.clear();
233
- native_execution_async_resources_.shrink_to_fit();
234
-
235
- async_id_fields_[kExecutionAsyncId] = 0;
236
- async_id_fields_[kTriggerAsyncId] = 0;
237
- fields_[kStackLength] = 0;
238
- }
239
-
240
- inline void AsyncHooks::AddContext(v8::Local<v8::Context> ctx) {
241
- ctx->SetPromiseHooks(
242
- js_promise_hooks_[0].IsEmpty() ?
243
- v8::Local<v8::Function>() :
244
- PersistentToLocal::Strong(js_promise_hooks_[0]),
245
- js_promise_hooks_[1].IsEmpty() ?
246
- v8::Local<v8::Function>() :
247
- PersistentToLocal::Strong(js_promise_hooks_[1]),
248
- js_promise_hooks_[2].IsEmpty() ?
249
- v8::Local<v8::Function>() :
250
- PersistentToLocal::Strong(js_promise_hooks_[2]),
251
- js_promise_hooks_[3].IsEmpty() ?
252
- v8::Local<v8::Function>() :
253
- PersistentToLocal::Strong(js_promise_hooks_[3]));
254
-
255
- size_t id = contexts_.size();
256
- contexts_.resize(id + 1);
257
- contexts_[id].Reset(env()->isolate(), ctx);
258
- contexts_[id].SetWeak();
259
- }
260
-
261
- inline void AsyncHooks::RemoveContext(v8::Local<v8::Context> ctx) {
262
- v8::Isolate* isolate = env()->isolate();
263
- v8::HandleScope handle_scope(isolate);
264
- for (auto it = contexts_.begin(); it != contexts_.end(); it++) {
265
- if (it->IsEmpty()) {
266
- it = contexts_.erase(it);
267
- it--;
268
- continue;
269
- }
270
- v8::Local<v8::Context> saved_context =
271
- PersistentToLocal::Weak(isolate, *it);
272
- if (saved_context == ctx) {
273
- it->Reset();
274
- contexts_.erase(it);
275
- break;
276
- }
277
- }
278
- }
279
-
280
- // The DefaultTriggerAsyncIdScope(AsyncWrap*) constructor is defined in
281
- // async_wrap-inl.h to avoid a circular dependency.
282
-
283
- inline AsyncHooks::DefaultTriggerAsyncIdScope ::DefaultTriggerAsyncIdScope(
284
- Environment* env, double default_trigger_async_id)
285
- : async_hooks_(env->async_hooks()) {
286
- if (env->async_hooks()->fields()[AsyncHooks::kCheck] > 0) {
287
- CHECK_GE(default_trigger_async_id, 0);
288
- }
289
-
290
- old_default_trigger_async_id_ =
291
- async_hooks_->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId];
292
- async_hooks_->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId] =
293
- default_trigger_async_id;
294
- }
295
-
296
- inline AsyncHooks::DefaultTriggerAsyncIdScope ::~DefaultTriggerAsyncIdScope() {
297
- async_hooks_->async_id_fields()[AsyncHooks::kDefaultTriggerAsyncId] =
298
- old_default_trigger_async_id_;
299
- }
300
-
301
125
  Environment* Environment::ForAsyncHooks(AsyncHooks* hooks) {
302
126
  return ContainerOf(&Environment::async_hooks_, hooks);
303
127
  }
@@ -350,41 +174,15 @@ inline bool TickInfo::has_rejection_to_warn() const {
350
174
  return fields_[kHasRejectionToWarn] == 1;
351
175
  }
352
176
 
353
- inline void Environment::AssignToContext(v8::Local<v8::Context> context,
354
- const ContextInfo& info) {
355
- context->SetAlignedPointerInEmbedderData(
356
- ContextEmbedderIndex::kEnvironment, this);
357
- // Used by Environment::GetCurrent to know that we are on a node context.
358
- context->SetAlignedPointerInEmbedderData(
359
- ContextEmbedderIndex::kContextTag, Environment::kNodeContextTagPtr);
360
- // Used to retrieve bindings
361
- context->SetAlignedPointerInEmbedderData(
362
- ContextEmbedderIndex::kBindingListIndex, &(this->bindings_));
363
-
364
- #if HAVE_INSPECTOR
365
- inspector_agent()->ContextCreated(context, info);
366
- #endif // HAVE_INSPECTOR
367
-
368
- this->async_hooks()->AddContext(context);
369
- }
370
-
371
177
  inline Environment* Environment::GetCurrent(v8::Isolate* isolate) {
372
- if (UNLIKELY(!isolate->InContext())) return nullptr;
178
+ if (!isolate->InContext()) [[unlikely]]
179
+ return nullptr;
373
180
  v8::HandleScope handle_scope(isolate);
374
181
  return GetCurrent(isolate->GetCurrentContext());
375
182
  }
376
183
 
377
184
  inline Environment* Environment::GetCurrent(v8::Local<v8::Context> context) {
378
- if (UNLIKELY(context.IsEmpty())) {
379
- return nullptr;
380
- }
381
- if (UNLIKELY(context->GetNumberOfEmbedderDataFields() <=
382
- ContextEmbedderIndex::kContextTag)) {
383
- return nullptr;
384
- }
385
- if (UNLIKELY(context->GetAlignedPointerFromEmbedderData(
386
- ContextEmbedderIndex::kContextTag) !=
387
- Environment::kNodeContextTagPtr)) {
185
+ if (!ContextEmbedderTag::IsNodeContext(context)) [[unlikely]] {
388
186
  return nullptr;
389
187
  }
390
188
  return static_cast<Environment*>(
@@ -403,50 +201,17 @@ inline Environment* Environment::GetCurrent(
403
201
  return GetCurrent(info.GetIsolate()->GetCurrentContext());
404
202
  }
405
203
 
406
- template <typename T, typename U>
407
- inline T* Environment::GetBindingData(const v8::PropertyCallbackInfo<U>& info) {
408
- return GetBindingData<T>(info.GetIsolate()->GetCurrentContext());
409
- }
410
-
411
- template <typename T>
412
- inline T* Environment::GetBindingData(
413
- const v8::FunctionCallbackInfo<v8::Value>& info) {
414
- return GetBindingData<T>(info.GetIsolate()->GetCurrentContext());
415
- }
416
-
417
- template <typename T>
418
- inline T* Environment::GetBindingData(v8::Local<v8::Context> context) {
419
- BindingDataStore* map = static_cast<BindingDataStore*>(
420
- context->GetAlignedPointerFromEmbedderData(
421
- ContextEmbedderIndex::kBindingListIndex));
422
- DCHECK_NOT_NULL(map);
423
- auto it = map->find(T::type_name);
424
- if (UNLIKELY(it == map->end())) return nullptr;
425
- T* result = static_cast<T*>(it->second.get());
426
- DCHECK_NOT_NULL(result);
427
- DCHECK_EQ(result->env(), GetCurrent(context));
428
- return result;
204
+ inline v8::Isolate* Environment::isolate() const {
205
+ return isolate_;
429
206
  }
430
207
 
431
- template <typename T>
432
- inline T* Environment::AddBindingData(
433
- v8::Local<v8::Context> context,
434
- v8::Local<v8::Object> target) {
435
- DCHECK_EQ(GetCurrent(context), this);
436
- // This won't compile if T is not a BaseObject subclass.
437
- BaseObjectPtr<T> item = MakeDetachedBaseObject<T>(this, target);
438
- BindingDataStore* map = static_cast<BindingDataStore*>(
439
- context->GetAlignedPointerFromEmbedderData(
440
- ContextEmbedderIndex::kBindingListIndex));
441
- DCHECK_NOT_NULL(map);
442
- auto result = map->emplace(T::type_name, item);
443
- CHECK(result.second);
444
- DCHECK_EQ(GetBindingData<T>(context), item.get());
445
- return item.get();
208
+ inline cppgc::AllocationHandle& Environment::cppgc_allocation_handle() const {
209
+ return isolate_->GetCppHeap()->GetAllocationHandle();
446
210
  }
447
211
 
448
- inline v8::Isolate* Environment::isolate() const {
449
- return isolate_;
212
+ inline v8::ExternalMemoryAccounter* Environment::external_memory_accounter()
213
+ const {
214
+ return external_memory_accounter_;
450
215
  }
451
216
 
452
217
  inline Environment* Environment::from_timer_handle(uv_timer_t* handle) {
@@ -470,12 +235,6 @@ inline uv_idle_t* Environment::immediate_idle_handle() {
470
235
  return &immediate_idle_handle_;
471
236
  }
472
237
 
473
- inline void Environment::RegisterHandleCleanup(uv_handle_t* handle,
474
- HandleCleanupCb cb,
475
- void* arg) {
476
- handle_cleanup_queue_.push_back(HandleCleanup{handle, cb, arg});
477
- }
478
-
479
238
  template <typename T, typename OnCloseCallback>
480
239
  inline void Environment::CloseHandle(T* handle, OnCloseCallback callback) {
481
240
  handle_cleanup_waiting_++;
@@ -511,16 +270,6 @@ inline uv_loop_t* Environment::event_loop() const {
511
270
  return isolate_data()->event_loop();
512
271
  }
513
272
 
514
- inline void Environment::TryLoadAddon(
515
- const char* filename,
516
- int flags,
517
- const std::function<bool(binding::DLib*)>& was_loaded) {
518
- loaded_addons_.emplace_back(filename, flags);
519
- if (!was_loaded(&loaded_addons_.back())) {
520
- loaded_addons_.pop_back();
521
- }
522
- }
523
-
524
273
  #if HAVE_INSPECTOR
525
274
  inline bool Environment::is_in_inspector_console_call() const {
526
275
  return is_in_inspector_console_call_;
@@ -539,10 +288,18 @@ inline ImmediateInfo* Environment::immediate_info() {
539
288
  return &immediate_info_;
540
289
  }
541
290
 
291
+ inline AliasedInt32Array& Environment::timeout_info() {
292
+ return timeout_info_;
293
+ }
294
+
542
295
  inline TickInfo* Environment::tick_info() {
543
296
  return &tick_info_;
544
297
  }
545
298
 
299
+ inline permission::Permission* Environment::permission() {
300
+ return &permission_;
301
+ }
302
+
546
303
  inline uint64_t Environment::timer_base() const {
547
304
  return timer_base_;
548
305
  }
@@ -579,6 +336,29 @@ inline bool Environment::force_context_aware() const {
579
336
  return options_->force_context_aware;
580
337
  }
581
338
 
339
+ inline void Environment::set_exiting(bool value) {
340
+ exit_info_[kExiting] = value ? 1 : 0;
341
+ }
342
+
343
+ inline bool Environment::exiting() const {
344
+ return exit_info_[kExiting] == 1;
345
+ }
346
+
347
+ inline ExitCode Environment::exit_code(const ExitCode default_code) const {
348
+ return exit_info_[kHasExitCode] == 0
349
+ ? default_code
350
+ : static_cast<ExitCode>(exit_info_[kExitCode]);
351
+ }
352
+
353
+ inline void Environment::set_exit_code(const ExitCode code) {
354
+ exit_info_[kExitCode] = static_cast<int>(code);
355
+ exit_info_[kHasExitCode] = 1;
356
+ }
357
+
358
+ inline AliasedInt32Array& Environment::exit_info() {
359
+ return exit_info_;
360
+ }
361
+
582
362
  inline void Environment::set_abort_on_uncaught_exception(bool value) {
583
363
  options_->abort_on_uncaught_exception = value;
584
364
  }
@@ -591,16 +371,6 @@ inline AliasedInt32Array& Environment::stream_base_state() {
591
371
  return stream_base_state_;
592
372
  }
593
373
 
594
- inline uint32_t Environment::get_next_module_id() {
595
- return module_id_counter_++;
596
- }
597
- inline uint32_t Environment::get_next_script_id() {
598
- return script_id_counter_++;
599
- }
600
- inline uint32_t Environment::get_next_function_id() {
601
- return function_id_counter_++;
602
- }
603
-
604
374
  ShouldNotAbortOnUncaughtScope::ShouldNotAbortOnUncaughtScope(
605
375
  Environment* env)
606
376
  : env_(env) {
@@ -634,6 +404,18 @@ inline std::vector<double>* Environment::destroy_async_id_list() {
634
404
  return &destroy_async_id_list_;
635
405
  }
636
406
 
407
+ inline builtins::BuiltinLoader* Environment::builtin_loader() {
408
+ return &builtin_loader_;
409
+ }
410
+
411
+ inline const EmbedderPreloadCallback& Environment::embedder_preload() const {
412
+ return embedder_preload_;
413
+ }
414
+
415
+ inline void Environment::set_embedder_preload(EmbedderPreloadCallback fn) {
416
+ embedder_preload_ = std::move(fn);
417
+ }
418
+
637
419
  inline double Environment::new_async_id() {
638
420
  async_hooks()->async_id_fields()[AsyncHooks::kAsyncIdCounter] += 1;
639
421
  return async_hooks()->async_id_fields()[AsyncHooks::kAsyncIdCounter];
@@ -656,6 +438,10 @@ inline double Environment::get_default_trigger_async_id() {
656
438
  return default_trigger_async_id;
657
439
  }
658
440
 
441
+ inline int64_t Environment::stack_trace_limit() const {
442
+ return isolate_data_->options()->stack_trace_limit;
443
+ }
444
+
659
445
  inline std::shared_ptr<EnvironmentOptions> Environment::options() {
660
446
  return options_;
661
447
  }
@@ -672,20 +458,14 @@ inline const std::string& Environment::exec_path() const {
672
458
  return exec_path_;
673
459
  }
674
460
 
675
- inline std::string Environment::GetCwd() {
676
- char cwd[PATH_MAX_BYTES];
677
- size_t size = PATH_MAX_BYTES;
678
- const int err = uv_cwd(cwd, &size);
679
-
680
- if (err == 0) {
681
- CHECK_GT(size, 0);
682
- return cwd;
683
- }
461
+ inline CompileCacheHandler* Environment::compile_cache_handler() {
462
+ auto* result = compile_cache_handler_.get();
463
+ DCHECK_NOT_NULL(result);
464
+ return result;
465
+ }
684
466
 
685
- // This can fail if the cwd is deleted. In that case, fall back to
686
- // exec_path.
687
- const std::string& exec_path = exec_path_;
688
- return exec_path.substr(0, exec_path.find_last_of(kPathSeparator));
467
+ inline bool Environment::use_compile_cache() const {
468
+ return compile_cache_handler_.get() != nullptr;
689
469
  }
690
470
 
691
471
  #if HAVE_INSPECTOR
@@ -788,11 +568,6 @@ inline std::shared_ptr<PerIsolateOptions> IsolateData::options() {
788
568
  return options_;
789
569
  }
790
570
 
791
- inline void IsolateData::set_options(
792
- std::shared_ptr<PerIsolateOptions> options) {
793
- options_ = std::move(options);
794
- }
795
-
796
571
  template <typename Fn>
797
572
  void Environment::SetImmediate(Fn&& cb, CallbackFlags::Flags flags) {
798
573
  auto callback = native_immediates_.CreateCallback(std::move(cb), flags);
@@ -839,15 +614,7 @@ inline void Environment::set_can_call_into_js(bool can_call_into_js) {
839
614
  }
840
615
 
841
616
  inline bool Environment::has_run_bootstrapping_code() const {
842
- return has_run_bootstrapping_code_;
843
- }
844
-
845
- inline void Environment::DoneBootstrapping() {
846
- has_run_bootstrapping_code_ = true;
847
- // This adjusts the return value of base_object_created_after_bootstrap() so
848
- // that tests that check the count do not have to account for internally
849
- // created BaseObjects.
850
- base_object_created_by_bootstrap_ = base_object_count_;
617
+ return principal_realm_->has_run_bootstrapping_code();
851
618
  }
852
619
 
853
620
  inline bool Environment::has_serialized_options() const {
@@ -879,6 +646,16 @@ inline bool Environment::owns_inspector() const {
879
646
  return flags_ & EnvironmentFlags::kOwnsInspector;
880
647
  }
881
648
 
649
+ inline bool Environment::should_create_inspector() const {
650
+ return (flags_ & EnvironmentFlags::kNoCreateInspector) == 0 &&
651
+ !(options_->test_runner && options_->test_isolation == "process") &&
652
+ !options_->watch_mode;
653
+ }
654
+
655
+ inline bool Environment::should_wait_for_inspector_frontend() const {
656
+ return (flags_ & EnvironmentFlags::kNoWaitForInspectorFrontend) == 0;
657
+ }
658
+
882
659
  inline bool Environment::tracks_unmanaged_fds() const {
883
660
  return flags_ & EnvironmentFlags::kTrackUnmanagedFds;
884
661
  }
@@ -892,6 +669,20 @@ inline bool Environment::no_global_search_paths() const {
892
669
  !options_->global_search_paths;
893
670
  }
894
671
 
672
+ inline bool Environment::should_start_debug_signal_handler() const {
673
+ return ((flags_ & EnvironmentFlags::kNoStartDebugSignalHandler) == 0) &&
674
+ !options_->disable_sigusr1;
675
+ }
676
+
677
+ inline bool Environment::no_browser_globals() const {
678
+ // configure --no-browser-globals
679
+ #ifdef NODE_NO_BROWSER_GLOBALS
680
+ return true;
681
+ #else
682
+ return flags_ & EnvironmentFlags::kNoBrowserGlobals;
683
+ #endif
684
+ }
685
+
895
686
  bool Environment::filehandle_close_warning() const {
896
687
  return emit_filehandle_warning_;
897
688
  }
@@ -912,6 +703,10 @@ inline uint64_t Environment::thread_id() const {
912
703
  return thread_id_;
913
704
  }
914
705
 
706
+ inline std::string_view Environment::thread_name() const {
707
+ return thread_name_;
708
+ }
709
+
915
710
  inline worker::Worker* Environment::worker_context() const {
916
711
  return isolate_data()->worker_context();
917
712
  }
@@ -929,15 +724,6 @@ inline void Environment::ForEachWorker(Fn&& iterator) {
929
724
  for (worker::Worker* w : sub_worker_contexts_) iterator(w);
930
725
  }
931
726
 
932
- inline void Environment::add_refs(int64_t diff) {
933
- task_queues_async_refs_ += diff;
934
- CHECK_GE(task_queues_async_refs_, 0);
935
- if (task_queues_async_refs_ == 0)
936
- uv_unref(reinterpret_cast<uv_handle_t*>(&task_queues_async_));
937
- else
938
- uv_ref(reinterpret_cast<uv_handle_t*>(&task_queues_async_));
939
- }
940
-
941
727
  inline bool Environment::is_stopping() const {
942
728
  return is_stopping_.load();
943
729
  }
@@ -972,32 +758,10 @@ inline IsolateData* Environment::isolate_data() const {
972
758
  return isolate_data_;
973
759
  }
974
760
 
975
- inline uv_buf_t Environment::allocate_managed_buffer(
976
- const size_t suggested_size) {
977
- NoArrayBufferZeroFillScope no_zero_fill_scope(isolate_data());
978
- std::unique_ptr<v8::BackingStore> bs =
979
- v8::ArrayBuffer::NewBackingStore(isolate(), suggested_size);
980
- uv_buf_t buf = uv_buf_init(static_cast<char*>(bs->Data()), bs->ByteLength());
981
- released_allocated_buffers()->emplace(buf.base, std::move(bs));
982
- return buf;
983
- }
984
-
985
- inline std::unique_ptr<v8::BackingStore> Environment::release_managed_buffer(
986
- const uv_buf_t& buf) {
987
- std::unique_ptr<v8::BackingStore> bs;
988
- if (buf.base != nullptr) {
989
- auto map = released_allocated_buffers();
990
- auto it = map->find(buf.base);
991
- CHECK_NE(it, map->end());
992
- bs = std::move(it->second);
993
- map->erase(it);
994
- }
995
- return bs;
996
- }
997
-
998
- std::unordered_map<char*, std::unique_ptr<v8::BackingStore>>*
999
- Environment::released_allocated_buffers() {
1000
- return &released_allocated_buffers_;
761
+ template <typename T>
762
+ inline void Environment::ForEachRealm(T&& iterator) const {
763
+ // TODO(legendecas): iterate over more realms bound to the environment.
764
+ iterator(principal_realm());
1001
765
  }
1002
766
 
1003
767
  inline void Environment::ThrowError(const char* errmsg) {
@@ -1013,10 +777,17 @@ inline void Environment::ThrowRangeError(const char* errmsg) {
1013
777
  }
1014
778
 
1015
779
  inline void Environment::ThrowError(
1016
- v8::Local<v8::Value> (*fun)(v8::Local<v8::String>),
780
+ v8::Local<v8::Value> (*fun)(v8::Local<v8::String>, v8::Local<v8::Value>),
1017
781
  const char* errmsg) {
1018
782
  v8::HandleScope handle_scope(isolate());
1019
- isolate()->ThrowException(fun(OneByteString(isolate(), errmsg)));
783
+ isolate()->ThrowException(fun(OneByteString(isolate(), errmsg), {}));
784
+ }
785
+
786
+ inline void Environment::ThrowStdErrException(std::error_code error_code,
787
+ const char* syscall,
788
+ const char* path) {
789
+ ThrowErrnoException(
790
+ error_code.value(), syscall, error_code.message().c_str(), path);
1020
791
  }
1021
792
 
1022
793
  inline void Environment::ThrowErrnoException(int errorno,
@@ -1036,193 +807,23 @@ inline void Environment::ThrowUVException(int errorno,
1036
807
  UVException(isolate(), errorno, syscall, message, path, dest));
1037
808
  }
1038
809
 
1039
- inline v8::Local<v8::FunctionTemplate>
1040
- Environment::NewFunctionTemplate(v8::FunctionCallback callback,
1041
- v8::Local<v8::Signature> signature,
1042
- v8::ConstructorBehavior behavior,
1043
- v8::SideEffectType side_effect_type) {
1044
- return v8::FunctionTemplate::New(isolate(), callback, v8::Local<v8::Value>(),
1045
- signature, 0, behavior, side_effect_type);
1046
- }
1047
-
1048
- inline void Environment::SetMethod(v8::Local<v8::Object> that,
1049
- const char* name,
1050
- v8::FunctionCallback callback) {
1051
- v8::Local<v8::Context> context = isolate()->GetCurrentContext();
1052
- v8::Local<v8::Function> function =
1053
- NewFunctionTemplate(callback, v8::Local<v8::Signature>(),
1054
- v8::ConstructorBehavior::kThrow,
1055
- v8::SideEffectType::kHasSideEffect)
1056
- ->GetFunction(context)
1057
- .ToLocalChecked();
1058
- // kInternalized strings are created in the old space.
1059
- const v8::NewStringType type = v8::NewStringType::kInternalized;
1060
- v8::Local<v8::String> name_string =
1061
- v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked();
1062
- that->Set(context, name_string, function).Check();
1063
- function->SetName(name_string); // NODE_SET_METHOD() compatibility.
1064
- }
1065
-
1066
- inline void Environment::SetMethodNoSideEffect(v8::Local<v8::Object> that,
1067
- const char* name,
1068
- v8::FunctionCallback callback) {
1069
- v8::Local<v8::Context> context = isolate()->GetCurrentContext();
1070
- v8::Local<v8::Function> function =
1071
- NewFunctionTemplate(callback, v8::Local<v8::Signature>(),
1072
- v8::ConstructorBehavior::kThrow,
1073
- v8::SideEffectType::kHasNoSideEffect)
1074
- ->GetFunction(context)
1075
- .ToLocalChecked();
1076
- // kInternalized strings are created in the old space.
1077
- const v8::NewStringType type = v8::NewStringType::kInternalized;
1078
- v8::Local<v8::String> name_string =
1079
- v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked();
1080
- that->Set(context, name_string, function).Check();
1081
- function->SetName(name_string); // NODE_SET_METHOD() compatibility.
1082
- }
1083
-
1084
- inline void Environment::SetProtoMethod(v8::Local<v8::FunctionTemplate> that,
1085
- const char* name,
1086
- v8::FunctionCallback callback) {
1087
- v8::Local<v8::Signature> signature = v8::Signature::New(isolate(), that);
1088
- v8::Local<v8::FunctionTemplate> t =
1089
- NewFunctionTemplate(callback, signature, v8::ConstructorBehavior::kThrow,
1090
- v8::SideEffectType::kHasSideEffect);
1091
- // kInternalized strings are created in the old space.
1092
- const v8::NewStringType type = v8::NewStringType::kInternalized;
1093
- v8::Local<v8::String> name_string =
1094
- v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked();
1095
- that->PrototypeTemplate()->Set(name_string, t);
1096
- t->SetClassName(name_string); // NODE_SET_PROTOTYPE_METHOD() compatibility.
1097
- }
1098
-
1099
- inline void Environment::SetProtoMethodNoSideEffect(
1100
- v8::Local<v8::FunctionTemplate> that,
1101
- const char* name,
1102
- v8::FunctionCallback callback) {
1103
- v8::Local<v8::Signature> signature = v8::Signature::New(isolate(), that);
1104
- v8::Local<v8::FunctionTemplate> t =
1105
- NewFunctionTemplate(callback, signature, v8::ConstructorBehavior::kThrow,
1106
- v8::SideEffectType::kHasNoSideEffect);
1107
- // kInternalized strings are created in the old space.
1108
- const v8::NewStringType type = v8::NewStringType::kInternalized;
1109
- v8::Local<v8::String> name_string =
1110
- v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked();
1111
- that->PrototypeTemplate()->Set(name_string, t);
1112
- t->SetClassName(name_string); // NODE_SET_PROTOTYPE_METHOD() compatibility.
1113
- }
1114
-
1115
- inline void Environment::SetInstanceMethod(v8::Local<v8::FunctionTemplate> that,
1116
- const char* name,
1117
- v8::FunctionCallback callback) {
1118
- v8::Local<v8::Signature> signature = v8::Signature::New(isolate(), that);
1119
- v8::Local<v8::FunctionTemplate> t =
1120
- NewFunctionTemplate(callback, signature, v8::ConstructorBehavior::kThrow,
1121
- v8::SideEffectType::kHasSideEffect);
1122
- // kInternalized strings are created in the old space.
1123
- const v8::NewStringType type = v8::NewStringType::kInternalized;
1124
- v8::Local<v8::String> name_string =
1125
- v8::String::NewFromUtf8(isolate(), name, type).ToLocalChecked();
1126
- that->InstanceTemplate()->Set(name_string, t);
1127
- t->SetClassName(name_string);
1128
- }
1129
-
1130
- inline void Environment::SetConstructorFunction(
1131
- v8::Local<v8::Object> that,
1132
- const char* name,
1133
- v8::Local<v8::FunctionTemplate> tmpl,
1134
- SetConstructorFunctionFlag flag) {
1135
- SetConstructorFunction(that, OneByteString(isolate(), name), tmpl, flag);
1136
- }
1137
-
1138
- inline void Environment::SetConstructorFunction(
1139
- v8::Local<v8::Object> that,
1140
- v8::Local<v8::String> name,
1141
- v8::Local<v8::FunctionTemplate> tmpl,
1142
- SetConstructorFunctionFlag flag) {
1143
- if (LIKELY(flag == SetConstructorFunctionFlag::SET_CLASS_NAME))
1144
- tmpl->SetClassName(name);
1145
- that->Set(
1146
- context(),
1147
- name,
1148
- tmpl->GetFunction(context()).ToLocalChecked()).Check();
1149
- }
1150
-
1151
- void Environment::AddCleanupHook(CleanupCallback fn, void* arg) {
1152
- auto insertion_info = cleanup_hooks_.emplace(CleanupHookCallback {
1153
- fn, arg, cleanup_hook_counter_++
1154
- });
1155
- // Make sure there was no existing element with these values.
1156
- CHECK_EQ(insertion_info.second, true);
1157
- }
1158
-
1159
- void Environment::RemoveCleanupHook(CleanupCallback fn, void* arg) {
1160
- CleanupHookCallback search { fn, arg, 0 };
1161
- cleanup_hooks_.erase(search);
1162
- }
1163
-
1164
- size_t CleanupHookCallback::Hash::operator()(
1165
- const CleanupHookCallback& cb) const {
1166
- return std::hash<void*>()(cb.arg_);
1167
- }
1168
-
1169
- bool CleanupHookCallback::Equal::operator()(
1170
- const CleanupHookCallback& a, const CleanupHookCallback& b) const {
1171
- return a.fn_ == b.fn_ && a.arg_ == b.arg_;
1172
- }
1173
-
1174
- BaseObject* CleanupHookCallback::GetBaseObject() const {
1175
- if (fn_ == BaseObject::DeleteMe)
1176
- return static_cast<BaseObject*>(arg_);
1177
- else
1178
- return nullptr;
1179
- }
1180
-
1181
- template <typename T>
1182
- void Environment::ForEachBaseObject(T&& iterator) {
1183
- for (const auto& hook : cleanup_hooks_) {
1184
- BaseObject* obj = hook.GetBaseObject();
1185
- if (obj != nullptr)
1186
- iterator(obj);
1187
- }
1188
- }
1189
-
1190
- template <typename T>
1191
- void Environment::ForEachBindingData(T&& iterator) {
1192
- BindingDataStore* map = static_cast<BindingDataStore*>(
1193
- context()->GetAlignedPointerFromEmbedderData(
1194
- ContextEmbedderIndex::kBindingListIndex));
1195
- DCHECK_NOT_NULL(map);
1196
- for (auto& it : *map) {
1197
- iterator(it.first, it.second);
1198
- }
1199
- }
1200
-
1201
- void Environment::modify_base_object_count(int64_t delta) {
1202
- base_object_count_ += delta;
1203
- }
1204
-
1205
- int64_t Environment::base_object_created_after_bootstrap() const {
1206
- return base_object_count_ - base_object_created_by_bootstrap_;
810
+ void Environment::AddCleanupHook(CleanupQueue::Callback fn, void* arg) {
811
+ cleanup_queue_.Add(fn, arg);
1207
812
  }
1208
813
 
1209
- int64_t Environment::base_object_count() const {
1210
- return base_object_count_;
1211
- }
1212
-
1213
- void Environment::set_main_utf16(std::unique_ptr<v8::String::Value> str) {
1214
- CHECK(!main_utf16_);
1215
- main_utf16_ = std::move(str);
814
+ void Environment::RemoveCleanupHook(CleanupQueue::Callback fn, void* arg) {
815
+ cleanup_queue_.Remove(fn, arg);
1216
816
  }
1217
817
 
1218
818
  void Environment::set_process_exit_handler(
1219
- std::function<void(Environment*, int)>&& handler) {
819
+ std::function<void(Environment*, ExitCode)>&& handler) {
1220
820
  process_exit_handler_ = std::move(handler);
1221
821
  }
1222
822
 
1223
823
  #define VP(PropertyName, StringValue) V(v8::Private, PropertyName)
1224
824
  #define VY(PropertyName, StringValue) V(v8::Symbol, PropertyName)
1225
825
  #define VS(PropertyName, StringValue) V(v8::String, PropertyName)
826
+ #define VR(PropertyName, TypeName) V(v8::Private, per_realm_##PropertyName)
1226
827
  #define V(TypeName, PropertyName) \
1227
828
  inline \
1228
829
  v8::Local<TypeName> IsolateData::PropertyName() const { \
@@ -1231,11 +832,26 @@ void Environment::set_process_exit_handler(
1231
832
  PER_ISOLATE_PRIVATE_SYMBOL_PROPERTIES(VP)
1232
833
  PER_ISOLATE_SYMBOL_PROPERTIES(VY)
1233
834
  PER_ISOLATE_STRING_PROPERTIES(VS)
835
+ PER_REALM_STRONG_PERSISTENT_VALUES(VR)
1234
836
  #undef V
837
+ #undef VR
1235
838
  #undef VS
1236
839
  #undef VY
1237
840
  #undef VP
1238
841
 
842
+ #define VM(PropertyName) V(PropertyName##_binding_template, v8::ObjectTemplate)
843
+ #define V(PropertyName, TypeName) \
844
+ inline v8::Local<TypeName> IsolateData::PropertyName() const { \
845
+ return PropertyName##_.Get(isolate_); \
846
+ } \
847
+ inline void IsolateData::set_##PropertyName(v8::Local<TypeName> value) { \
848
+ PropertyName##_.Set(isolate_, value); \
849
+ }
850
+ PER_ISOLATE_TEMPLATE_PROPERTIES(V)
851
+ NODE_BINDINGS_WITH_PER_ISOLATE_INIT(VM)
852
+ #undef V
853
+ #undef VM
854
+
1239
855
  #define VP(PropertyName, StringValue) V(v8::Private, PropertyName)
1240
856
  #define VY(PropertyName, StringValue) V(v8::Symbol, PropertyName)
1241
857
  #define VS(PropertyName, StringValue) V(v8::String, PropertyName)
@@ -1251,19 +867,61 @@ void Environment::set_process_exit_handler(
1251
867
  #undef VY
1252
868
  #undef VP
1253
869
 
1254
- #define V(PropertyName, TypeName) \
1255
- inline v8::Local<TypeName> Environment::PropertyName() const { \
1256
- return PersistentToLocal::Strong(PropertyName ## _); \
1257
- } \
1258
- inline void Environment::set_ ## PropertyName(v8::Local<TypeName> value) { \
1259
- PropertyName ## _.Reset(isolate(), value); \
870
+ #define V(PropertyName, TypeName) \
871
+ inline v8::Local<TypeName> Environment::PropertyName() const { \
872
+ return isolate_data()->PropertyName(); \
873
+ } \
874
+ inline void Environment::set_##PropertyName(v8::Local<TypeName> value) { \
875
+ DCHECK(isolate_data()->PropertyName().IsEmpty()); \
876
+ isolate_data()->set_##PropertyName(value); \
1260
877
  }
1261
- ENVIRONMENT_STRONG_PERSISTENT_TEMPLATES(V)
1262
- ENVIRONMENT_STRONG_PERSISTENT_VALUES(V)
878
+ PER_ISOLATE_TEMPLATE_PROPERTIES(V)
879
+ #undef V
880
+
881
+ #define V(PropertyName, TypeName) \
882
+ inline v8::Local<TypeName> Environment::PropertyName() const { \
883
+ DCHECK_NOT_NULL(principal_realm_); \
884
+ return principal_realm_->PropertyName(); \
885
+ } \
886
+ inline void Environment::set_##PropertyName(v8::Local<TypeName> value) { \
887
+ DCHECK_NOT_NULL(principal_realm_); \
888
+ principal_realm_->set_##PropertyName(value); \
889
+ }
890
+ PER_REALM_STRONG_PERSISTENT_VALUES(V)
1263
891
  #undef V
1264
892
 
1265
893
  v8::Local<v8::Context> Environment::context() const {
1266
- return PersistentToLocal::Strong(context_);
894
+ return principal_realm()->context();
895
+ }
896
+
897
+ Realm* Environment::principal_realm() const {
898
+ return principal_realm_.get();
899
+ }
900
+
901
+ inline void Environment::set_heap_snapshot_near_heap_limit(uint32_t limit) {
902
+ heap_snapshot_near_heap_limit_ = limit;
903
+ }
904
+
905
+ inline bool Environment::is_in_heapsnapshot_heap_limit_callback() const {
906
+ return is_in_heapsnapshot_heap_limit_callback_;
907
+ }
908
+
909
+ inline bool Environment::report_exclude_env() const {
910
+ return options_->report_exclude_env;
911
+ }
912
+
913
+ inline void Environment::AddHeapSnapshotNearHeapLimitCallback() {
914
+ DCHECK(!heapsnapshot_near_heap_limit_callback_added_);
915
+ heapsnapshot_near_heap_limit_callback_added_ = true;
916
+ isolate_->AddNearHeapLimitCallback(Environment::NearHeapLimitCallback, this);
917
+ }
918
+
919
+ inline void Environment::RemoveHeapSnapshotNearHeapLimitCallback(
920
+ size_t heap_limit) {
921
+ DCHECK(heapsnapshot_near_heap_limit_callback_added_);
922
+ heapsnapshot_near_heap_limit_callback_added_ = false;
923
+ isolate_->RemoveNearHeapLimitCallback(Environment::NearHeapLimitCallback,
924
+ heap_limit);
1267
925
  }
1268
926
 
1269
927
  } // namespace node