@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
@@ -86,13 +86,22 @@ template <typename NativeT, typename V8T>
86
86
  void FillStatsArray(AliasedBufferBase<NativeT, V8T>* fields,
87
87
  const uv_stat_t* s,
88
88
  const size_t offset) {
89
- #define SET_FIELD_WITH_STAT(stat_offset, stat) \
90
- fields->SetValue(offset + static_cast<size_t>(FsStatsOffset::stat_offset), \
89
+ #define SET_FIELD_WITH_STAT(stat_offset, stat) \
90
+ fields->SetValue(offset + static_cast<size_t>(FsStatsOffset::stat_offset), \
91
91
  static_cast<NativeT>(stat))
92
92
 
93
- #define SET_FIELD_WITH_TIME_STAT(stat_offset, stat) \
94
- /* NOLINTNEXTLINE(runtime/int) */ \
93
+ // On win32, time is stored in uint64_t and starts from 1601-01-01.
94
+ // libuv calculates tv_sec and tv_nsec from it and converts to signed long,
95
+ // which causes Y2038 overflow. On the other platforms it is safe to treat
96
+ // negative values as pre-epoch time.
97
+ #ifdef _WIN32
98
+ #define SET_FIELD_WITH_TIME_STAT(stat_offset, stat) \
99
+ /* NOLINTNEXTLINE(runtime/int) */ \
95
100
  SET_FIELD_WITH_STAT(stat_offset, static_cast<unsigned long>(stat))
101
+ #else
102
+ #define SET_FIELD_WITH_TIME_STAT(stat_offset, stat) \
103
+ SET_FIELD_WITH_STAT(stat_offset, static_cast<double>(stat))
104
+ #endif // _WIN32
96
105
 
97
106
  SET_FIELD_WITH_STAT(kDev, s->st_dev);
98
107
  SET_FIELD_WITH_STAT(kMode, s->st_mode);
@@ -135,6 +144,38 @@ v8::Local<v8::Value> FillGlobalStatsArray(BindingData* binding_data,
135
144
  }
136
145
  }
137
146
 
147
+ template <typename NativeT, typename V8T>
148
+ void FillStatFsArray(AliasedBufferBase<NativeT, V8T>* fields,
149
+ const uv_statfs_t* s) {
150
+ #define SET_FIELD(field, stat) \
151
+ fields->SetValue(static_cast<size_t>(FsStatFsOffset::field), \
152
+ static_cast<NativeT>(stat))
153
+
154
+ SET_FIELD(kType, s->f_type);
155
+ SET_FIELD(kBSize, s->f_bsize);
156
+ SET_FIELD(kBlocks, s->f_blocks);
157
+ SET_FIELD(kBFree, s->f_bfree);
158
+ SET_FIELD(kBAvail, s->f_bavail);
159
+ SET_FIELD(kFiles, s->f_files);
160
+ SET_FIELD(kFFree, s->f_ffree);
161
+
162
+ #undef SET_FIELD
163
+ }
164
+
165
+ v8::Local<v8::Value> FillGlobalStatFsArray(BindingData* binding_data,
166
+ const bool use_bigint,
167
+ const uv_statfs_t* s) {
168
+ if (use_bigint) {
169
+ auto* const arr = &binding_data->statfs_field_bigint_array;
170
+ FillStatFsArray(arr, s);
171
+ return arr->GetJSArray();
172
+ } else {
173
+ auto* const arr = &binding_data->statfs_field_array;
174
+ FillStatFsArray(arr, s);
175
+ return arr->GetJSArray();
176
+ }
177
+ }
178
+
138
179
  template <typename AliasedBufferT>
139
180
  FSReqPromise<AliasedBufferT>*
140
181
  FSReqPromise<AliasedBufferT>::New(BindingData* binding_data,
@@ -156,31 +197,39 @@ FSReqPromise<AliasedBufferT>::New(BindingData* binding_data,
156
197
 
157
198
  template <typename AliasedBufferT>
158
199
  FSReqPromise<AliasedBufferT>::~FSReqPromise() {
159
- // Validate that the promise was explicitly resolved or rejected.
160
- CHECK(finished_);
200
+ // Validate that the promise was explicitly resolved or rejected but only if
201
+ // the Isolate is not terminating because in this case the promise might have
202
+ // not finished.
203
+ CHECK_IMPLIES(!finished_, !env()->can_call_into_js());
161
204
  }
162
205
 
163
206
  template <typename AliasedBufferT>
164
- FSReqPromise<AliasedBufferT>::FSReqPromise(
165
- BindingData* binding_data,
166
- v8::Local<v8::Object> obj,
167
- bool use_bigint)
168
- : FSReqBase(binding_data,
169
- obj,
170
- AsyncWrap::PROVIDER_FSREQPROMISE,
171
- use_bigint),
172
- stats_field_array_(
173
- env()->isolate(),
174
- static_cast<size_t>(FsStatsOffset::kFsStatsFieldsNumber)) {}
207
+ FSReqPromise<AliasedBufferT>::FSReqPromise(BindingData* binding_data,
208
+ v8::Local<v8::Object> obj,
209
+ bool use_bigint)
210
+ : FSReqBase(
211
+ binding_data, obj, AsyncWrap::PROVIDER_FSREQPROMISE, use_bigint),
212
+ stats_field_array_(
213
+ env()->isolate(),
214
+ static_cast<size_t>(FsStatsOffset::kFsStatsFieldsNumber)),
215
+ statfs_field_array_(
216
+ env()->isolate(),
217
+ static_cast<size_t>(FsStatFsOffset::kFsStatFsFieldsNumber)) {}
175
218
 
176
219
  template <typename AliasedBufferT>
177
220
  void FSReqPromise<AliasedBufferT>::Reject(v8::Local<v8::Value> reject) {
178
221
  finished_ = true;
179
222
  v8::HandleScope scope(env()->isolate());
180
223
  InternalCallbackScope callback_scope(this);
181
- v8::Local<v8::Value> value =
182
- object()->Get(env()->context(),
183
- env()->promise_string()).ToLocalChecked();
224
+ v8::Local<v8::Value> value;
225
+ if (!object()
226
+ ->Get(env()->context(), env()->promise_string())
227
+ .ToLocal(&value)) {
228
+ // If we hit this, getting the value from the object failed and
229
+ // an error was likely scheduled. We could try to reject the promise
230
+ // but let's just allow the error to propagate.
231
+ return;
232
+ }
184
233
  v8::Local<v8::Promise::Resolver> resolver = value.As<v8::Promise::Resolver>();
185
234
  USE(resolver->Reject(env()->context(), reject).FromJust());
186
235
  }
@@ -190,9 +239,13 @@ void FSReqPromise<AliasedBufferT>::Resolve(v8::Local<v8::Value> value) {
190
239
  finished_ = true;
191
240
  v8::HandleScope scope(env()->isolate());
192
241
  InternalCallbackScope callback_scope(this);
193
- v8::Local<v8::Value> val =
194
- object()->Get(env()->context(),
195
- env()->promise_string()).ToLocalChecked();
242
+ v8::Local<v8::Value> val;
243
+ if (!object()->Get(env()->context(), env()->promise_string()).ToLocal(&val)) {
244
+ // If we hit this, getting the value from the object failed and
245
+ // an error was likely scheduled. We could try to reject the promise
246
+ // but let's just allow the error to propagate.
247
+ return;
248
+ }
196
249
  v8::Local<v8::Promise::Resolver> resolver = val.As<v8::Promise::Resolver>();
197
250
  USE(resolver->Resolve(env()->context(), value).FromJust());
198
251
  }
@@ -203,12 +256,22 @@ void FSReqPromise<AliasedBufferT>::ResolveStat(const uv_stat_t* stat) {
203
256
  Resolve(stats_field_array_.GetJSArray());
204
257
  }
205
258
 
259
+ template <typename AliasedBufferT>
260
+ void FSReqPromise<AliasedBufferT>::ResolveStatFs(const uv_statfs_t* stat) {
261
+ FillStatFsArray(&statfs_field_array_, stat);
262
+ Resolve(statfs_field_array_.GetJSArray());
263
+ }
264
+
206
265
  template <typename AliasedBufferT>
207
266
  void FSReqPromise<AliasedBufferT>::SetReturnValue(
208
267
  const v8::FunctionCallbackInfo<v8::Value>& args) {
209
- v8::Local<v8::Value> val =
210
- object()->Get(env()->context(),
211
- env()->promise_string()).ToLocalChecked();
268
+ v8::Local<v8::Value> val;
269
+ if (!object()->Get(env()->context(), env()->promise_string()).ToLocal(&val)) {
270
+ // If we hit this, getting the value from the object failed and
271
+ // an error was likely scheduled. We could try to reject the promise
272
+ // but let's just allow the error to propagate.
273
+ return;
274
+ }
212
275
  v8::Local<v8::Promise::Resolver> resolver = val.As<v8::Promise::Resolver>();
213
276
  args.GetReturnValue().Set(resolver->GetPromise());
214
277
  }
@@ -217,26 +280,34 @@ template <typename AliasedBufferT>
217
280
  void FSReqPromise<AliasedBufferT>::MemoryInfo(MemoryTracker* tracker) const {
218
281
  FSReqBase::MemoryInfo(tracker);
219
282
  tracker->TrackField("stats_field_array", stats_field_array_);
283
+ tracker->TrackField("statfs_field_array", statfs_field_array_);
220
284
  }
221
285
 
222
286
  FSReqBase* GetReqWrap(const v8::FunctionCallbackInfo<v8::Value>& args,
223
287
  int index,
224
288
  bool use_bigint) {
225
289
  v8::Local<v8::Value> value = args[index];
290
+ FSReqBase* result = nullptr;
226
291
  if (value->IsObject()) {
227
- return Unwrap<FSReqBase>(value.As<v8::Object>());
228
- }
229
-
230
- BindingData* binding_data = Environment::GetBindingData<BindingData>(args);
231
- Environment* env = binding_data->env();
232
- if (value->StrictEquals(env->fs_use_promises_symbol())) {
233
- if (use_bigint) {
234
- return FSReqPromise<AliasedBigUint64Array>::New(binding_data, use_bigint);
235
- } else {
236
- return FSReqPromise<AliasedFloat64Array>::New(binding_data, use_bigint);
292
+ result = BaseObject::Unwrap<FSReqBase>(value.As<v8::Object>());
293
+ } else {
294
+ Realm* realm = Realm::GetCurrent(args);
295
+ BindingData* binding_data = realm->GetBindingData<BindingData>();
296
+
297
+ if (value->StrictEquals(realm->isolate_data()->fs_use_promises_symbol())) {
298
+ if (use_bigint) {
299
+ result =
300
+ FSReqPromise<AliasedBigInt64Array>::New(binding_data, use_bigint);
301
+ } else {
302
+ result =
303
+ FSReqPromise<AliasedFloat64Array>::New(binding_data, use_bigint);
304
+ }
237
305
  }
238
306
  }
239
- return nullptr;
307
+ if (result != nullptr) {
308
+ result->SetReturnValue(args);
309
+ }
310
+ return result;
240
311
  }
241
312
 
242
313
  // Returns nullptr if the operation fails from the start.
@@ -255,10 +326,7 @@ FSReqBase* AsyncDestCall(Environment* env, FSReqBase* req_wrap,
255
326
  uv_req->path = nullptr;
256
327
  after(uv_req); // after may delete req_wrap if there is an error
257
328
  req_wrap = nullptr;
258
- } else {
259
- req_wrap->SetReturnValue(args);
260
329
  }
261
-
262
330
  return req_wrap;
263
331
  }
264
332
 
@@ -279,23 +347,61 @@ FSReqBase* AsyncCall(Environment* env,
279
347
  // creating an error in the C++ land.
280
348
  // ctx must be checked using value->IsObject() before being passed.
281
349
  template <typename Func, typename... Args>
282
- int SyncCall(Environment* env, v8::Local<v8::Value> ctx,
283
- FSReqWrapSync* req_wrap, const char* syscall,
284
- Func fn, Args... args) {
350
+ v8::Maybe<int> SyncCall(Environment* env,
351
+ v8::Local<v8::Value> ctx,
352
+ FSReqWrapSync* req_wrap,
353
+ const char* syscall,
354
+ Func fn,
355
+ Args... args) {
285
356
  env->PrintSyncTrace();
286
357
  int err = fn(env->event_loop(), &(req_wrap->req), args..., nullptr);
287
358
  if (err < 0) {
288
359
  v8::Local<v8::Context> context = env->context();
289
360
  v8::Local<v8::Object> ctx_obj = ctx.As<v8::Object>();
290
361
  v8::Isolate* isolate = env->isolate();
291
- ctx_obj->Set(context,
292
- env->errno_string(),
293
- v8::Integer::New(isolate, err)).Check();
294
- ctx_obj->Set(context,
295
- env->syscall_string(),
296
- OneByteString(isolate, syscall)).Check();
362
+ if (ctx_obj
363
+ ->Set(context, env->errno_string(), v8::Integer::New(isolate, err))
364
+ .IsNothing() ||
365
+ ctx_obj
366
+ ->Set(
367
+ context, env->syscall_string(), OneByteString(isolate, syscall))
368
+ .IsNothing()) {
369
+ return v8::Nothing<int>();
370
+ }
297
371
  }
298
- return err;
372
+ return v8::Just(err);
373
+ }
374
+
375
+ // Similar to SyncCall but throws immediately if there is an error.
376
+ template <typename Predicate, typename Func, typename... Args>
377
+ int SyncCallAndThrowIf(Predicate should_throw,
378
+ Environment* env,
379
+ FSReqWrapSync* req_wrap,
380
+ Func fn,
381
+ Args... args) {
382
+ env->PrintSyncTrace();
383
+ int result = fn(nullptr, &(req_wrap->req), args..., nullptr);
384
+ if (should_throw(result)) {
385
+ env->ThrowUVException(result,
386
+ req_wrap->syscall_p,
387
+ nullptr,
388
+ req_wrap->path_p,
389
+ req_wrap->dest_p);
390
+ }
391
+ return result;
392
+ }
393
+
394
+ constexpr bool is_uv_error(int result) {
395
+ return result < 0;
396
+ }
397
+
398
+ // Similar to SyncCall but throws immediately if there is an error.
399
+ template <typename Func, typename... Args>
400
+ int SyncCallAndThrowOnError(Environment* env,
401
+ FSReqWrapSync* req_wrap,
402
+ Func fn,
403
+ Args... args) {
404
+ return SyncCallAndThrowIf(is_uv_error, env, req_wrap, fn, args...);
299
405
  }
300
406
 
301
407
  } // namespace fs
@@ -3,6 +3,7 @@
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
+ #include <optional>
6
7
  #include "aliased_buffer.h"
7
8
  #include "node_messaging.h"
8
9
  #include "node_snapshotable.h"
@@ -13,24 +14,94 @@ namespace fs {
13
14
 
14
15
  class FileHandleReadWrap;
15
16
 
17
+ enum class FsStatsOffset {
18
+ kDev = 0,
19
+ kMode,
20
+ kNlink,
21
+ kUid,
22
+ kGid,
23
+ kRdev,
24
+ kBlkSize,
25
+ kIno,
26
+ kSize,
27
+ kBlocks,
28
+ kATimeSec,
29
+ kATimeNsec,
30
+ kMTimeSec,
31
+ kMTimeNsec,
32
+ kCTimeSec,
33
+ kCTimeNsec,
34
+ kBirthTimeSec,
35
+ kBirthTimeNsec,
36
+ kFsStatsFieldsNumber
37
+ };
38
+
39
+ // Stat fields buffers contain twice the number of entries in an uv_stat_t
40
+ // because `fs.StatWatcher` needs room to store 2 `fs.Stats` instances.
41
+ constexpr size_t kFsStatsBufferLength =
42
+ static_cast<size_t>(FsStatsOffset::kFsStatsFieldsNumber) * 2;
43
+
44
+ enum class FsStatFsOffset {
45
+ kType = 0,
46
+ kBSize,
47
+ kBlocks,
48
+ kBFree,
49
+ kBAvail,
50
+ kFiles,
51
+ kFFree,
52
+ kFsStatFsFieldsNumber
53
+ };
54
+
55
+ constexpr size_t kFsStatFsBufferLength =
56
+ static_cast<size_t>(FsStatFsOffset::kFsStatFsFieldsNumber);
57
+
16
58
  class BindingData : public SnapshotableObject {
17
59
  public:
18
- explicit BindingData(Environment* env, v8::Local<v8::Object> wrap);
60
+ struct InternalFieldInfo : public node::InternalFieldInfoBase {
61
+ AliasedBufferIndex stats_field_array;
62
+ AliasedBufferIndex stats_field_bigint_array;
63
+ AliasedBufferIndex statfs_field_array;
64
+ AliasedBufferIndex statfs_field_bigint_array;
65
+ };
66
+
67
+ enum class FilePathIsFileReturnType {
68
+ kIsFile = 0,
69
+ kIsNotFile,
70
+ kThrowInsufficientPermissions
71
+ };
72
+
73
+ explicit BindingData(Realm* realm,
74
+ v8::Local<v8::Object> wrap,
75
+ InternalFieldInfo* info = nullptr);
19
76
 
20
77
  AliasedFloat64Array stats_field_array;
21
- AliasedBigUint64Array stats_field_bigint_array;
78
+ AliasedBigInt64Array stats_field_bigint_array;
79
+
80
+ AliasedFloat64Array statfs_field_array;
81
+ AliasedBigInt64Array statfs_field_bigint_array;
22
82
 
23
83
  std::vector<BaseObjectPtr<FileHandleReadWrap>>
24
84
  file_handle_read_wrap_freelist;
25
85
 
26
86
  SERIALIZABLE_OBJECT_METHODS()
27
- static constexpr FastStringKey type_name{"node::fs::BindingData"};
28
- static constexpr EmbedderObjectType type_int =
29
- EmbedderObjectType::k_fs_binding_data;
87
+ SET_BINDING_ID(fs_binding_data)
88
+
89
+ static void LegacyMainResolve(
90
+ const v8::FunctionCallbackInfo<v8::Value>& args);
91
+
92
+ static void CreatePerIsolateProperties(IsolateData* isolate_data,
93
+ v8::Local<v8::ObjectTemplate> ctor);
94
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
30
95
 
31
96
  void MemoryInfo(MemoryTracker* tracker) const override;
32
97
  SET_SELF_SIZE(BindingData)
33
98
  SET_MEMORY_INFO_NAME(BindingData)
99
+
100
+ private:
101
+ InternalFieldInfo* internal_field_info_ = nullptr;
102
+
103
+ static FilePathIsFileReturnType FilePathIsFile(Environment* env,
104
+ const std::string& file_path);
34
105
  };
35
106
 
36
107
  // structure used to store state during a complex operation, e.g., mkdirp.
@@ -81,6 +152,7 @@ class FSReqBase : public ReqWrap<uv_fs_t> {
81
152
  virtual void Reject(v8::Local<v8::Value> reject) = 0;
82
153
  virtual void Resolve(v8::Local<v8::Value> value) = 0;
83
154
  virtual void ResolveStat(const uv_stat_t* stat) = 0;
155
+ virtual void ResolveStatFs(const uv_statfs_t* stat) = 0;
84
156
  virtual void SetReturnValue(
85
157
  const v8::FunctionCallbackInfo<v8::Value>& args) = 0;
86
158
 
@@ -89,8 +161,10 @@ class FSReqBase : public ReqWrap<uv_fs_t> {
89
161
  enum encoding encoding() const { return encoding_; }
90
162
  bool use_bigint() const { return use_bigint_; }
91
163
  bool is_plain_open() const { return is_plain_open_; }
164
+ bool with_file_types() const { return with_file_types_; }
92
165
 
93
166
  void set_is_plain_open(bool value) { is_plain_open_ = value; }
167
+ void set_with_file_types(bool value) { with_file_types_ = value; }
94
168
 
95
169
  FSContinuationData* continuation_data() const {
96
170
  return continuation_data_.get();
@@ -116,6 +190,7 @@ class FSReqBase : public ReqWrap<uv_fs_t> {
116
190
  bool has_data_ = false;
117
191
  bool use_bigint_ = false;
118
192
  bool is_plain_open_ = false;
193
+ bool with_file_types_ = false;
119
194
  const char* syscall_ = nullptr;
120
195
 
121
196
  BaseObjectPtr<BindingData> binding_data_;
@@ -134,6 +209,7 @@ class FSReqCallback final : public FSReqBase {
134
209
  void Reject(v8::Local<v8::Value> reject) override;
135
210
  void Resolve(v8::Local<v8::Value> value) override;
136
211
  void ResolveStat(const uv_stat_t* stat) override;
212
+ void ResolveStatFs(const uv_statfs_t* stat) override;
137
213
  void SetReturnValue(const v8::FunctionCallbackInfo<v8::Value>& args) override;
138
214
 
139
215
  SET_MEMORY_INFO_NAME(FSReqCallback)
@@ -153,6 +229,14 @@ inline v8::Local<v8::Value> FillGlobalStatsArray(BindingData* binding_data,
153
229
  const uv_stat_t* s,
154
230
  const bool second = false);
155
231
 
232
+ template <typename NativeT, typename V8T>
233
+ void FillStatFsArray(AliasedBufferBase<NativeT, V8T>* fields,
234
+ const uv_statfs_t* s);
235
+
236
+ inline v8::Local<v8::Value> FillGlobalStatFsArray(BindingData* binding_data,
237
+ const bool use_bigint,
238
+ const uv_statfs_t* s);
239
+
156
240
  template <typename AliasedBufferT>
157
241
  class FSReqPromise final : public FSReqBase {
158
242
  public:
@@ -163,6 +247,7 @@ class FSReqPromise final : public FSReqBase {
163
247
  inline void Reject(v8::Local<v8::Value> reject) override;
164
248
  inline void Resolve(v8::Local<v8::Value> value) override;
165
249
  inline void ResolveStat(const uv_stat_t* stat) override;
250
+ inline void ResolveStatFs(const uv_statfs_t* stat) override;
166
251
  inline void SetReturnValue(
167
252
  const v8::FunctionCallbackInfo<v8::Value>& args) override;
168
253
  inline void MemoryInfo(MemoryTracker* tracker) const override;
@@ -182,6 +267,7 @@ class FSReqPromise final : public FSReqBase {
182
267
 
183
268
  bool finished_ = false;
184
269
  AliasedBufferT stats_field_array_;
270
+ AliasedBufferT statfs_field_array_;
185
271
  };
186
272
 
187
273
  class FSReqAfterScope final {
@@ -242,13 +328,17 @@ class FileHandle final : public AsyncWrap, public StreamBase {
242
328
 
243
329
  static FileHandle* New(BindingData* binding_data,
244
330
  int fd,
245
- v8::Local<v8::Object> obj = v8::Local<v8::Object>());
331
+ v8::Local<v8::Object> obj = v8::Local<v8::Object>(),
332
+ std::optional<int64_t> maybeOffset = std::nullopt,
333
+ std::optional<int64_t> maybeLength = std::nullopt);
246
334
  ~FileHandle() override;
247
335
 
248
336
  static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
249
337
 
250
338
  int GetFD() override { return fd_; }
251
339
 
340
+ int Release();
341
+
252
342
  // Will asynchronously close the FD and return a Promise that will
253
343
  // be resolved once closing is complete.
254
344
  static void Close(const v8::FunctionCallbackInfo<v8::Value>& args);
@@ -283,7 +373,7 @@ class FileHandle final : public AsyncWrap, public StreamBase {
283
373
  FileHandle(const FileHandle&&) = delete;
284
374
  FileHandle& operator=(const FileHandle&&) = delete;
285
375
 
286
- TransferMode GetTransferMode() const override;
376
+ BaseObject::TransferMode GetTransferMode() const override;
287
377
  std::unique_ptr<worker::TransferData> TransferForMessaging() override;
288
378
 
289
379
  private:
@@ -367,10 +457,22 @@ int MKDirpSync(uv_loop_t* loop,
367
457
 
368
458
  class FSReqWrapSync {
369
459
  public:
370
- FSReqWrapSync() = default;
460
+ FSReqWrapSync(const char* syscall = nullptr,
461
+ const char* path = nullptr,
462
+ const char* dest = nullptr)
463
+ : syscall_p(syscall), path_p(path), dest_p(dest) {}
371
464
  ~FSReqWrapSync() { uv_fs_req_cleanup(&req); }
465
+
372
466
  uv_fs_t req;
467
+ const char* syscall_p;
468
+ const char* path_p;
469
+ const char* dest_p;
470
+
471
+ FSReqWrapSync(const FSReqWrapSync&) = delete;
472
+ FSReqWrapSync& operator=(const FSReqWrapSync&) = delete;
373
473
 
474
+ // TODO(joyeecheung): move these out of FSReqWrapSync and into a special
475
+ // class for mkdirp
374
476
  FSContinuationData* continuation_data() const {
375
477
  return continuation_data_.get();
376
478
  }
@@ -378,9 +480,6 @@ class FSReqWrapSync {
378
480
  continuation_data_ = std::move(data);
379
481
  }
380
482
 
381
- FSReqWrapSync(const FSReqWrapSync&) = delete;
382
- FSReqWrapSync& operator=(const FSReqWrapSync&) = delete;
383
-
384
483
  private:
385
484
  std::unique_ptr<FSContinuationData> continuation_data_;
386
485
  };
@@ -413,10 +512,25 @@ inline FSReqBase* AsyncCall(Environment* env,
413
512
  // creating an error in the C++ land.
414
513
  // ctx must be checked using value->IsObject() before being passed.
415
514
  template <typename Func, typename... Args>
416
- inline int SyncCall(Environment* env, v8::Local<v8::Value> ctx,
417
- FSReqWrapSync* req_wrap, const char* syscall,
418
- Func fn, Args... args);
419
-
515
+ inline v8::Maybe<int> SyncCall(Environment* env,
516
+ v8::Local<v8::Value> ctx,
517
+ FSReqWrapSync* req_wrap,
518
+ const char* syscall,
519
+ Func fn,
520
+ Args... args);
521
+
522
+ // Similar to SyncCall but throws immediately if there is an error.
523
+ template <typename Predicate, typename Func, typename... Args>
524
+ int SyncCallAndThrowIf(Predicate should_throw,
525
+ Environment* env,
526
+ FSReqWrapSync* req_wrap,
527
+ Func fn,
528
+ Args... args);
529
+ template <typename Func, typename... Args>
530
+ int SyncCallAndThrowOnError(Environment* env,
531
+ FSReqWrapSync* req_wrap,
532
+ Func fn,
533
+ Args... args);
420
534
  } // namespace fs
421
535
 
422
536
  } // namespace node