@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
@@ -33,37 +33,9 @@
33
33
  namespace node {
34
34
 
35
35
  BaseObject::BaseObject(Environment* env, v8::Local<v8::Object> object)
36
- : persistent_handle_(env->isolate(), object), env_(env) {
37
- CHECK_EQ(false, object.IsEmpty());
38
- CHECK_GT(object->InternalFieldCount(), 0);
39
- object->SetAlignedPointerInInternalField(
40
- BaseObject::kSlot,
41
- static_cast<void*>(this));
42
- env->AddCleanupHook(DeleteMe, static_cast<void*>(this));
43
- env->modify_base_object_count(1);
44
- }
45
-
46
- BaseObject::~BaseObject() {
47
- env()->modify_base_object_count(-1);
48
- env()->RemoveCleanupHook(DeleteMe, static_cast<void*>(this));
49
-
50
- if (UNLIKELY(has_pointer_data())) {
51
- PointerData* metadata = pointer_data();
52
- CHECK_EQ(metadata->strong_ptr_count, 0);
53
- metadata->self = nullptr;
54
- if (metadata->weak_ptr_count == 0)
55
- delete metadata;
56
- }
57
-
58
- if (persistent_handle_.IsEmpty()) {
59
- // This most likely happened because the weak callback below cleared it.
60
- return;
61
- }
62
-
63
- {
64
- v8::HandleScope handle_scope(env()->isolate());
65
- object()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr);
66
- }
36
+ : BaseObject(env->principal_realm(), object) {
37
+ // TODO(legendecas): Check the shorthand is only used in the principal realm
38
+ // while allowing to create a BaseObject in a vm context.
67
39
  }
68
40
 
69
41
  void BaseObject::Detach() {
@@ -83,52 +55,57 @@ v8::Local<v8::Object> BaseObject::object() const {
83
55
  v8::Local<v8::Object> BaseObject::object(v8::Isolate* isolate) const {
84
56
  v8::Local<v8::Object> handle = object();
85
57
 
86
- DCHECK_EQ(handle->GetCreationContext().ToLocalChecked()->GetIsolate(),
87
- isolate);
58
+ DCHECK_EQ(handle->GetCreationContextChecked()->GetIsolate(), isolate);
88
59
  DCHECK_EQ(env()->isolate(), isolate);
89
60
 
90
61
  return handle;
91
62
  }
92
63
 
93
64
  Environment* BaseObject::env() const {
94
- return env_;
65
+ return realm_->env();
66
+ }
67
+
68
+ Realm* BaseObject::realm() const {
69
+ return realm_;
70
+ }
71
+
72
+ bool BaseObject::IsBaseObject(IsolateData* isolate_data,
73
+ v8::Local<v8::Object> obj) {
74
+ if (obj->InternalFieldCount() < BaseObject::kInternalFieldCount) {
75
+ return false;
76
+ }
77
+
78
+ uint16_t* ptr = static_cast<uint16_t*>(
79
+ obj->GetAlignedPointerFromInternalField(BaseObject::kEmbedderType));
80
+ return ptr == isolate_data->embedder_id_for_non_cppgc();
81
+ }
82
+
83
+ void BaseObject::TagBaseObject(IsolateData* isolate_data,
84
+ v8::Local<v8::Object> object) {
85
+ DCHECK_GE(object->InternalFieldCount(), BaseObject::kInternalFieldCount);
86
+ object->SetAlignedPointerInInternalField(
87
+ BaseObject::kEmbedderType, isolate_data->embedder_id_for_non_cppgc());
88
+ }
89
+
90
+ void BaseObject::SetInternalFields(IsolateData* isolate_data,
91
+ v8::Local<v8::Object> object,
92
+ void* slot) {
93
+ TagBaseObject(isolate_data, object);
94
+ object->SetAlignedPointerInInternalField(BaseObject::kSlot, slot);
95
95
  }
96
96
 
97
97
  BaseObject* BaseObject::FromJSObject(v8::Local<v8::Value> value) {
98
98
  v8::Local<v8::Object> obj = value.As<v8::Object>();
99
- DCHECK_GE(obj->InternalFieldCount(), BaseObject::kSlot);
99
+ DCHECK_GE(obj->InternalFieldCount(), BaseObject::kInternalFieldCount);
100
100
  return static_cast<BaseObject*>(
101
101
  obj->GetAlignedPointerFromInternalField(BaseObject::kSlot));
102
102
  }
103
103
 
104
-
105
104
  template <typename T>
106
105
  T* BaseObject::FromJSObject(v8::Local<v8::Value> object) {
107
106
  return static_cast<T*>(FromJSObject(object));
108
107
  }
109
108
 
110
-
111
- void BaseObject::MakeWeak() {
112
- if (has_pointer_data()) {
113
- pointer_data()->wants_weak_jsobj = true;
114
- if (pointer_data()->strong_ptr_count > 0) return;
115
- }
116
-
117
- persistent_handle_.SetWeak(
118
- this,
119
- [](const v8::WeakCallbackInfo<BaseObject>& data) {
120
- BaseObject* obj = data.GetParameter();
121
- // Clear the persistent handle so that ~BaseObject() doesn't attempt
122
- // to mess with internal fields, since the JS object may have
123
- // transitioned into an invalid state.
124
- // Refs: https://github.com/nodejs/node/issues/18897
125
- obj->persistent_handle_.Reset();
126
- CHECK_IMPLIES(obj->has_pointer_data(),
127
- obj->pointer_data()->strong_ptr_count == 0);
128
- obj->OnGCCollect();
129
- }, v8::WeakCallbackType::kParameter);
130
- }
131
-
132
109
  void BaseObject::OnGCCollect() {
133
110
  delete this;
134
111
  }
@@ -148,78 +125,30 @@ bool BaseObject::IsWeakOrDetached() const {
148
125
  return pd->wants_weak_jsobj || pd->is_detached;
149
126
  }
150
127
 
151
- void BaseObject::LazilyInitializedJSTemplateConstructor(
152
- const v8::FunctionCallbackInfo<v8::Value>& args) {
153
- DCHECK(args.IsConstructCall());
154
- DCHECK_GT(args.This()->InternalFieldCount(), 0);
155
- args.This()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr);
156
- }
157
-
158
- v8::Local<v8::FunctionTemplate>
159
- BaseObject::MakeLazilyInitializedJSTemplate(Environment* env) {
160
- v8::Local<v8::FunctionTemplate> t =
161
- env->NewFunctionTemplate(LazilyInitializedJSTemplateConstructor);
162
- t->Inherit(BaseObject::GetConstructorTemplate(env));
163
- t->InstanceTemplate()->SetInternalFieldCount(
164
- BaseObject::kInternalFieldCount);
165
- return t;
166
- }
167
-
168
128
  template <int Field>
169
129
  void BaseObject::InternalFieldGet(
170
- v8::Local<v8::String> property,
171
- const v8::PropertyCallbackInfo<v8::Value>& info) {
172
- info.GetReturnValue().Set(info.This()->GetInternalField(Field));
130
+ const v8::FunctionCallbackInfo<v8::Value>& args) {
131
+ args.GetReturnValue().Set(
132
+ args.This()->GetInternalField(Field).As<v8::Value>());
173
133
  }
174
134
 
175
- template <int Field, bool (v8::Value::* typecheck)() const>
176
- void BaseObject::InternalFieldSet(v8::Local<v8::String> property,
177
- v8::Local<v8::Value> value,
178
- const v8::PropertyCallbackInfo<void>& info) {
135
+ template <int Field, bool (v8::Value::*typecheck)() const>
136
+ void BaseObject::InternalFieldSet(
137
+ const v8::FunctionCallbackInfo<v8::Value>& args) {
138
+ v8::Local<v8::Value> value = args[0];
179
139
  // This could be e.g. value->IsFunction().
180
140
  CHECK(((*value)->*typecheck)());
181
- info.This()->SetInternalField(Field, value);
141
+ args.This()->SetInternalField(Field, value);
182
142
  }
183
143
 
184
144
  bool BaseObject::has_pointer_data() const {
185
145
  return pointer_data_ != nullptr;
186
146
  }
187
147
 
188
- BaseObject::PointerData* BaseObject::pointer_data() {
189
- if (!has_pointer_data()) {
190
- PointerData* metadata = new PointerData();
191
- metadata->wants_weak_jsobj = persistent_handle_.IsWeak();
192
- metadata->self = this;
193
- pointer_data_ = metadata;
194
- }
195
- CHECK(has_pointer_data());
196
- return pointer_data_;
197
- }
198
-
199
- void BaseObject::decrease_refcount() {
200
- CHECK(has_pointer_data());
201
- PointerData* metadata = pointer_data();
202
- CHECK_GT(metadata->strong_ptr_count, 0);
203
- unsigned int new_refcount = --metadata->strong_ptr_count;
204
- if (new_refcount == 0) {
205
- if (metadata->is_detached) {
206
- OnGCCollect();
207
- } else if (metadata->wants_weak_jsobj && !persistent_handle_.IsEmpty()) {
208
- MakeWeak();
209
- }
210
- }
211
- }
212
-
213
- void BaseObject::increase_refcount() {
214
- unsigned int prev_refcount = pointer_data()->strong_ptr_count++;
215
- if (prev_refcount == 0 && !persistent_handle_.IsEmpty())
216
- persistent_handle_.ClearWeak();
217
- }
218
-
219
148
  template <typename T, bool kIsWeak>
220
149
  BaseObject::PointerData*
221
150
  BaseObjectPtrImpl<T, kIsWeak>::pointer_data() const {
222
- if (kIsWeak) {
151
+ if constexpr (kIsWeak) {
223
152
  return data_.pointer_data;
224
153
  }
225
154
  if (get_base_object() == nullptr) {
@@ -230,7 +159,7 @@ BaseObjectPtrImpl<T, kIsWeak>::pointer_data() const {
230
159
 
231
160
  template <typename T, bool kIsWeak>
232
161
  BaseObject* BaseObjectPtrImpl<T, kIsWeak>::get_base_object() const {
233
- if (kIsWeak) {
162
+ if constexpr (kIsWeak) {
234
163
  if (pointer_data() == nullptr) {
235
164
  return nullptr;
236
165
  }
@@ -241,7 +170,7 @@ BaseObject* BaseObjectPtrImpl<T, kIsWeak>::get_base_object() const {
241
170
 
242
171
  template <typename T, bool kIsWeak>
243
172
  BaseObjectPtrImpl<T, kIsWeak>::~BaseObjectPtrImpl() {
244
- if (kIsWeak) {
173
+ if constexpr (kIsWeak) {
245
174
  if (pointer_data() != nullptr &&
246
175
  --pointer_data()->weak_ptr_count == 0 &&
247
176
  pointer_data()->self == nullptr) {
@@ -261,7 +190,7 @@ template <typename T, bool kIsWeak>
261
190
  BaseObjectPtrImpl<T, kIsWeak>::BaseObjectPtrImpl(T* target)
262
191
  : BaseObjectPtrImpl() {
263
192
  if (target == nullptr) return;
264
- if (kIsWeak) {
193
+ if constexpr (kIsWeak) {
265
194
  data_.pointer_data = target->pointer_data();
266
195
  CHECK_NOT_NULL(pointer_data());
267
196
  pointer_data()->weak_ptr_count++;
@@ -302,7 +231,7 @@ BaseObjectPtrImpl<T, kIsWeak>& BaseObjectPtrImpl<T, kIsWeak>::operator=(
302
231
  template <typename T, bool kIsWeak>
303
232
  BaseObjectPtrImpl<T, kIsWeak>::BaseObjectPtrImpl(BaseObjectPtrImpl&& other)
304
233
  : data_(other.data_) {
305
- if (kIsWeak)
234
+ if constexpr (kIsWeak)
306
235
  other.data_.target = nullptr;
307
236
  else
308
237
  other.data_.pointer_data = nullptr;
@@ -316,6 +245,17 @@ BaseObjectPtrImpl<T, kIsWeak>& BaseObjectPtrImpl<T, kIsWeak>::operator=(
316
245
  return *new (this) BaseObjectPtrImpl(std::move(other));
317
246
  }
318
247
 
248
+ template <typename T, bool kIsWeak>
249
+ BaseObjectPtrImpl<T, kIsWeak>::BaseObjectPtrImpl(std::nullptr_t)
250
+ : BaseObjectPtrImpl() {}
251
+
252
+ template <typename T, bool kIsWeak>
253
+ BaseObjectPtrImpl<T, kIsWeak>& BaseObjectPtrImpl<T, kIsWeak>::operator=(
254
+ std::nullptr_t) {
255
+ this->~BaseObjectPtrImpl();
256
+ return *new (this) BaseObjectPtrImpl();
257
+ }
258
+
319
259
  template <typename T, bool kIsWeak>
320
260
  void BaseObjectPtrImpl<T, kIsWeak>::reset(T* ptr) {
321
261
  *this = BaseObjectPtrImpl(ptr);
@@ -355,10 +295,26 @@ bool BaseObjectPtrImpl<T, kIsWeak>::operator !=(
355
295
  return get() != other.get();
356
296
  }
357
297
 
298
+ template <typename T, bool kIsWeak>
299
+ bool operator==(const BaseObjectPtrImpl<T, kIsWeak> ptr, const std::nullptr_t) {
300
+ return ptr.get() == nullptr;
301
+ }
302
+
303
+ template <typename T, bool kIsWeak>
304
+ bool operator==(const std::nullptr_t, const BaseObjectPtrImpl<T, kIsWeak> ptr) {
305
+ return ptr.get() == nullptr;
306
+ }
307
+
358
308
  template <typename T, typename... Args>
359
309
  BaseObjectPtr<T> MakeBaseObject(Args&&... args) {
360
310
  return BaseObjectPtr<T>(new T(std::forward<Args>(args)...));
361
311
  }
312
+ template <typename T, typename... Args>
313
+ BaseObjectWeakPtr<T> MakeWeakBaseObject(Args&&... args) {
314
+ T* target = new T(std::forward<Args>(args)...);
315
+ target->MakeWeak();
316
+ return BaseObjectWeakPtr<T>(target);
317
+ }
362
318
 
363
319
  template <typename T, typename... Args>
364
320
  BaseObjectPtr<T> MakeDetachedBaseObject(Args&&... args) {
@@ -25,12 +25,16 @@
25
25
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
26
26
 
27
27
  #include <type_traits> // std::remove_reference
28
+ #include "base_object_types.h"
28
29
  #include "memory_tracker.h"
30
+ #include "util.h"
29
31
  #include "v8.h"
30
32
 
31
33
  namespace node {
32
34
 
33
35
  class Environment;
36
+ class IsolateData;
37
+ class Realm;
34
38
  template <typename T, bool kIsWeak>
35
39
  class BaseObjectPtrImpl;
36
40
 
@@ -40,12 +44,15 @@ class TransferData;
40
44
 
41
45
  class BaseObject : public MemoryRetainer {
42
46
  public:
43
- enum InternalFields { kSlot, kInternalFieldCount };
47
+ enum InternalFields { kEmbedderType, kSlot, kInternalFieldCount };
44
48
 
45
- // Associates this object with `object`. It uses the 0th internal field for
49
+ // Associates this object with `object`. It uses the 1st internal field for
46
50
  // that, and in particular aborts if there is no such field.
51
+ // This is the designated constructor.
52
+ BaseObject(Realm* realm, v8::Local<v8::Object> object);
53
+ // Convenient constructor for constructing BaseObject in the principal realm.
47
54
  inline BaseObject(Environment* env, v8::Local<v8::Object> object);
48
- inline ~BaseObject() override;
55
+ ~BaseObject() override;
49
56
 
50
57
  BaseObject() = delete;
51
58
 
@@ -60,21 +67,34 @@ class BaseObject : public MemoryRetainer {
60
67
  inline v8::Global<v8::Object>& persistent();
61
68
 
62
69
  inline Environment* env() const;
70
+ inline Realm* realm() const;
63
71
 
64
72
  // Get a BaseObject* pointer, or subclass pointer, for the JS object that
65
73
  // was also passed to the `BaseObject()` constructor initially.
66
74
  // This may return `nullptr` if the C++ object has not been constructed yet,
67
75
  // e.g. when the JS object used `MakeLazilyInitializedJSTemplate`.
68
- static inline void LazilyInitializedJSTemplateConstructor(
76
+ static inline void SetInternalFields(IsolateData* isolate_data,
77
+ v8::Local<v8::Object> object,
78
+ void* slot);
79
+ static inline bool IsBaseObject(IsolateData* isolate_data,
80
+ v8::Local<v8::Object> object);
81
+ static inline void TagBaseObject(IsolateData* isolate_data,
82
+ v8::Local<v8::Object> object);
83
+ static void LazilyInitializedJSTemplateConstructor(
69
84
  const v8::FunctionCallbackInfo<v8::Value>& args);
70
85
  static inline BaseObject* FromJSObject(v8::Local<v8::Value> object);
71
86
  template <typename T>
72
87
  static inline T* FromJSObject(v8::Local<v8::Value> object);
88
+ // Global alias for FromJSObject() to avoid churn.
89
+ template <typename T>
90
+ static inline T* Unwrap(v8::Local<v8::Value> obj) {
91
+ return BaseObject::FromJSObject<T>(obj);
92
+ }
73
93
 
74
94
  // Make the `v8::Global` a weak reference and, `delete` this object once
75
95
  // the JS object has been garbage collected and there are no (strong)
76
96
  // BaseObjectPtr references to it.
77
- inline void MakeWeak();
97
+ void MakeWeak();
78
98
 
79
99
  // Undo `MakeWeak()`, i.e. turn this into a strong reference that is a GC
80
100
  // root and will not be touched by the garbage collector.
@@ -88,17 +108,16 @@ class BaseObject : public MemoryRetainer {
88
108
  // Utility to create a FunctionTemplate with one internal field (used for
89
109
  // the `BaseObject*` pointer) and a constructor that initializes that field
90
110
  // to `nullptr`.
91
- static inline v8::Local<v8::FunctionTemplate> MakeLazilyInitializedJSTemplate(
111
+ static v8::Local<v8::FunctionTemplate> MakeLazilyInitializedJSTemplate(
112
+ IsolateData* isolate);
113
+ static v8::Local<v8::FunctionTemplate> MakeLazilyInitializedJSTemplate(
92
114
  Environment* env);
93
115
 
94
116
  // Setter/Getter pair for internal fields that can be passed to SetAccessor.
95
117
  template <int Field>
96
- static void InternalFieldGet(v8::Local<v8::String> property,
97
- const v8::PropertyCallbackInfo<v8::Value>& info);
118
+ static void InternalFieldGet(const v8::FunctionCallbackInfo<v8::Value>& args);
98
119
  template <int Field, bool (v8::Value::*typecheck)() const>
99
- static void InternalFieldSet(v8::Local<v8::String> property,
100
- v8::Local<v8::Value> value,
101
- const v8::PropertyCallbackInfo<void>& info);
120
+ static void InternalFieldSet(const v8::FunctionCallbackInfo<v8::Value>& args);
102
121
 
103
122
  // This is a bit of a hack. See the override in async_wrap.cc for details.
104
123
  virtual bool IsDoneInitializing() const;
@@ -109,18 +128,15 @@ class BaseObject : public MemoryRetainer {
109
128
  // a BaseObjectPtr to this object.
110
129
  inline void Detach();
111
130
 
112
- static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
113
- Environment* env);
114
-
115
131
  // Interface for transferring BaseObject instances using the .postMessage()
116
132
  // method of MessagePorts (and, by extension, Workers).
117
133
  // GetTransferMode() returns a transfer mode that indicates how to deal with
118
134
  // the current object:
119
- // - kUntransferable:
120
- // No transfer is possible, either because this type of BaseObject does
121
- // not know how to be transferred, or because it is not in a state in
122
- // which it is possible to do so (e.g. because it has already been
123
- // transferred).
135
+ // - kDisallowCloneAndTransfer:
136
+ // No transfer or clone is possible, either because this type of
137
+ // BaseObject does not know how to be transferred, or because it is not
138
+ // in a state in which it is possible to do so (e.g. because it has
139
+ // already been transferred).
124
140
  // - kTransferable:
125
141
  // This object can be transferred in a destructive fashion, i.e. will be
126
142
  // rendered unusable on the sending side of the channel in the process
@@ -136,22 +152,27 @@ class BaseObject : public MemoryRetainer {
136
152
  // This object can be cloned without being modified.
137
153
  // CloneForMessaging() will be called to get a representation of the
138
154
  // object that is used for subsequent deserialization, unless the
139
- // object is listed in transferList, in which case TransferForMessaging()
140
- // is attempted first.
155
+ // object is listed in transferList and is kTransferable, in which case
156
+ // TransferForMessaging() is attempted first.
157
+ // - kTransferableAndCloneable:
158
+ // This object can be transferred or cloned.
141
159
  // After a successful clone, FinalizeTransferRead() is called on the receiving
142
160
  // end, and can read deserialize JS data possibly serialized by a previous
143
161
  // FinalizeTransferWrite() call.
144
- enum class TransferMode {
145
- kUntransferable,
146
- kTransferable,
147
- kCloneable
162
+ // By default, a BaseObject is kDisallowCloneAndTransfer and a JS Object is
163
+ // kCloneable unless otherwise specified.
164
+ enum TransferMode : uint32_t {
165
+ kDisallowCloneAndTransfer = 0,
166
+ kTransferable = 1 << 0,
167
+ kCloneable = 1 << 1,
168
+ kTransferableAndCloneable = kTransferable | kCloneable,
148
169
  };
149
170
  virtual TransferMode GetTransferMode() const;
150
171
  virtual std::unique_ptr<worker::TransferData> TransferForMessaging();
151
172
  virtual std::unique_ptr<worker::TransferData> CloneForMessaging() const;
152
173
  virtual v8::Maybe<std::vector<BaseObjectPtrImpl<BaseObject, false>>>
153
174
  NestedTransferables() const;
154
- virtual v8::Maybe<bool> FinalizeTransferRead(
175
+ virtual v8::Maybe<void> FinalizeTransferRead(
155
176
  v8::Local<v8::Context> context, v8::ValueDeserializer* deserializer);
156
177
 
157
178
  // Indicates whether this object is expected to use a strong reference during
@@ -164,16 +185,15 @@ class BaseObject : public MemoryRetainer {
164
185
 
165
186
  private:
166
187
  v8::Local<v8::Object> WrappedObject() const override;
167
- bool IsRootNode() const override;
168
- static void DeleteMe(void* data);
188
+ void DeleteMe();
169
189
 
170
190
  // persistent_handle_ needs to be at a fixed offset from the start of the
171
191
  // class because it is used by src/node_postmortem_metadata.cc to calculate
172
192
  // offsets and generate debug symbols for BaseObject, which assumes that the
173
193
  // position of members in memory are predictable. For more information please
174
- // refer to `doc/guides/node-postmortem-support.md`
194
+ // refer to `doc/contributing/node-postmortem-support.md`
175
195
  friend int GenDebugSymbols();
176
- friend class CleanupHookCallback;
196
+ friend class CleanupQueue;
177
197
  template <typename T, bool kIsWeak>
178
198
  friend class BaseObjectPtrImpl;
179
199
 
@@ -202,21 +222,29 @@ class BaseObject : public MemoryRetainer {
202
222
  inline bool has_pointer_data() const;
203
223
  // This creates a PointerData struct if none was associated with this
204
224
  // BaseObject before.
205
- inline PointerData* pointer_data();
225
+ PointerData* pointer_data();
206
226
 
207
227
  // Functions that adjust the strong pointer count.
208
- inline void decrease_refcount();
209
- inline void increase_refcount();
228
+ void decrease_refcount();
229
+ void increase_refcount();
210
230
 
211
- Environment* env_;
231
+ Realm* realm_;
212
232
  PointerData* pointer_data_ = nullptr;
233
+ ListNode<BaseObject> base_object_list_node_;
234
+
235
+ friend class BaseObjectList;
213
236
  };
214
237
 
215
- // Global alias for FromJSObject() to avoid churn.
216
- template <typename T>
217
- inline T* Unwrap(v8::Local<v8::Value> obj) {
218
- return BaseObject::FromJSObject<T>(obj);
219
- }
238
+ class BaseObjectList
239
+ : public ListHead<BaseObject, &BaseObject::base_object_list_node_>,
240
+ public MemoryRetainer {
241
+ public:
242
+ void Cleanup();
243
+
244
+ SET_MEMORY_INFO_NAME(BaseObjectList)
245
+ SET_SELF_SIZE(BaseObjectList)
246
+ void MemoryInfo(node::MemoryTracker* tracker) const override;
247
+ };
220
248
 
221
249
  #define ASSIGN_OR_RETURN_UNWRAP(ptr, obj, ...) \
222
250
  do { \
@@ -230,7 +258,9 @@ inline T* Unwrap(v8::Local<v8::Value> obj) {
230
258
  // circumstances such as the GC or Environment cleanup.
231
259
  // If weak, destruction behaviour is not affected, but the pointer will be
232
260
  // reset to nullptr once the BaseObject is destroyed.
233
- // The API matches std::shared_ptr closely.
261
+ // The API matches std::shared_ptr closely. However, this class is not thread
262
+ // safe, that is, we can't have different BaseObjectPtrImpl instances in
263
+ // different threads referring to the same BaseObject instance.
234
264
  template <typename T, bool kIsWeak>
235
265
  class BaseObjectPtrImpl final {
236
266
  public:
@@ -250,6 +280,9 @@ class BaseObjectPtrImpl final {
250
280
  inline BaseObjectPtrImpl(BaseObjectPtrImpl&& other);
251
281
  inline BaseObjectPtrImpl& operator=(BaseObjectPtrImpl&& other);
252
282
 
283
+ inline BaseObjectPtrImpl(std::nullptr_t);
284
+ inline BaseObjectPtrImpl& operator=(std::nullptr_t);
285
+
253
286
  inline void reset(T* ptr = nullptr);
254
287
  inline T* get() const;
255
288
  inline T& operator*() const;
@@ -271,6 +304,13 @@ class BaseObjectPtrImpl final {
271
304
  inline BaseObject::PointerData* pointer_data() const;
272
305
  };
273
306
 
307
+ template <typename T, bool kIsWeak>
308
+ inline static bool operator==(const BaseObjectPtrImpl<T, kIsWeak>,
309
+ const std::nullptr_t);
310
+ template <typename T, bool kIsWeak>
311
+ inline static bool operator==(const std::nullptr_t,
312
+ const BaseObjectPtrImpl<T, kIsWeak>);
313
+
274
314
  template <typename T>
275
315
  using BaseObjectPtr = BaseObjectPtrImpl<T, false>;
276
316
  template <typename T>
@@ -281,6 +321,10 @@ using BaseObjectWeakPtr = BaseObjectPtrImpl<T, true>;
281
321
  template <typename T, typename... Args>
282
322
  inline BaseObjectPtr<T> MakeBaseObject(Args&&... args);
283
323
  // Create a BaseObject instance and return a pointer to it.
324
+ // This variant makes the object a weak GC root by default.
325
+ template <typename T, typename... Args>
326
+ inline BaseObjectWeakPtr<T> MakeWeakBaseObject(Args&&... args);
327
+ // Create a BaseObject instance and return a pointer to it.
284
328
  // This variant detaches the object by default, meaning that the caller fully
285
329
  // owns it, and once the last BaseObjectPtr to it is destroyed, the object
286
330
  // itself is also destroyed.
@@ -0,0 +1,74 @@
1
+ #ifndef SRC_BASE_OBJECT_TYPES_H_
2
+ #define SRC_BASE_OBJECT_TYPES_H_
3
+
4
+ #include <cinttypes>
5
+
6
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
7
+
8
+ namespace node {
9
+ // List of internalBinding() data wrappers. The first argument should match
10
+ // what the class passes to SET_BINDING_ID(), the second argument should match
11
+ // the C++ class name.
12
+ #define SERIALIZABLE_BINDING_TYPES(V) \
13
+ V(encoding_binding_data, encoding_binding::BindingData) \
14
+ V(fs_binding_data, fs::BindingData) \
15
+ V(mksnapshot_binding_data, mksnapshot::BindingData) \
16
+ V(v8_binding_data, v8_utils::BindingData) \
17
+ V(blob_binding_data, BlobBindingData) \
18
+ V(process_binding_data, process::BindingData) \
19
+ V(timers_binding_data, timers::BindingData) \
20
+ V(url_binding_data, url::BindingData) \
21
+ V(modules_binding_data, modules::BindingData)
22
+
23
+ #define UNSERIALIZABLE_BINDING_TYPES(V) \
24
+ V(http2_binding_data, http2::BindingData) \
25
+ V(http_parser_binding_data, http_parser::BindingData) \
26
+ V(quic_binding_data, quic::BindingData)
27
+
28
+ // List of (non-binding) BaseObjects that are serializable in the snapshot.
29
+ // The first argument should match what the type passes to
30
+ // SET_OBJECT_ID(), the second argument should match the C++ class
31
+ // name.
32
+ #define SERIALIZABLE_NON_BINDING_TYPES(V)
33
+
34
+ // Helper list of all binding data wrapper types.
35
+ #define BINDING_TYPES(V) \
36
+ SERIALIZABLE_BINDING_TYPES(V) \
37
+ UNSERIALIZABLE_BINDING_TYPES(V)
38
+
39
+ // Helper list of all BaseObjects that implement snapshot support.
40
+ #define SERIALIZABLE_OBJECT_TYPES(V) \
41
+ SERIALIZABLE_BINDING_TYPES(V) \
42
+ SERIALIZABLE_NON_BINDING_TYPES(V)
43
+
44
+ #define V(TypeId, NativeType) k_##TypeId,
45
+ enum class BindingDataType : uint8_t { BINDING_TYPES(V) kBindingDataTypeCount };
46
+ // Make sure that we put the bindings first so that we can also use the enums
47
+ // for the bindings as index to the binding data store.
48
+ enum class EmbedderObjectType : uint8_t {
49
+ BINDING_TYPES(V) SERIALIZABLE_NON_BINDING_TYPES(V)
50
+ // We do not need to know about all the unserializable non-binding types for
51
+ // now so we do not list them.
52
+ kEmbedderObjectTypeCount
53
+ };
54
+ #undef V
55
+
56
+ // For now, BaseObjects only need to call this when they implement snapshot
57
+ // support.
58
+ #define SET_OBJECT_ID(TypeId) \
59
+ static constexpr EmbedderObjectType type_int = EmbedderObjectType::k_##TypeId;
60
+
61
+ // Binding data should call this so that they can be looked up from the binding
62
+ // data store.
63
+ #define SET_BINDING_ID(TypeId) \
64
+ static constexpr BindingDataType binding_type_int = \
65
+ BindingDataType::k_##TypeId; \
66
+ SET_OBJECT_ID(TypeId) \
67
+ static_assert(static_cast<uint8_t>(type_int) == \
68
+ static_cast<uint8_t>(binding_type_int));
69
+
70
+ } // namespace node
71
+
72
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
73
+
74
+ #endif // SRC_BASE_OBJECT_TYPES_H_