@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,9 +24,11 @@
24
24
 
25
25
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
26
26
 
27
+ #include "uv.h"
27
28
  #include "v8.h"
28
29
 
29
30
  #include "node.h"
31
+ #include "node_exit_code.h"
30
32
 
31
33
  #include <climits>
32
34
  #include <cstddef>
@@ -35,12 +37,15 @@
35
37
  #include <cstring>
36
38
 
37
39
  #include <array>
40
+ #include <bit>
41
+ #include <filesystem>
38
42
  #include <limits>
39
43
  #include <memory>
44
+ #include <optional>
45
+ #include <set>
40
46
  #include <string>
41
47
  #include <string_view>
42
48
  #include <type_traits>
43
- #include <set>
44
49
  #include <unordered_map>
45
50
  #include <utility>
46
51
  #include <vector>
@@ -53,13 +58,12 @@
53
58
 
54
59
  namespace node {
55
60
 
56
- // Maybe remove kPathSeparator when cpp17 is ready
61
+ constexpr char kPathSeparator = std::filesystem::path::preferred_separator;
62
+
57
63
  #ifdef _WIN32
58
- constexpr char kPathSeparator = '\\';
59
64
  /* MAX_PATH is in characters, not bytes. Make sure we have enough headroom. */
60
65
  #define PATH_MAX_BYTES (MAX_PATH * 4)
61
66
  #else
62
- constexpr char kPathSeparator = '/';
63
67
  #define PATH_MAX_BYTES (PATH_MAX)
64
68
  #endif
65
69
 
@@ -112,47 +116,65 @@ struct AssertionInfo {
112
116
  const char* message;
113
117
  const char* function;
114
118
  };
115
- [[noreturn]] void NODE_EXTERN_PRIVATE Assert(const AssertionInfo& info);
116
- [[noreturn]] void NODE_EXTERN_PRIVATE Abort();
117
- void DumpBacktrace(FILE* fp);
119
+
120
+ // This indirectly calls backtrace so it can not be marked as [[noreturn]].
121
+ void NODE_EXTERN_PRIVATE Assert(const AssertionInfo& info);
122
+ void DumpNativeBacktrace(FILE* fp);
123
+ void DumpJavaScriptBacktrace(FILE* fp);
118
124
 
119
125
  // Windows 8+ does not like abort() in Release mode
120
126
  #ifdef _WIN32
121
- #define ABORT_NO_BACKTRACE() _exit(134)
127
+ #define ABORT_NO_BACKTRACE() _exit(static_cast<int>(node::ExitCode::kAbort))
122
128
  #else
123
129
  #define ABORT_NO_BACKTRACE() abort()
124
130
  #endif
125
131
 
126
- #define ABORT() node::Abort()
132
+ // Caller of this macro must not be marked as [[noreturn]]. Printing of
133
+ // backtraces may not work correctly in [[noreturn]] functions because
134
+ // when generating code for them the compiler can choose not to
135
+ // maintain the frame pointers or link registers that are necessary for
136
+ // correct backtracing.
137
+ // `ABORT` must be a macro and not a [[noreturn]] function to make sure the
138
+ // backtrace is correct.
139
+ #define ABORT() \
140
+ do { \
141
+ node::DumpNativeBacktrace(stderr); \
142
+ node::DumpJavaScriptBacktrace(stderr); \
143
+ fflush(stderr); \
144
+ ABORT_NO_BACKTRACE(); \
145
+ } while (0)
127
146
 
128
- #define ERROR_AND_ABORT(expr) \
129
- do { \
130
- /* Make sure that this struct does not end up in inline code, but */ \
131
- /* rather in a read-only data section when modifying this code. */ \
132
- static const node::AssertionInfo args = { \
133
- __FILE__ ":" STRINGIFY(__LINE__), #expr, PRETTY_FUNCTION_NAME \
134
- }; \
135
- node::Assert(args); \
147
+ #define ERROR_AND_ABORT(expr) \
148
+ do { \
149
+ /* Make sure that this struct does not end up in inline code, but */ \
150
+ /* rather in a read-only data section when modifying this code. */ \
151
+ static const node::AssertionInfo error_and_abort_args = { \
152
+ __FILE__ ":" STRINGIFY(__LINE__), #expr, PRETTY_FUNCTION_NAME}; \
153
+ node::Assert(error_and_abort_args); \
154
+ /* `node::Assert` doesn't return. Add an [[noreturn]] abort() here to */ \
155
+ /* make the compiler happy about no return value in the caller */ \
156
+ /* function when calling ERROR_AND_ABORT. */ \
157
+ ABORT_NO_BACKTRACE(); \
136
158
  } while (0)
137
159
 
138
160
  #ifdef __GNUC__
139
- #define LIKELY(expr) __builtin_expect(!!(expr), 1)
140
- #define UNLIKELY(expr) __builtin_expect(!!(expr), 0)
141
161
  #define PRETTY_FUNCTION_NAME __PRETTY_FUNCTION__
142
162
  #else
143
- #define LIKELY(expr) expr
144
- #define UNLIKELY(expr) expr
163
+ #if defined(_MSC_VER)
164
+ #define PRETTY_FUNCTION_NAME __FUNCSIG__
165
+ #else
145
166
  #define PRETTY_FUNCTION_NAME ""
146
167
  #endif
168
+ #endif
147
169
 
148
170
  #define STRINGIFY_(x) #x
149
171
  #define STRINGIFY(x) STRINGIFY_(x)
150
172
 
151
- #define CHECK(expr) \
152
- do { \
153
- if (UNLIKELY(!(expr))) { \
154
- ERROR_AND_ABORT(expr); \
155
- } \
173
+ #define CHECK(expr) \
174
+ do { \
175
+ if (!(expr)) [[unlikely]] { \
176
+ ERROR_AND_ABORT(expr); \
177
+ } \
156
178
  } while (0)
157
179
 
158
180
  #define CHECK_EQ(a, b) CHECK((a) == (b))
@@ -193,7 +215,7 @@ void DumpBacktrace(FILE* fp);
193
215
  #define UNREACHABLE(...) \
194
216
  ERROR_AND_ABORT("Unreachable code reached" __VA_OPT__(": ") __VA_ARGS__)
195
217
 
196
- // ECMA262 20.1.2.6 Number.MAX_SAFE_INTEGER (2^53-1)
218
+ // ECMA-262, 15th edition, 21.1.2.6. Number.MAX_SAFE_INTEGER (2^53-1)
197
219
  constexpr int64_t kMaxSafeJsInteger = 9007199254740991;
198
220
 
199
221
  inline bool IsSafeJsInt(v8::Local<v8::Value> v);
@@ -273,6 +295,37 @@ template <typename Inner, typename Outer>
273
295
  constexpr ContainerOfHelper<Inner, Outer> ContainerOf(Inner Outer::*field,
274
296
  Inner* pointer);
275
297
 
298
+ class KVStore {
299
+ public:
300
+ KVStore() = default;
301
+ virtual ~KVStore() = default;
302
+ KVStore(const KVStore&) = delete;
303
+ KVStore& operator=(const KVStore&) = delete;
304
+ KVStore(KVStore&&) = delete;
305
+ KVStore& operator=(KVStore&&) = delete;
306
+
307
+ virtual v8::MaybeLocal<v8::String> Get(v8::Isolate* isolate,
308
+ v8::Local<v8::String> key) const = 0;
309
+ virtual std::optional<std::string> Get(const char* key) const = 0;
310
+ virtual void Set(v8::Isolate* isolate,
311
+ v8::Local<v8::String> key,
312
+ v8::Local<v8::String> value) = 0;
313
+ virtual int32_t Query(v8::Isolate* isolate,
314
+ v8::Local<v8::String> key) const = 0;
315
+ virtual int32_t Query(const char* key) const = 0;
316
+ virtual void Delete(v8::Isolate* isolate, v8::Local<v8::String> key) = 0;
317
+ virtual v8::Local<v8::Array> Enumerate(v8::Isolate* isolate) const = 0;
318
+
319
+ virtual std::shared_ptr<KVStore> Clone(v8::Isolate* isolate) const;
320
+ virtual v8::Maybe<void> AssignFromObject(v8::Local<v8::Context> context,
321
+ v8::Local<v8::Object> entries);
322
+ v8::Maybe<void> AssignToObject(v8::Isolate* isolate,
323
+ v8::Local<v8::Context> context,
324
+ v8::Local<v8::Object> object);
325
+
326
+ static std::shared_ptr<KVStore> CreateMapKVStore();
327
+ };
328
+
276
329
  // Convenience wrapper around v8::String::NewFromOneByte().
277
330
  inline v8::Local<v8::String> OneByteString(v8::Isolate* isolate,
278
331
  const char* data,
@@ -302,14 +355,6 @@ inline v8::Local<v8::String> FIXED_ONE_BYTE_STRING(
302
355
  return OneByteString(isolate, arr.data(), N - 1);
303
356
  }
304
357
 
305
-
306
-
307
- // Swaps bytes in place. nbytes is the number of bytes to swap and must be a
308
- // multiple of the word size (checked by function).
309
- inline void SwapBytes16(char* data, size_t nbytes);
310
- inline void SwapBytes32(char* data, size_t nbytes);
311
- inline void SwapBytes64(char* data, size_t nbytes);
312
-
313
358
  // tolower() is locale-sensitive. Use ToLower() instead.
314
359
  inline char ToLower(char c);
315
360
  inline std::string ToLower(const std::string& in);
@@ -380,19 +425,7 @@ class MaybeStackBuffer {
380
425
  // This method can be called multiple times throughout the lifetime of the
381
426
  // buffer, but once this has been called Invalidate() cannot be used.
382
427
  // Content of the buffer in the range [0, length()) is preserved.
383
- void AllocateSufficientStorage(size_t storage) {
384
- CHECK(!IsInvalidated());
385
- if (storage > capacity()) {
386
- bool was_allocated = IsAllocated();
387
- T* allocated_ptr = was_allocated ? buf_ : nullptr;
388
- buf_ = Realloc(allocated_ptr, storage);
389
- capacity_ = storage;
390
- if (!was_allocated && length_ > 0)
391
- memcpy(buf_, buf_st_, length_ * sizeof(buf_[0]));
392
- }
393
-
394
- length_ = storage;
395
- }
428
+ void AllocateSufficientStorage(size_t storage);
396
429
 
397
430
  void SetLength(size_t length) {
398
431
  // capacity() returns how much memory is actually available.
@@ -454,6 +487,11 @@ class MaybeStackBuffer {
454
487
  free(buf_);
455
488
  }
456
489
 
490
+ inline std::basic_string<T> ToString() const { return {out(), length()}; }
491
+ inline std::basic_string_view<T> ToStringView() const {
492
+ return {out(), length()};
493
+ }
494
+
457
495
  private:
458
496
  size_t length_;
459
497
  // capacity of the malloc'ed buf_
@@ -470,18 +508,31 @@ class ArrayBufferViewContents {
470
508
  public:
471
509
  ArrayBufferViewContents() = default;
472
510
 
511
+ ArrayBufferViewContents(const ArrayBufferViewContents&) = delete;
512
+ void operator=(const ArrayBufferViewContents&) = delete;
513
+
473
514
  explicit inline ArrayBufferViewContents(v8::Local<v8::Value> value);
474
515
  explicit inline ArrayBufferViewContents(v8::Local<v8::Object> value);
475
516
  explicit inline ArrayBufferViewContents(v8::Local<v8::ArrayBufferView> abv);
476
517
  inline void Read(v8::Local<v8::ArrayBufferView> abv);
518
+ inline void ReadValue(v8::Local<v8::Value> buf);
477
519
 
520
+ inline bool WasDetached() const { return was_detached_; }
478
521
  inline const T* data() const { return data_; }
479
522
  inline size_t length() const { return length_; }
480
523
 
481
524
  private:
525
+ // Declaring operator new and delete as deleted is not spec compliant.
526
+ // Therefore, declare them private instead to disable dynamic alloc.
527
+ void* operator new(size_t size);
528
+ void* operator new[](size_t size);
529
+ void operator delete(void*, size_t);
530
+ void operator delete[](void*, size_t);
531
+
482
532
  T stack_storage_[kStackStorageSize];
483
533
  T* data_ = nullptr;
484
534
  size_t length_ = 0;
535
+ bool was_detached_ = false;
485
536
  };
486
537
 
487
538
  class Utf8Value : public MaybeStackBuffer<char> {
@@ -489,10 +540,12 @@ class Utf8Value : public MaybeStackBuffer<char> {
489
540
  explicit Utf8Value(v8::Isolate* isolate, v8::Local<v8::Value> value);
490
541
 
491
542
  inline std::string ToString() const { return std::string(out(), length()); }
492
-
493
- inline bool operator==(const char* a) const {
494
- return strcmp(out(), a) == 0;
543
+ inline std::string_view ToStringView() const {
544
+ return std::string_view(out(), length());
495
545
  }
546
+
547
+ inline bool operator==(const char* a) const { return strcmp(out(), a) == 0; }
548
+ inline bool operator!=(const char* a) const { return !(*this == a); }
496
549
  };
497
550
 
498
551
  class TwoByteValue : public MaybeStackBuffer<uint16_t> {
@@ -505,19 +558,23 @@ class BufferValue : public MaybeStackBuffer<char> {
505
558
  explicit BufferValue(v8::Isolate* isolate, v8::Local<v8::Value> value);
506
559
 
507
560
  inline std::string ToString() const { return std::string(out(), length()); }
561
+ inline std::string_view ToStringView() const {
562
+ return std::string_view(out(), length());
563
+ }
564
+ inline std::u8string_view ToU8StringView() const {
565
+ return std::u8string_view(reinterpret_cast<const char8_t*>(out()),
566
+ length());
567
+ }
508
568
  };
509
569
 
510
- #define SPREAD_BUFFER_ARG(val, name) \
511
- CHECK((val)->IsArrayBufferView()); \
512
- v8::Local<v8::ArrayBufferView> name = (val).As<v8::ArrayBufferView>(); \
513
- std::shared_ptr<v8::BackingStore> name##_bs = \
514
- name->Buffer()->GetBackingStore(); \
515
- const size_t name##_offset = name->ByteOffset(); \
516
- const size_t name##_length = name->ByteLength(); \
517
- char* const name##_data = \
518
- static_cast<char*>(name##_bs->Data()) + name##_offset; \
519
- if (name##_length > 0) \
520
- CHECK_NE(name##_data, nullptr);
570
+ #define SPREAD_BUFFER_ARG(val, name) \
571
+ CHECK((val)->IsArrayBufferView()); \
572
+ v8::Local<v8::ArrayBufferView> name = (val).As<v8::ArrayBufferView>(); \
573
+ const size_t name##_offset = name->ByteOffset(); \
574
+ const size_t name##_length = name->ByteLength(); \
575
+ char* const name##_data = \
576
+ static_cast<char*>(name->Buffer()->Data()) + name##_offset; \
577
+ if (name##_length > 0) CHECK_NE(name##_data, nullptr);
521
578
 
522
579
  // Use this when a variable or parameter is unused in order to explicitly
523
580
  // silence a compiler warning about that.
@@ -537,12 +594,6 @@ struct OnScopeLeaveImpl {
537
594
  : fn_(std::move(other.fn_)), active_(other.active_) {
538
595
  other.active_ = false;
539
596
  }
540
- OnScopeLeaveImpl& operator=(OnScopeLeaveImpl&& other) {
541
- if (this == &other) return *this;
542
- this->~OnScopeLeave();
543
- new (this)OnScopeLeaveImpl(std::move(other));
544
- return *this;
545
- }
546
597
  };
547
598
 
548
599
  // Run a function when exiting the current scope. Used like this:
@@ -567,7 +618,7 @@ struct MallocedBuffer {
567
618
  }
568
619
 
569
620
  void Truncate(size_t new_size) {
570
- CHECK(new_size <= size);
621
+ CHECK_LE(new_size, size);
571
622
  size = new_size;
572
623
  }
573
624
 
@@ -576,7 +627,7 @@ struct MallocedBuffer {
576
627
  data = UncheckedRealloc(data, new_size);
577
628
  }
578
629
 
579
- inline bool is_empty() const { return data == nullptr; }
630
+ bool is_empty() const { return data == nullptr; }
580
631
 
581
632
  MallocedBuffer() : data(nullptr), size(0) {}
582
633
  explicit MallocedBuffer(size_t size) : data(Malloc<T>(size)), size(size) {}
@@ -645,7 +696,18 @@ struct FunctionDeleter {
645
696
  template <typename T, void (*function)(T*)>
646
697
  using DeleteFnPtr = typename FunctionDeleter<T, function>::Pointer;
647
698
 
648
- std::vector<std::string> SplitString(const std::string& in, char delim);
699
+ // Convert a v8::Array into an std::vector using the callback-based API.
700
+ // This can be faster than calling Array::Get() repeatedly when the array
701
+ // has more than 2 entries.
702
+ // Note that iterating over an array in C++ and performing operations on each
703
+ // element in a C++ loop is still slower than iterating over the array in JS
704
+ // and calling into native in the JS loop repeatedly on each element,
705
+ // as of V8 11.9.
706
+ inline v8::Maybe<void> FromV8Array(v8::Local<v8::Context> context,
707
+ v8::Local<v8::Array> js_array,
708
+ std::vector<v8::Global<v8::Value>>* out);
709
+ std::vector<std::string_view> SplitString(const std::string_view in,
710
+ const std::string_view delim);
649
711
 
650
712
  inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
651
713
  std::string_view str,
@@ -714,40 +776,16 @@ inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
714
776
  .Check(); \
715
777
  } while (0)
716
778
 
717
- enum Endianness {
718
- kLittleEndian, // _Not_ LITTLE_ENDIAN, clashes with endian.h.
719
- kBigEndian
720
- };
721
-
722
- inline enum Endianness GetEndianness() {
723
- // Constant-folded by the compiler.
724
- const union {
725
- uint8_t u8[2];
726
- uint16_t u16;
727
- } u = {{1, 0}};
728
- return u.u16 == 1 ? kLittleEndian : kBigEndian;
729
- }
730
-
731
- inline bool IsLittleEndian() {
732
- return GetEndianness() == kLittleEndian;
779
+ constexpr inline bool IsLittleEndian() {
780
+ return std::endian::native == std::endian::little;
733
781
  }
734
782
 
735
- inline bool IsBigEndian() {
736
- return GetEndianness() == kBigEndian;
783
+ constexpr inline bool IsBigEndian() {
784
+ return std::endian::native == std::endian::big;
737
785
  }
738
786
 
739
- // Round up a to the next highest multiple of b.
740
- template <typename T>
741
- constexpr T RoundUp(T a, T b) {
742
- return a % b != 0 ? a + b - (a % b) : a;
743
- }
744
-
745
- // Align ptr to an `alignment`-bytes boundary.
746
- template <typename T, typename U>
747
- constexpr T* AlignUp(T* ptr, U alignment) {
748
- return reinterpret_cast<T*>(
749
- RoundUp(reinterpret_cast<uintptr_t>(ptr), alignment));
750
- }
787
+ static_assert(IsLittleEndian() || IsBigEndian(),
788
+ "Node.js does not support mixed-endian systems");
751
789
 
752
790
  class SlicedArguments : public MaybeStackBuffer<v8::Local<v8::Value>> {
753
791
  public:
@@ -799,20 +837,20 @@ class PersistentToLocal {
799
837
  // computations.
800
838
  class FastStringKey {
801
839
  public:
802
- constexpr explicit FastStringKey(const char* name);
840
+ constexpr explicit FastStringKey(std::string_view name);
803
841
 
804
842
  struct Hash {
805
843
  constexpr size_t operator()(const FastStringKey& key) const;
806
844
  };
807
845
  constexpr bool operator==(const FastStringKey& other) const;
808
846
 
809
- constexpr const char* c_str() const;
847
+ constexpr std::string_view as_string_view() const;
810
848
 
811
849
  private:
812
- static constexpr size_t HashImpl(const char* str);
850
+ static constexpr size_t HashImpl(std::string_view str);
813
851
 
814
- const char* name_;
815
- size_t cached_hash_;
852
+ const std::string_view name_;
853
+ const size_t cached_hash_;
816
854
  };
817
855
 
818
856
  // Like std::static_pointer_cast but for unique_ptr with the default deleter.
@@ -826,6 +864,155 @@ std::unique_ptr<T> static_unique_pointer_cast(std::unique_ptr<U>&& ptr) {
826
864
  // Returns a non-zero code if it fails to open or read the file,
827
865
  // aborts if it fails to close the file.
828
866
  int ReadFileSync(std::string* result, const char* path);
867
+ // Reads all contents of a FILE*, aborts if it fails.
868
+ std::vector<char> ReadFileSync(FILE* fp);
869
+
870
+ v8::Local<v8::FunctionTemplate> NewFunctionTemplate(
871
+ v8::Isolate* isolate,
872
+ v8::FunctionCallback callback,
873
+ v8::Local<v8::Signature> signature = v8::Local<v8::Signature>(),
874
+ v8::ConstructorBehavior behavior = v8::ConstructorBehavior::kAllow,
875
+ v8::SideEffectType side_effect = v8::SideEffectType::kHasSideEffect,
876
+ const v8::CFunction* c_function = nullptr);
877
+
878
+ // Convenience methods for NewFunctionTemplate().
879
+ void SetMethod(v8::Local<v8::Context> context,
880
+ v8::Local<v8::Object> that,
881
+ const std::string_view name,
882
+ v8::FunctionCallback callback);
883
+ // Similar to SetProtoMethod but without receiver signature checks.
884
+ void SetMethod(v8::Isolate* isolate,
885
+ v8::Local<v8::Template> that,
886
+ const std::string_view name,
887
+ v8::FunctionCallback callback);
888
+
889
+ void SetFastMethod(v8::Isolate* isolate,
890
+ v8::Local<v8::Template> that,
891
+ const std::string_view name,
892
+ v8::FunctionCallback slow_callback,
893
+ const v8::CFunction* c_function);
894
+ void SetFastMethod(v8::Local<v8::Context> context,
895
+ v8::Local<v8::Object> that,
896
+ const std::string_view name,
897
+ v8::FunctionCallback slow_callback,
898
+ const v8::CFunction* c_function);
899
+ void SetFastMethod(v8::Isolate* isolate,
900
+ v8::Local<v8::Template> that,
901
+ const std::string_view name,
902
+ v8::FunctionCallback slow_callback,
903
+ const v8::MemorySpan<const v8::CFunction>& methods);
904
+ void SetFastMethodNoSideEffect(v8::Isolate* isolate,
905
+ v8::Local<v8::Template> that,
906
+ const std::string_view name,
907
+ v8::FunctionCallback slow_callback,
908
+ const v8::CFunction* c_function);
909
+ void SetFastMethodNoSideEffect(v8::Local<v8::Context> context,
910
+ v8::Local<v8::Object> that,
911
+ const std::string_view name,
912
+ v8::FunctionCallback slow_callback,
913
+ const v8::CFunction* c_function);
914
+ void SetFastMethodNoSideEffect(
915
+ v8::Isolate* isolate,
916
+ v8::Local<v8::Template> that,
917
+ const std::string_view name,
918
+ v8::FunctionCallback slow_callback,
919
+ const v8::MemorySpan<const v8::CFunction>& methods);
920
+ void SetProtoMethod(v8::Isolate* isolate,
921
+ v8::Local<v8::FunctionTemplate> that,
922
+ const std::string_view name,
923
+ v8::FunctionCallback callback);
924
+
925
+ void SetInstanceMethod(v8::Isolate* isolate,
926
+ v8::Local<v8::FunctionTemplate> that,
927
+ const std::string_view name,
928
+ v8::FunctionCallback callback);
929
+
930
+ // Safe variants denote the function has no side effects.
931
+ void SetMethodNoSideEffect(v8::Local<v8::Context> context,
932
+ v8::Local<v8::Object> that,
933
+ const std::string_view name,
934
+ v8::FunctionCallback callback);
935
+ void SetProtoMethodNoSideEffect(v8::Isolate* isolate,
936
+ v8::Local<v8::FunctionTemplate> that,
937
+ const std::string_view name,
938
+ v8::FunctionCallback callback);
939
+ void SetMethodNoSideEffect(v8::Isolate* isolate,
940
+ v8::Local<v8::Template> that,
941
+ const std::string_view name,
942
+ v8::FunctionCallback callback);
943
+
944
+ enum class SetConstructorFunctionFlag {
945
+ NONE,
946
+ SET_CLASS_NAME,
947
+ };
948
+
949
+ void SetConstructorFunction(v8::Local<v8::Context> context,
950
+ v8::Local<v8::Object> that,
951
+ const char* name,
952
+ v8::Local<v8::FunctionTemplate> tmpl,
953
+ SetConstructorFunctionFlag flag =
954
+ SetConstructorFunctionFlag::SET_CLASS_NAME);
955
+
956
+ void SetConstructorFunction(v8::Local<v8::Context> context,
957
+ v8::Local<v8::Object> that,
958
+ v8::Local<v8::String> name,
959
+ v8::Local<v8::FunctionTemplate> tmpl,
960
+ SetConstructorFunctionFlag flag =
961
+ SetConstructorFunctionFlag::SET_CLASS_NAME);
962
+
963
+ void SetConstructorFunction(v8::Isolate* isolate,
964
+ v8::Local<v8::Template> that,
965
+ const char* name,
966
+ v8::Local<v8::FunctionTemplate> tmpl,
967
+ SetConstructorFunctionFlag flag =
968
+ SetConstructorFunctionFlag::SET_CLASS_NAME);
969
+
970
+ void SetConstructorFunction(v8::Isolate* isolate,
971
+ v8::Local<v8::Template> that,
972
+ v8::Local<v8::String> name,
973
+ v8::Local<v8::FunctionTemplate> tmpl,
974
+ SetConstructorFunctionFlag flag =
975
+ SetConstructorFunctionFlag::SET_CLASS_NAME);
976
+
977
+ // Like RAIIIsolate, except doesn't enter the isolate while it's in scope.
978
+ class RAIIIsolateWithoutEntering {
979
+ public:
980
+ explicit RAIIIsolateWithoutEntering(const SnapshotData* data = nullptr);
981
+ ~RAIIIsolateWithoutEntering();
982
+
983
+ v8::Isolate* get() const { return isolate_; }
984
+
985
+ private:
986
+ std::unique_ptr<v8::ArrayBuffer::Allocator> allocator_;
987
+ v8::Isolate* isolate_;
988
+ };
989
+
990
+ // Simple RAII class to spin up a v8::Isolate instance and enter it
991
+ // immediately.
992
+ class RAIIIsolate {
993
+ public:
994
+ explicit RAIIIsolate(const SnapshotData* data = nullptr);
995
+ ~RAIIIsolate();
996
+
997
+ v8::Isolate* get() const { return isolate_.get(); }
998
+
999
+ private:
1000
+ RAIIIsolateWithoutEntering isolate_;
1001
+ v8::Isolate::Scope isolate_scope_;
1002
+ };
1003
+
1004
+ std::string DetermineSpecificErrorType(Environment* env,
1005
+ v8::Local<v8::Value> input);
1006
+
1007
+ v8::Maybe<int32_t> GetValidatedFd(Environment* env, v8::Local<v8::Value> input);
1008
+ v8::Maybe<int> GetValidFileMode(Environment* env,
1009
+ v8::Local<v8::Value> input,
1010
+ uv_fs_type type);
1011
+
1012
+ // Returns true if OS==Windows and filename ends in .bat or .cmd,
1013
+ // case insensitive.
1014
+ inline bool IsWindowsBatchFile(const char* filename);
1015
+
829
1016
  } // namespace node
830
1017
 
831
1018
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS