@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,21 +24,33 @@
24
24
 
25
25
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
26
26
 
27
+ #include "uv.h"
28
+ #include "v8-inspector.h"
27
29
  #include "v8.h"
28
30
 
31
+ #include "node.h"
32
+ #include "node_exit_code.h"
33
+
29
34
  #include <climits>
30
35
  #include <cstddef>
31
36
  #include <cstdio>
32
37
  #include <cstdlib>
33
38
  #include <cstring>
34
39
 
35
- #include <functional> // std::function
40
+ #include <array>
41
+ #include <bit>
42
+ #include <filesystem>
36
43
  #include <limits>
44
+ #include <memory>
45
+ #include <optional>
46
+ #include <ranges>
37
47
  #include <set>
38
48
  #include <string>
39
- #include <array>
49
+ #include <string_view>
50
+ #include <type_traits>
40
51
  #include <unordered_map>
41
52
  #include <utility>
53
+ #include <vector>
42
54
 
43
55
  #ifdef __GNUC__
44
56
  #define MUST_USE_RESULT __attribute__((warn_unused_result))
@@ -48,13 +60,12 @@
48
60
 
49
61
  namespace node {
50
62
 
51
- // Maybe remove kPathSeparator when cpp17 is ready
63
+ constexpr char kPathSeparator = std::filesystem::path::preferred_separator;
64
+
52
65
  #ifdef _WIN32
53
- constexpr char kPathSeparator = '\\';
54
66
  /* MAX_PATH is in characters, not bytes. Make sure we have enough headroom. */
55
67
  #define PATH_MAX_BYTES (MAX_PATH * 4)
56
68
  #else
57
- constexpr char kPathSeparator = '/';
58
69
  #define PATH_MAX_BYTES (PATH_MAX)
59
70
  #endif
60
71
 
@@ -107,47 +118,65 @@ struct AssertionInfo {
107
118
  const char* message;
108
119
  const char* function;
109
120
  };
110
- [[noreturn]] void Assert(const AssertionInfo& info);
111
- [[noreturn]] void Abort();
112
- void DumpBacktrace(FILE* fp);
121
+
122
+ // This indirectly calls backtrace so it can not be marked as [[noreturn]].
123
+ void NODE_EXTERN_PRIVATE Assert(const AssertionInfo& info);
124
+ void DumpNativeBacktrace(FILE* fp);
125
+ void DumpJavaScriptBacktrace(FILE* fp);
113
126
 
114
127
  // Windows 8+ does not like abort() in Release mode
115
128
  #ifdef _WIN32
116
- #define ABORT_NO_BACKTRACE() _exit(134)
129
+ #define ABORT_NO_BACKTRACE() _exit(static_cast<int>(node::ExitCode::kAbort))
117
130
  #else
118
131
  #define ABORT_NO_BACKTRACE() abort()
119
132
  #endif
120
133
 
121
- #define ABORT() node::Abort()
134
+ // Caller of this macro must not be marked as [[noreturn]]. Printing of
135
+ // backtraces may not work correctly in [[noreturn]] functions because
136
+ // when generating code for them the compiler can choose not to
137
+ // maintain the frame pointers or link registers that are necessary for
138
+ // correct backtracing.
139
+ // `ABORT` must be a macro and not a [[noreturn]] function to make sure the
140
+ // backtrace is correct.
141
+ #define ABORT() \
142
+ do { \
143
+ node::DumpNativeBacktrace(stderr); \
144
+ node::DumpJavaScriptBacktrace(stderr); \
145
+ fflush(stderr); \
146
+ ABORT_NO_BACKTRACE(); \
147
+ } while (0)
122
148
 
123
- #define ERROR_AND_ABORT(expr) \
124
- do { \
125
- /* Make sure that this struct does not end up in inline code, but */ \
126
- /* rather in a read-only data section when modifying this code. */ \
127
- static const node::AssertionInfo args = { \
128
- __FILE__ ":" STRINGIFY(__LINE__), #expr, PRETTY_FUNCTION_NAME \
129
- }; \
130
- node::Assert(args); \
149
+ #define ERROR_AND_ABORT(expr) \
150
+ do { \
151
+ /* Make sure that this struct does not end up in inline code, but */ \
152
+ /* rather in a read-only data section when modifying this code. */ \
153
+ static const node::AssertionInfo error_and_abort_args = { \
154
+ __FILE__ ":" STRINGIFY(__LINE__), #expr, PRETTY_FUNCTION_NAME}; \
155
+ node::Assert(error_and_abort_args); \
156
+ /* `node::Assert` doesn't return. Add an [[noreturn]] abort() here to */ \
157
+ /* make the compiler happy about no return value in the caller */ \
158
+ /* function when calling ERROR_AND_ABORT. */ \
159
+ ABORT_NO_BACKTRACE(); \
131
160
  } while (0)
132
161
 
133
162
  #ifdef __GNUC__
134
- #define LIKELY(expr) __builtin_expect(!!(expr), 1)
135
- #define UNLIKELY(expr) __builtin_expect(!!(expr), 0)
136
163
  #define PRETTY_FUNCTION_NAME __PRETTY_FUNCTION__
137
164
  #else
138
- #define LIKELY(expr) expr
139
- #define UNLIKELY(expr) expr
165
+ #if defined(_MSC_VER)
166
+ #define PRETTY_FUNCTION_NAME __FUNCSIG__
167
+ #else
140
168
  #define PRETTY_FUNCTION_NAME ""
141
169
  #endif
170
+ #endif
142
171
 
143
172
  #define STRINGIFY_(x) #x
144
173
  #define STRINGIFY(x) STRINGIFY_(x)
145
174
 
146
- #define CHECK(expr) \
147
- do { \
148
- if (UNLIKELY(!(expr))) { \
149
- ERROR_AND_ABORT(expr); \
150
- } \
175
+ #define CHECK(expr) \
176
+ do { \
177
+ if (!(expr)) [[unlikely]] { \
178
+ ERROR_AND_ABORT(expr); \
179
+ } \
151
180
  } while (0)
152
181
 
153
182
  #define CHECK_EQ(a, b) CHECK((a) == (b))
@@ -188,7 +217,7 @@ void DumpBacktrace(FILE* fp);
188
217
  #define UNREACHABLE(...) \
189
218
  ERROR_AND_ABORT("Unreachable code reached" __VA_OPT__(": ") __VA_ARGS__)
190
219
 
191
- // ECMA262 20.1.2.6 Number.MAX_SAFE_INTEGER (2^53-1)
220
+ // ECMA-262, 15th edition, 21.1.2.6. Number.MAX_SAFE_INTEGER (2^53-1)
192
221
  constexpr int64_t kMaxSafeJsInteger = 9007199254740991;
193
222
 
194
223
  inline bool IsSafeJsInt(v8::Local<v8::Value> v);
@@ -268,6 +297,37 @@ template <typename Inner, typename Outer>
268
297
  constexpr ContainerOfHelper<Inner, Outer> ContainerOf(Inner Outer::*field,
269
298
  Inner* pointer);
270
299
 
300
+ class KVStore {
301
+ public:
302
+ KVStore() = default;
303
+ virtual ~KVStore() = default;
304
+ KVStore(const KVStore&) = delete;
305
+ KVStore& operator=(const KVStore&) = delete;
306
+ KVStore(KVStore&&) = delete;
307
+ KVStore& operator=(KVStore&&) = delete;
308
+
309
+ virtual v8::MaybeLocal<v8::String> Get(v8::Isolate* isolate,
310
+ v8::Local<v8::String> key) const = 0;
311
+ virtual std::optional<std::string> Get(const char* key) const = 0;
312
+ virtual void Set(v8::Isolate* isolate,
313
+ v8::Local<v8::String> key,
314
+ v8::Local<v8::String> value) = 0;
315
+ virtual int32_t Query(v8::Isolate* isolate,
316
+ v8::Local<v8::String> key) const = 0;
317
+ virtual int32_t Query(const char* key) const = 0;
318
+ virtual void Delete(v8::Isolate* isolate, v8::Local<v8::String> key) = 0;
319
+ virtual v8::MaybeLocal<v8::Array> Enumerate(v8::Isolate* isolate) const = 0;
320
+
321
+ virtual std::shared_ptr<KVStore> Clone(v8::Isolate* isolate) const;
322
+ virtual v8::Maybe<void> AssignFromObject(v8::Local<v8::Context> context,
323
+ v8::Local<v8::Object> entries);
324
+ v8::Maybe<void> AssignToObject(v8::Isolate* isolate,
325
+ v8::Local<v8::Context> context,
326
+ v8::Local<v8::Object> object);
327
+
328
+ static std::shared_ptr<KVStore> CreateMapKVStore();
329
+ };
330
+
271
331
  // Convenience wrapper around v8::String::NewFromOneByte().
272
332
  inline v8::Local<v8::String> OneByteString(v8::Isolate* isolate,
273
333
  const char* data,
@@ -282,29 +342,26 @@ inline v8::Local<v8::String> OneByteString(v8::Isolate* isolate,
282
342
  const unsigned char* data,
283
343
  int length = -1);
284
344
 
345
+ inline v8::Local<v8::String> OneByteString(v8::Isolate* isolate,
346
+ std::string_view str);
347
+
285
348
  // Used to be a macro, hence the uppercase name.
286
- template <int N>
287
- inline v8::Local<v8::String> FIXED_ONE_BYTE_STRING(
288
- v8::Isolate* isolate,
289
- const char(&data)[N]) {
349
+ template <std::size_t N>
350
+ requires(N > 0)
351
+ inline v8::Local<v8::String> FIXED_ONE_BYTE_STRING(v8::Isolate* isolate,
352
+ const char (&data)[N]) {
353
+ CHECK_EQ(data[N - 1], '\0');
290
354
  return OneByteString(isolate, data, N - 1);
291
355
  }
292
356
 
293
357
  template <std::size_t N>
358
+ requires(N > 0)
294
359
  inline v8::Local<v8::String> FIXED_ONE_BYTE_STRING(
295
- v8::Isolate* isolate,
296
- const std::array<char, N>& arr) {
360
+ v8::Isolate* isolate, const std::array<char, N>& arr) {
361
+ CHECK_EQ(arr[N - 1], '\0');
297
362
  return OneByteString(isolate, arr.data(), N - 1);
298
363
  }
299
364
 
300
-
301
-
302
- // Swaps bytes in place. nbytes is the number of bytes to swap and must be a
303
- // multiple of the word size (checked by function).
304
- inline void SwapBytes16(char* data, size_t nbytes);
305
- inline void SwapBytes32(char* data, size_t nbytes);
306
- inline void SwapBytes64(char* data, size_t nbytes);
307
-
308
365
  // tolower() is locale-sensitive. Use ToLower() instead.
309
366
  inline char ToLower(char c);
310
367
  inline std::string ToLower(const std::string& in);
@@ -334,6 +391,11 @@ constexpr size_t strsize(const T (&)[N]) {
334
391
  template <typename T, size_t kStackStorageSize = 1024>
335
392
  class MaybeStackBuffer {
336
393
  public:
394
+ // Disallow copy constructor
395
+ MaybeStackBuffer(const MaybeStackBuffer&) = delete;
396
+ // Disallow copy assignment operator
397
+ MaybeStackBuffer& operator=(const MaybeStackBuffer& other) = delete;
398
+
337
399
  const T* out() const {
338
400
  return buf_;
339
401
  }
@@ -375,19 +437,7 @@ class MaybeStackBuffer {
375
437
  // This method can be called multiple times throughout the lifetime of the
376
438
  // buffer, but once this has been called Invalidate() cannot be used.
377
439
  // Content of the buffer in the range [0, length()) is preserved.
378
- void AllocateSufficientStorage(size_t storage) {
379
- CHECK(!IsInvalidated());
380
- if (storage > capacity()) {
381
- bool was_allocated = IsAllocated();
382
- T* allocated_ptr = was_allocated ? buf_ : nullptr;
383
- buf_ = Realloc(allocated_ptr, storage);
384
- capacity_ = storage;
385
- if (!was_allocated && length_ > 0)
386
- memcpy(buf_, buf_st_, length_ * sizeof(buf_[0]));
387
- }
388
-
389
- length_ = storage;
390
- }
440
+ void AllocateSufficientStorage(size_t storage);
391
441
 
392
442
  void SetLength(size_t length) {
393
443
  // capacity() returns how much memory is actually available.
@@ -449,6 +499,11 @@ class MaybeStackBuffer {
449
499
  free(buf_);
450
500
  }
451
501
 
502
+ inline std::basic_string<T> ToString() const { return {out(), length()}; }
503
+ inline std::basic_string_view<T> ToStringView() const {
504
+ return {out(), length()};
505
+ }
506
+
452
507
  private:
453
508
  size_t length_;
454
509
  // capacity of the malloc'ed buf_
@@ -465,18 +520,31 @@ class ArrayBufferViewContents {
465
520
  public:
466
521
  ArrayBufferViewContents() = default;
467
522
 
523
+ ArrayBufferViewContents(const ArrayBufferViewContents&) = delete;
524
+ void operator=(const ArrayBufferViewContents&) = delete;
525
+
468
526
  explicit inline ArrayBufferViewContents(v8::Local<v8::Value> value);
469
527
  explicit inline ArrayBufferViewContents(v8::Local<v8::Object> value);
470
528
  explicit inline ArrayBufferViewContents(v8::Local<v8::ArrayBufferView> abv);
471
529
  inline void Read(v8::Local<v8::ArrayBufferView> abv);
530
+ inline void ReadValue(v8::Local<v8::Value> buf);
472
531
 
532
+ inline bool WasDetached() const { return was_detached_; }
473
533
  inline const T* data() const { return data_; }
474
534
  inline size_t length() const { return length_; }
475
535
 
476
536
  private:
537
+ // Declaring operator new and delete as deleted is not spec compliant.
538
+ // Therefore, declare them private instead to disable dynamic alloc.
539
+ void* operator new(size_t size);
540
+ void* operator new[](size_t size);
541
+ void operator delete(void*, size_t);
542
+ void operator delete[](void*, size_t);
543
+
477
544
  T stack_storage_[kStackStorageSize];
478
545
  T* data_ = nullptr;
479
546
  size_t length_ = 0;
547
+ bool was_detached_ = false;
480
548
  };
481
549
 
482
550
  class Utf8Value : public MaybeStackBuffer<char> {
@@ -484,10 +552,12 @@ class Utf8Value : public MaybeStackBuffer<char> {
484
552
  explicit Utf8Value(v8::Isolate* isolate, v8::Local<v8::Value> value);
485
553
 
486
554
  inline std::string ToString() const { return std::string(out(), length()); }
487
-
488
- inline bool operator==(const char* a) const {
489
- return strcmp(out(), a) == 0;
555
+ inline std::string_view ToStringView() const {
556
+ return std::string_view(out(), length());
490
557
  }
558
+
559
+ inline bool operator==(const char* a) const { return strcmp(out(), a) == 0; }
560
+ inline bool operator!=(const char* a) const { return !(*this == a); }
491
561
  };
492
562
 
493
563
  class TwoByteValue : public MaybeStackBuffer<uint16_t> {
@@ -500,19 +570,23 @@ class BufferValue : public MaybeStackBuffer<char> {
500
570
  explicit BufferValue(v8::Isolate* isolate, v8::Local<v8::Value> value);
501
571
 
502
572
  inline std::string ToString() const { return std::string(out(), length()); }
573
+ inline std::string_view ToStringView() const {
574
+ return std::string_view(out(), length());
575
+ }
576
+ inline std::u8string_view ToU8StringView() const {
577
+ return std::u8string_view(reinterpret_cast<const char8_t*>(out()),
578
+ length());
579
+ }
503
580
  };
504
581
 
505
- #define SPREAD_BUFFER_ARG(val, name) \
506
- CHECK((val)->IsArrayBufferView()); \
507
- v8::Local<v8::ArrayBufferView> name = (val).As<v8::ArrayBufferView>(); \
508
- std::shared_ptr<v8::BackingStore> name##_bs = \
509
- name->Buffer()->GetBackingStore(); \
510
- const size_t name##_offset = name->ByteOffset(); \
511
- const size_t name##_length = name->ByteLength(); \
512
- char* const name##_data = \
513
- static_cast<char*>(name##_bs->Data()) + name##_offset; \
514
- if (name##_length > 0) \
515
- CHECK_NE(name##_data, nullptr);
582
+ #define SPREAD_BUFFER_ARG(val, name) \
583
+ CHECK((val)->IsArrayBufferView()); \
584
+ v8::Local<v8::ArrayBufferView> name = (val).As<v8::ArrayBufferView>(); \
585
+ const size_t name##_offset = name->ByteOffset(); \
586
+ const size_t name##_length = name->ByteLength(); \
587
+ char* const name##_data = \
588
+ static_cast<char*>(name->Buffer()->Data()) + name##_offset; \
589
+ if (name##_length > 0) CHECK_NE(name##_data, nullptr);
516
590
 
517
591
  // Use this when a variable or parameter is unused in order to explicitly
518
592
  // silence a compiler warning about that.
@@ -532,12 +606,6 @@ struct OnScopeLeaveImpl {
532
606
  : fn_(std::move(other.fn_)), active_(other.active_) {
533
607
  other.active_ = false;
534
608
  }
535
- OnScopeLeaveImpl& operator=(OnScopeLeaveImpl&& other) {
536
- if (this == &other) return *this;
537
- this->~OnScopeLeave();
538
- new (this)OnScopeLeaveImpl(std::move(other));
539
- return *this;
540
- }
541
609
  };
542
610
 
543
611
  // Run a function when exiting the current scope. Used like this:
@@ -562,7 +630,7 @@ struct MallocedBuffer {
562
630
  }
563
631
 
564
632
  void Truncate(size_t new_size) {
565
- CHECK(new_size <= size);
633
+ CHECK_LE(new_size, size);
566
634
  size = new_size;
567
635
  }
568
636
 
@@ -571,7 +639,7 @@ struct MallocedBuffer {
571
639
  data = UncheckedRealloc(data, new_size);
572
640
  }
573
641
 
574
- inline bool is_empty() const { return data == nullptr; }
642
+ bool is_empty() const { return data == nullptr; }
575
643
 
576
644
  MallocedBuffer() : data(nullptr), size(0) {}
577
645
  explicit MallocedBuffer(size_t size) : data(Malloc<T>(size)), size(size) {}
@@ -590,38 +658,6 @@ struct MallocedBuffer {
590
658
  MallocedBuffer& operator=(const MallocedBuffer&) = delete;
591
659
  };
592
660
 
593
- template <typename T>
594
- class NonCopyableMaybe {
595
- public:
596
- NonCopyableMaybe() : empty_(true) {}
597
- explicit NonCopyableMaybe(T&& value)
598
- : empty_(false),
599
- value_(std::move(value)) {}
600
-
601
- bool IsEmpty() const {
602
- return empty_;
603
- }
604
-
605
- const T* get() const {
606
- return empty_ ? nullptr : &value_;
607
- }
608
-
609
- const T* operator->() const {
610
- CHECK(!empty_);
611
- return &value_;
612
- }
613
-
614
- T&& Release() {
615
- CHECK_EQ(empty_, false);
616
- empty_ = true;
617
- return std::move(value_);
618
- }
619
-
620
- private:
621
- bool empty_;
622
- T value_;
623
- };
624
-
625
661
  // Test whether some value can be called with ().
626
662
  template <typename T, typename = void>
627
663
  struct is_callable : std::is_function<T> { };
@@ -640,11 +676,23 @@ struct FunctionDeleter {
640
676
  template <typename T, void (*function)(T*)>
641
677
  using DeleteFnPtr = typename FunctionDeleter<T, function>::Pointer;
642
678
 
643
- std::vector<std::string> SplitString(const std::string& in, char delim);
679
+ // Convert a v8::Array into an std::vector using the callback-based API.
680
+ // This can be faster than calling Array::Get() repeatedly when the array
681
+ // has more than 2 entries.
682
+ // Note that iterating over an array in C++ and performing operations on each
683
+ // element in a C++ loop is still slower than iterating over the array in JS
684
+ // and calling into native in the JS loop repeatedly on each element,
685
+ // as of V8 11.9.
686
+ inline v8::Maybe<void> FromV8Array(v8::Local<v8::Context> context,
687
+ v8::Local<v8::Array> js_array,
688
+ std::vector<v8::Global<v8::Value>>* out);
644
689
 
645
690
  inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
646
- const std::string& str,
691
+ std::string_view str,
647
692
  v8::Isolate* isolate = nullptr);
693
+ inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
694
+ v8_inspector::StringView str,
695
+ v8::Isolate* isolate);
648
696
  template <typename T, typename test_for_number =
649
697
  typename std::enable_if<std::numeric_limits<T>::is_specialized, bool>::type>
650
698
  inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
@@ -654,11 +702,21 @@ template <typename T>
654
702
  inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
655
703
  const std::vector<T>& vec,
656
704
  v8::Isolate* isolate = nullptr);
705
+ template <typename T>
706
+ inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
707
+ const std::set<T>& set,
708
+ v8::Isolate* isolate = nullptr);
657
709
  template <typename T, typename U>
658
710
  inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
659
711
  const std::unordered_map<T, U>& map,
660
712
  v8::Isolate* isolate = nullptr);
661
713
 
714
+ template <typename T, std::size_t U>
715
+ inline v8::MaybeLocal<v8::Value> ToV8Value(
716
+ v8::Local<v8::Context> context,
717
+ const std::ranges::elements_view<T, U>& vec,
718
+ v8::Isolate* isolate = nullptr);
719
+
662
720
  // These macros expects a `Isolate* isolate` and a `Local<Context> context`
663
721
  // to be in the scope.
664
722
  #define READONLY_PROPERTY(obj, name, value) \
@@ -705,40 +763,16 @@ inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
705
763
  .Check(); \
706
764
  } while (0)
707
765
 
708
- enum Endianness {
709
- kLittleEndian, // _Not_ LITTLE_ENDIAN, clashes with endian.h.
710
- kBigEndian
711
- };
712
-
713
- inline enum Endianness GetEndianness() {
714
- // Constant-folded by the compiler.
715
- const union {
716
- uint8_t u8[2];
717
- uint16_t u16;
718
- } u = {{1, 0}};
719
- return u.u16 == 1 ? kLittleEndian : kBigEndian;
766
+ constexpr inline bool IsLittleEndian() {
767
+ return std::endian::native == std::endian::little;
720
768
  }
721
769
 
722
- inline bool IsLittleEndian() {
723
- return GetEndianness() == kLittleEndian;
770
+ constexpr inline bool IsBigEndian() {
771
+ return std::endian::native == std::endian::big;
724
772
  }
725
773
 
726
- inline bool IsBigEndian() {
727
- return GetEndianness() == kBigEndian;
728
- }
729
-
730
- // Round up a to the next highest multiple of b.
731
- template <typename T>
732
- constexpr T RoundUp(T a, T b) {
733
- return a % b != 0 ? a + b - (a % b) : a;
734
- }
735
-
736
- // Align ptr to an `alignment`-bytes boundary.
737
- template <typename T, typename U>
738
- constexpr T* AlignUp(T* ptr, U alignment) {
739
- return reinterpret_cast<T*>(
740
- RoundUp(reinterpret_cast<uintptr_t>(ptr), alignment));
741
- }
774
+ static_assert(IsLittleEndian() || IsBigEndian(),
775
+ "Node.js does not support mixed-endian systems");
742
776
 
743
777
  class SlicedArguments : public MaybeStackBuffer<v8::Local<v8::Value>> {
744
778
  public:
@@ -790,20 +824,26 @@ class PersistentToLocal {
790
824
  // computations.
791
825
  class FastStringKey {
792
826
  public:
793
- constexpr explicit FastStringKey(const char* name);
827
+ // consteval ensures that the argument is a compile-time constant.
828
+ consteval explicit FastStringKey(std::string_view name);
829
+ // passing something that is not a compile-time constant needs explicit
830
+ // opt-in via this helper, as it defeats the purpose of FastStringKey.
831
+ static constexpr FastStringKey AllowDynamic(std::string_view name);
794
832
 
795
833
  struct Hash {
796
834
  constexpr size_t operator()(const FastStringKey& key) const;
797
835
  };
798
836
  constexpr bool operator==(const FastStringKey& other) const;
799
837
 
800
- constexpr const char* c_str() const;
838
+ constexpr std::string_view as_string_view() const;
801
839
 
802
840
  private:
803
- static constexpr size_t HashImpl(const char* str);
841
+ constexpr explicit FastStringKey(std::string_view name, int dummy);
842
+
843
+ static constexpr size_t HashImpl(std::string_view str);
804
844
 
805
- const char* name_;
806
- size_t cached_hash_;
845
+ const std::string_view name_;
846
+ const size_t cached_hash_;
807
847
  };
808
848
 
809
849
  // Like std::static_pointer_cast but for unique_ptr with the default deleter.
@@ -817,6 +857,158 @@ std::unique_ptr<T> static_unique_pointer_cast(std::unique_ptr<U>&& ptr) {
817
857
  // Returns a non-zero code if it fails to open or read the file,
818
858
  // aborts if it fails to close the file.
819
859
  int ReadFileSync(std::string* result, const char* path);
860
+ // Reads all contents of a FILE*, aborts if it fails.
861
+ std::vector<char> ReadFileSync(FILE* fp);
862
+
863
+ v8::Local<v8::FunctionTemplate> NewFunctionTemplate(
864
+ v8::Isolate* isolate,
865
+ v8::FunctionCallback callback,
866
+ v8::Local<v8::Signature> signature = v8::Local<v8::Signature>(),
867
+ v8::ConstructorBehavior behavior = v8::ConstructorBehavior::kAllow,
868
+ v8::SideEffectType side_effect = v8::SideEffectType::kHasSideEffect,
869
+ const v8::CFunction* c_function = nullptr);
870
+
871
+ // Convenience methods for NewFunctionTemplate().
872
+ void SetMethod(v8::Local<v8::Context> context,
873
+ v8::Local<v8::Object> that,
874
+ const std::string_view name,
875
+ v8::FunctionCallback callback);
876
+ // Similar to SetProtoMethod but without receiver signature checks.
877
+ void SetMethod(v8::Isolate* isolate,
878
+ v8::Local<v8::Template> that,
879
+ const std::string_view name,
880
+ v8::FunctionCallback callback);
881
+
882
+ void SetFastMethod(v8::Isolate* isolate,
883
+ v8::Local<v8::Template> that,
884
+ const std::string_view name,
885
+ v8::FunctionCallback slow_callback,
886
+ const v8::CFunction* c_function);
887
+ void SetFastMethod(v8::Local<v8::Context> context,
888
+ v8::Local<v8::Object> that,
889
+ const std::string_view name,
890
+ v8::FunctionCallback slow_callback,
891
+ const v8::CFunction* c_function);
892
+ void SetFastMethod(v8::Isolate* isolate,
893
+ v8::Local<v8::Template> that,
894
+ const std::string_view name,
895
+ v8::FunctionCallback slow_callback,
896
+ const v8::MemorySpan<const v8::CFunction>& methods);
897
+ void SetFastMethodNoSideEffect(v8::Isolate* isolate,
898
+ v8::Local<v8::Template> that,
899
+ const std::string_view name,
900
+ v8::FunctionCallback slow_callback,
901
+ const v8::CFunction* c_function);
902
+ void SetFastMethodNoSideEffect(v8::Local<v8::Context> context,
903
+ v8::Local<v8::Object> that,
904
+ const std::string_view name,
905
+ v8::FunctionCallback slow_callback,
906
+ const v8::CFunction* c_function);
907
+ void SetFastMethodNoSideEffect(
908
+ v8::Isolate* isolate,
909
+ v8::Local<v8::Template> that,
910
+ const std::string_view name,
911
+ v8::FunctionCallback slow_callback,
912
+ const v8::MemorySpan<const v8::CFunction>& methods);
913
+ void SetProtoMethod(v8::Isolate* isolate,
914
+ v8::Local<v8::FunctionTemplate> that,
915
+ const std::string_view name,
916
+ v8::FunctionCallback callback);
917
+
918
+ void SetInstanceMethod(v8::Isolate* isolate,
919
+ v8::Local<v8::FunctionTemplate> that,
920
+ const std::string_view name,
921
+ v8::FunctionCallback callback);
922
+
923
+ // Safe variants denote the function has no side effects.
924
+ void SetMethodNoSideEffect(v8::Local<v8::Context> context,
925
+ v8::Local<v8::Object> that,
926
+ const std::string_view name,
927
+ v8::FunctionCallback callback);
928
+ void SetProtoMethodNoSideEffect(v8::Isolate* isolate,
929
+ v8::Local<v8::FunctionTemplate> that,
930
+ const std::string_view name,
931
+ v8::FunctionCallback callback);
932
+ void SetMethodNoSideEffect(v8::Isolate* isolate,
933
+ v8::Local<v8::Template> that,
934
+ const std::string_view name,
935
+ v8::FunctionCallback callback);
936
+
937
+ enum class SetConstructorFunctionFlag {
938
+ NONE,
939
+ SET_CLASS_NAME,
940
+ };
941
+
942
+ void SetConstructorFunction(v8::Local<v8::Context> context,
943
+ v8::Local<v8::Object> that,
944
+ const char* name,
945
+ v8::Local<v8::FunctionTemplate> tmpl,
946
+ SetConstructorFunctionFlag flag =
947
+ SetConstructorFunctionFlag::SET_CLASS_NAME);
948
+
949
+ void SetConstructorFunction(v8::Local<v8::Context> context,
950
+ v8::Local<v8::Object> that,
951
+ v8::Local<v8::String> name,
952
+ v8::Local<v8::FunctionTemplate> tmpl,
953
+ SetConstructorFunctionFlag flag =
954
+ SetConstructorFunctionFlag::SET_CLASS_NAME);
955
+
956
+ void SetConstructorFunction(v8::Isolate* isolate,
957
+ v8::Local<v8::Template> that,
958
+ const char* 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
+ v8::Local<v8::String> name,
966
+ v8::Local<v8::FunctionTemplate> tmpl,
967
+ SetConstructorFunctionFlag flag =
968
+ SetConstructorFunctionFlag::SET_CLASS_NAME);
969
+
970
+ // Like RAIIIsolate, except doesn't enter the isolate while it's in scope.
971
+ class RAIIIsolateWithoutEntering {
972
+ public:
973
+ explicit RAIIIsolateWithoutEntering(const SnapshotData* data = nullptr);
974
+ ~RAIIIsolateWithoutEntering();
975
+
976
+ v8::Isolate* get() const { return isolate_; }
977
+
978
+ private:
979
+ std::unique_ptr<v8::ArrayBuffer::Allocator> allocator_;
980
+ v8::Isolate* isolate_;
981
+ };
982
+
983
+ // Simple RAII class to spin up a v8::Isolate instance and enter it
984
+ // immediately.
985
+ class RAIIIsolate {
986
+ public:
987
+ explicit RAIIIsolate(const SnapshotData* data = nullptr);
988
+ ~RAIIIsolate();
989
+
990
+ v8::Isolate* get() const { return isolate_.get(); }
991
+
992
+ private:
993
+ RAIIIsolateWithoutEntering isolate_;
994
+ v8::Isolate::Scope isolate_scope_;
995
+ };
996
+
997
+ std::string DetermineSpecificErrorType(Environment* env,
998
+ v8::Local<v8::Value> input);
999
+
1000
+ v8::Maybe<int32_t> GetValidatedFd(Environment* env, v8::Local<v8::Value> input);
1001
+ v8::Maybe<int> GetValidFileMode(Environment* env,
1002
+ v8::Local<v8::Value> input,
1003
+ uv_fs_type type);
1004
+
1005
+ #ifdef _WIN32
1006
+ // Returns true if OS==Windows and filename ends in .bat or .cmd,
1007
+ // case insensitive.
1008
+ inline bool IsWindowsBatchFile(const char* filename);
1009
+ inline std::wstring ConvertToWideString(const std::string& str, UINT code_page);
1010
+ #endif // _WIN32
1011
+
820
1012
  } // namespace node
821
1013
 
822
1014
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS