@encharm/cws 4.4.0 → 4.5.1

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 (511) hide show
  1. package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
  2. package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
  3. package/dist/bindings/cws_linux_arm64_node115.node +0 -0
  4. package/dist/bindings/cws_linux_arm64_node127.node +0 -0
  5. package/dist/bindings/cws_linux_x64_node108.node +0 -0
  6. package/dist/bindings/cws_linux_x64_node115.node +0 -0
  7. package/dist/bindings/cws_linux_x64_node127.node +0 -0
  8. package/dist/bindings/cws_win32_x64_node108.node +0 -0
  9. package/dist/bindings/cws_win32_x64_node115.node +0 -0
  10. package/dist/bindings/cws_win32_x64_node127.node +0 -0
  11. package/dist/bindings/cws_win32_x64_node83.node +0 -0
  12. package/dist/bindings/cws_win32_x64_node93.node +0 -0
  13. package/package.json +1 -1
  14. package/src/Addon.h +20 -24
  15. package/src/Socket.h +0 -1
  16. package/src/headers/20/acorn_version.h +1 -1
  17. package/src/headers/20/connection_wrap.h +1 -0
  18. package/src/headers/20/crypto/crypto_keys.h +3 -0
  19. package/src/headers/20/crypto/crypto_tls.h +12 -3
  20. package/src/headers/20/crypto/crypto_util.h +3 -2
  21. package/src/headers/20/env_properties.h +3 -1
  22. package/src/headers/20/js_native_api.h +11 -1
  23. package/src/headers/20/js_native_api_v8.h +40 -3
  24. package/src/headers/20/js_native_api_v8_internals.h +6 -0
  25. package/src/headers/20/module_wrap.h +1 -1
  26. package/src/headers/20/node.h +2 -0
  27. package/src/headers/20/node_api.h +8 -7
  28. package/src/headers/20/node_constants.h +3 -0
  29. package/src/headers/20/node_contextify.h +24 -0
  30. package/src/headers/20/node_file-inl.h +32 -0
  31. package/src/headers/20/node_file.h +25 -12
  32. package/src/headers/20/node_options.h +9 -9
  33. package/src/headers/20/node_version.h +1 -1
  34. package/src/headers/20/permission/child_process_permission.h +2 -1
  35. package/src/headers/20/permission/fs_permission.h +11 -9
  36. package/src/headers/20/permission/inspector_permission.h +29 -0
  37. package/src/headers/20/permission/permission.h +4 -1
  38. package/src/headers/20/permission/permission_base.h +6 -2
  39. package/src/headers/20/permission/worker_permission.h +2 -1
  40. package/src/headers/20/undici_version.h +2 -2
  41. package/src/headers/22/acorn_version.h +6 -0
  42. package/src/headers/22/aliased_buffer-inl.h +243 -0
  43. package/src/headers/22/aliased_buffer.h +206 -0
  44. package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
  45. package/src/headers/{18 → 22}/async_wrap.h +65 -59
  46. package/src/headers/{16 → 22}/base_object-inl.h +57 -117
  47. package/src/headers/{18 → 22}/base_object.h +58 -30
  48. package/src/headers/22/base_object_types.h +74 -0
  49. package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
  50. package/src/headers/22/blob_serializer_deserializer.h +132 -0
  51. package/src/headers/{16 → 22}/callback_queue.h +1 -0
  52. package/src/headers/{16 → 22}/cares_wrap.h +27 -20
  53. package/src/headers/22/cjs_module_lexer_version.h +6 -0
  54. package/src/headers/22/cleanup_queue-inl.h +62 -0
  55. package/src/headers/22/cleanup_queue.h +85 -0
  56. package/src/headers/22/compile_cache.h +104 -0
  57. package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
  58. package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
  59. package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
  60. package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
  61. package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
  62. package/src/headers/22/crypto/ncrypto.h +752 -0
  63. package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
  64. package/src/headers/{18 → 22}/debug_utils.h +25 -19
  65. package/src/headers/22/encoding_binding.h +59 -0
  66. package/src/headers/{14 → 22}/env-inl.h +276 -409
  67. package/src/headers/22/env.h +1266 -0
  68. package/src/headers/22/env_properties.h +497 -0
  69. package/src/headers/{18 → 22}/handle_wrap.h +2 -0
  70. package/src/headers/{18 → 22}/histogram.h +88 -48
  71. package/src/headers/{16 → 22}/inspector_agent.h +17 -1
  72. package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
  73. package/src/headers/{18 → 22}/js_native_api.h +78 -30
  74. package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
  75. package/src/headers/{18 → 22}/js_native_api_v8.h +206 -161
  76. package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
  77. package/src/headers/22/json_parser.h +40 -0
  78. package/src/headers/{16 → 22}/json_utils.h +19 -8
  79. package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
  80. package/src/headers/{14 → 22}/memory_tracker.h +13 -8
  81. package/src/headers/{16 → 22}/module_wrap.h +49 -19
  82. package/src/headers/22/ncrypto/ncrypto.h +752 -0
  83. package/src/headers/{18 → 22}/node.h +465 -68
  84. package/src/headers/{18 → 22}/node_api.h +66 -81
  85. package/src/headers/{18 → 22}/node_api_internals.h +8 -4
  86. package/src/headers/{18 → 22}/node_api_types.h +5 -0
  87. package/src/headers/22/node_binding.h +154 -0
  88. package/src/headers/{18 → 22}/node_blob.h +46 -78
  89. package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
  90. package/src/headers/{18 → 22}/node_bob.h +2 -6
  91. package/src/headers/{18 → 22}/node_buffer.h +1 -1
  92. package/src/headers/22/node_builtins.h +220 -0
  93. package/src/headers/{18 → 22}/node_constants.h +3 -5
  94. package/src/headers/22/node_context_data.h +168 -0
  95. package/src/headers/22/node_contextify.h +199 -0
  96. package/src/headers/{16 → 22}/node_crypto.h +1 -2
  97. package/src/headers/22/node_dotenv.h +45 -0
  98. package/src/headers/{18 → 22}/node_errors.h +86 -27
  99. package/src/headers/22/node_exit_code.h +54 -0
  100. package/src/headers/22/node_external_reference.h +249 -0
  101. package/src/headers/{18 → 22}/node_file-inl.h +127 -30
  102. package/src/headers/{16 → 22}/node_file.h +122 -11
  103. package/src/headers/{18 → 22}/node_http2.h +28 -11
  104. package/src/headers/{16 → 22}/node_http2_state.h +34 -25
  105. package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
  106. package/src/headers/{18 → 22}/node_http_common.h +56 -55
  107. package/src/headers/{16 → 22}/node_i18n.h +5 -18
  108. package/src/headers/{18 → 22}/node_internals.h +121 -59
  109. package/src/headers/{18 → 22}/node_main_instance.h +4 -31
  110. package/src/headers/{18 → 22}/node_messaging.h +27 -10
  111. package/src/headers/{18 → 22}/node_metadata.h +23 -1
  112. package/src/headers/{18 → 22}/node_options-inl.h +24 -11
  113. package/src/headers/{18 → 22}/node_options.h +124 -39
  114. package/src/headers/{18 → 22}/node_perf.h +0 -2
  115. package/src/headers/{18 → 22}/node_perf_common.h +20 -9
  116. package/src/headers/{18 → 22}/node_platform.h +11 -5
  117. package/src/headers/{18 → 22}/node_process.h +26 -14
  118. package/src/headers/22/node_realm-inl.h +145 -0
  119. package/src/headers/22/node_realm.h +184 -0
  120. package/src/headers/{16 → 22}/node_report.h +13 -17
  121. package/src/headers/{16 → 22}/node_revert.h +3 -3
  122. package/src/headers/{16 → 22}/node_root_certs.h +902 -461
  123. package/src/headers/22/node_sea.h +64 -0
  124. package/src/headers/22/node_shadow_realm.h +46 -0
  125. package/src/headers/22/node_snapshot_builder.h +57 -0
  126. package/src/headers/22/node_snapshotable.h +174 -0
  127. package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
  128. package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
  129. package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
  130. package/src/headers/22/node_threadsafe_cow.h +105 -0
  131. package/src/headers/22/node_union_bytes.h +81 -0
  132. package/src/headers/22/node_url.h +96 -0
  133. package/src/headers/22/node_v8.h +77 -0
  134. package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
  135. package/src/headers/{18 → 22}/node_version.h +20 -8
  136. package/src/headers/22/node_wasi.h +185 -0
  137. package/src/headers/{14 → 22}/node_watchdog.h +2 -0
  138. package/src/headers/{18 → 22}/node_worker.h +7 -2
  139. package/src/headers/22/permission/child_process_permission.h +31 -0
  140. package/src/headers/22/permission/fs_permission.h +167 -0
  141. package/src/headers/22/permission/inspector_permission.h +31 -0
  142. package/src/headers/22/permission/permission.h +99 -0
  143. package/src/headers/22/permission/permission_base.h +60 -0
  144. package/src/headers/22/permission/wasi_permission.h +31 -0
  145. package/src/headers/22/permission/worker_permission.h +31 -0
  146. package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
  147. package/src/headers/{14 → 22}/spawn_sync.h +3 -3
  148. package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
  149. package/src/headers/{18 → 22}/stream_base.h +35 -16
  150. package/src/headers/{18 → 22}/stream_pipe.h +3 -4
  151. package/src/headers/{16 → 22}/stream_wrap.h +2 -1
  152. package/src/headers/{18 → 22}/string_bytes.h +5 -14
  153. package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
  154. package/src/headers/{16 → 22}/string_decoder.h +0 -1
  155. package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
  156. package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
  157. package/src/headers/22/timers.h +76 -0
  158. package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
  159. package/src/headers/{16 → 22}/udp_wrap.h +8 -5
  160. package/src/headers/22/undici_version.h +6 -0
  161. package/src/headers/{18 → 22}/util-inl.h +97 -127
  162. package/src/headers/{18 → 22}/util.h +293 -106
  163. package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
  164. package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
  165. package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
  166. package/dist/bindings/cws_darwin_x64_node83.node +0 -0
  167. package/dist/bindings/cws_darwin_x64_node93.node +0 -0
  168. package/dist/bindings/cws_linux_arm64_node83.node +0 -0
  169. package/dist/bindings/cws_linux_arm64_node93.node +0 -0
  170. package/dist/bindings/cws_linux_x64_node83.node +0 -0
  171. package/dist/bindings/cws_linux_x64_node93.node +0 -0
  172. package/src/headers/14/aliased_buffer.h +0 -263
  173. package/src/headers/14/allocated_buffer-inl.h +0 -110
  174. package/src/headers/14/allocated_buffer.h +0 -73
  175. package/src/headers/14/async_wrap-inl.h +0 -94
  176. package/src/headers/14/async_wrap.h +0 -230
  177. package/src/headers/14/base64.h +0 -183
  178. package/src/headers/14/base_object-inl.h +0 -371
  179. package/src/headers/14/base_object.h +0 -281
  180. package/src/headers/14/callback_queue-inl.h +0 -97
  181. package/src/headers/14/callback_queue.h +0 -78
  182. package/src/headers/14/debug_utils-inl.h +0 -223
  183. package/src/headers/14/debug_utils.h +0 -181
  184. package/src/headers/14/env.h +0 -1388
  185. package/src/headers/14/handle_wrap.h +0 -117
  186. package/src/headers/14/histogram-inl.h +0 -83
  187. package/src/headers/14/histogram.h +0 -98
  188. package/src/headers/14/inspector_agent.h +0 -149
  189. package/src/headers/14/inspector_profiler.h +0 -137
  190. package/src/headers/14/js_native_api.h +0 -544
  191. package/src/headers/14/js_native_api_types.h +0 -143
  192. package/src/headers/14/js_native_api_v8.h +0 -301
  193. package/src/headers/14/js_native_api_v8_internals.h +0 -38
  194. package/src/headers/14/json_utils.h +0 -161
  195. package/src/headers/14/memory_tracker-inl.h +0 -355
  196. package/src/headers/14/module_wrap.h +0 -99
  197. package/src/headers/14/node.h +0 -1032
  198. package/src/headers/14/node_api.h +0 -255
  199. package/src/headers/14/node_api_types.h +0 -44
  200. package/src/headers/14/node_binding.h +0 -99
  201. package/src/headers/14/node_buffer.h +0 -92
  202. package/src/headers/14/node_constants.h +0 -84
  203. package/src/headers/14/node_context_data.h +0 -44
  204. package/src/headers/14/node_contextify.h +0 -161
  205. package/src/headers/14/node_crypto.h +0 -865
  206. package/src/headers/14/node_crypto_bio.h +0 -195
  207. package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
  208. package/src/headers/14/node_crypto_clienthello.h +0 -132
  209. package/src/headers/14/node_crypto_common.h +0 -138
  210. package/src/headers/14/node_crypto_groups.h +0 -415
  211. package/src/headers/14/node_dtrace.h +0 -86
  212. package/src/headers/14/node_errors.h +0 -214
  213. package/src/headers/14/node_file-inl.h +0 -306
  214. package/src/headers/14/node_file.h +0 -417
  215. package/src/headers/14/node_http2.h +0 -1191
  216. package/src/headers/14/node_http2_state.h +0 -149
  217. package/src/headers/14/node_http_common-inl.h +0 -194
  218. package/src/headers/14/node_http_common.h +0 -529
  219. package/src/headers/14/node_i18n.h +0 -144
  220. package/src/headers/14/node_internals.h +0 -405
  221. package/src/headers/14/node_main_instance.h +0 -96
  222. package/src/headers/14/node_mem.h +0 -45
  223. package/src/headers/14/node_messaging.h +0 -303
  224. package/src/headers/14/node_metadata.h +0 -109
  225. package/src/headers/14/node_mutex.h +0 -247
  226. package/src/headers/14/node_native_module.h +0 -101
  227. package/src/headers/14/node_native_module_env.h +0 -66
  228. package/src/headers/14/node_options-inl.h +0 -451
  229. package/src/headers/14/node_options.h +0 -481
  230. package/src/headers/14/node_perf.h +0 -181
  231. package/src/headers/14/node_perf_common.h +0 -97
  232. package/src/headers/14/node_platform.h +0 -189
  233. package/src/headers/14/node_process.h +0 -40
  234. package/src/headers/14/node_report.h +0 -47
  235. package/src/headers/14/node_revert.h +0 -72
  236. package/src/headers/14/node_root_certs.h +0 -3458
  237. package/src/headers/14/node_sockaddr-inl.h +0 -170
  238. package/src/headers/14/node_sockaddr.h +0 -123
  239. package/src/headers/14/node_stat_watcher.h +0 -70
  240. package/src/headers/14/node_union_bytes.h +0 -103
  241. package/src/headers/14/node_url.h +0 -188
  242. package/src/headers/14/node_version.h +0 -98
  243. package/src/headers/14/node_wasi.h +0 -108
  244. package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
  245. package/src/headers/14/node_win32_etw_provider.h +0 -99
  246. package/src/headers/14/node_worker.h +0 -141
  247. package/src/headers/14/pipe_wrap.h +0 -78
  248. package/src/headers/14/req_wrap-inl.h +0 -170
  249. package/src/headers/14/req_wrap.h +0 -77
  250. package/src/headers/14/stream_base-inl.h +0 -275
  251. package/src/headers/14/stream_base.h +0 -434
  252. package/src/headers/14/stream_pipe.h +0 -73
  253. package/src/headers/14/stream_wrap.h +0 -130
  254. package/src/headers/14/string_bytes.h +0 -129
  255. package/src/headers/14/string_decoder.h +0 -50
  256. package/src/headers/14/string_search.h +0 -638
  257. package/src/headers/14/tcp_wrap.h +0 -101
  258. package/src/headers/14/threadpoolwork-inl.h +0 -57
  259. package/src/headers/14/tls_wrap.h +0 -222
  260. package/src/headers/14/tracing/agent.h +0 -195
  261. package/src/headers/14/tracing/trace_event.h +0 -720
  262. package/src/headers/14/tty_wrap.h +0 -64
  263. package/src/headers/14/udp_wrap.h +0 -227
  264. package/src/headers/14/util-inl.h +0 -566
  265. package/src/headers/14/util.h +0 -804
  266. package/src/headers/14/v8abbr.h +0 -124
  267. package/src/headers/16/aliased_buffer.h +0 -315
  268. package/src/headers/16/aliased_struct-inl.h +0 -54
  269. package/src/headers/16/aliased_struct.h +0 -63
  270. package/src/headers/16/allocated_buffer-inl.h +0 -110
  271. package/src/headers/16/allocated_buffer.h +0 -73
  272. package/src/headers/16/async_wrap-inl.h +0 -94
  273. package/src/headers/16/async_wrap.h +0 -246
  274. package/src/headers/16/base64-inl.h +0 -189
  275. package/src/headers/16/base64.h +0 -69
  276. package/src/headers/16/base_object.h +0 -294
  277. package/src/headers/16/connect_wrap.h +0 -26
  278. package/src/headers/16/connection_wrap.h +0 -30
  279. package/src/headers/16/crypto/crypto_aes.h +0 -89
  280. package/src/headers/16/crypto/crypto_bio.h +0 -194
  281. package/src/headers/16/crypto/crypto_cipher.h +0 -286
  282. package/src/headers/16/crypto/crypto_clienthello-inl.h +0 -90
  283. package/src/headers/16/crypto/crypto_clienthello.h +0 -131
  284. package/src/headers/16/crypto/crypto_common.h +0 -187
  285. package/src/headers/16/crypto/crypto_context.h +0 -147
  286. package/src/headers/16/crypto/crypto_dh.h +0 -157
  287. package/src/headers/16/crypto/crypto_dsa.h +0 -76
  288. package/src/headers/16/crypto/crypto_ec.h +0 -169
  289. package/src/headers/16/crypto/crypto_groups.h +0 -415
  290. package/src/headers/16/crypto/crypto_hash.h +0 -89
  291. package/src/headers/16/crypto/crypto_hkdf.h +0 -66
  292. package/src/headers/16/crypto/crypto_hmac.h +0 -94
  293. package/src/headers/16/crypto/crypto_keygen.h +0 -301
  294. package/src/headers/16/crypto/crypto_keys.h +0 -412
  295. package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
  296. package/src/headers/16/crypto/crypto_random.h +0 -130
  297. package/src/headers/16/crypto/crypto_rsa.h +0 -141
  298. package/src/headers/16/crypto/crypto_scrypt.h +0 -87
  299. package/src/headers/16/crypto/crypto_sig.h +0 -167
  300. package/src/headers/16/crypto/crypto_spkac.h +0 -20
  301. package/src/headers/16/crypto/crypto_timing.h +0 -20
  302. package/src/headers/16/crypto/crypto_tls.h +0 -292
  303. package/src/headers/16/crypto/crypto_util.h +0 -736
  304. package/src/headers/16/crypto/crypto_x509.h +0 -141
  305. package/src/headers/16/debug_utils.h +0 -184
  306. package/src/headers/16/diagnosticfilename-inl.h +0 -33
  307. package/src/headers/16/env-inl.h +0 -1277
  308. package/src/headers/16/env.h +0 -1629
  309. package/src/headers/16/handle_wrap.h +0 -121
  310. package/src/headers/16/histogram-inl.h +0 -88
  311. package/src/headers/16/histogram.h +0 -216
  312. package/src/headers/16/inspector_io.h +0 -78
  313. package/src/headers/16/inspector_socket.h +0 -60
  314. package/src/headers/16/inspector_socket_server.h +0 -110
  315. package/src/headers/16/js_native_api.h +0 -561
  316. package/src/headers/16/js_native_api_types.h +0 -160
  317. package/src/headers/16/js_native_api_v8.h +0 -451
  318. package/src/headers/16/js_native_api_v8_internals.h +0 -39
  319. package/src/headers/16/js_stream.h +0 -52
  320. package/src/headers/16/memory_tracker-inl.h +0 -356
  321. package/src/headers/16/memory_tracker.h +0 -284
  322. package/src/headers/16/node.d +0 -315
  323. package/src/headers/16/node.h +0 -1132
  324. package/src/headers/16/node.stp +0 -146
  325. package/src/headers/16/node_api.h +0 -275
  326. package/src/headers/16/node_api_internals.h +0 -30
  327. package/src/headers/16/node_api_types.h +0 -50
  328. package/src/headers/16/node_binding.h +0 -99
  329. package/src/headers/16/node_blob.h +0 -191
  330. package/src/headers/16/node_bob-inl.h +0 -37
  331. package/src/headers/16/node_bob.h +0 -111
  332. package/src/headers/16/node_buffer.h +0 -92
  333. package/src/headers/16/node_constants.h +0 -84
  334. package/src/headers/16/node_context_data.h +0 -44
  335. package/src/headers/16/node_contextify.h +0 -196
  336. package/src/headers/16/node_dir.h +0 -52
  337. package/src/headers/16/node_dtrace.h +0 -86
  338. package/src/headers/16/node_errors.h +0 -277
  339. package/src/headers/16/node_external_reference.h +0 -129
  340. package/src/headers/16/node_file-inl.h +0 -306
  341. package/src/headers/16/node_http2.h +0 -1140
  342. package/src/headers/16/node_http_common-inl.h +0 -200
  343. package/src/headers/16/node_http_common.h +0 -531
  344. package/src/headers/16/node_internals.h +0 -421
  345. package/src/headers/16/node_main_instance.h +0 -103
  346. package/src/headers/16/node_mem-inl.h +0 -112
  347. package/src/headers/16/node_messaging.h +0 -373
  348. package/src/headers/16/node_metadata.h +0 -122
  349. package/src/headers/16/node_native_module.h +0 -101
  350. package/src/headers/16/node_native_module_env.h +0 -68
  351. package/src/headers/16/node_object_wrap.h +0 -132
  352. package/src/headers/16/node_options-inl.h +0 -477
  353. package/src/headers/16/node_options.h +0 -494
  354. package/src/headers/16/node_perf.h +0 -185
  355. package/src/headers/16/node_perf_common.h +0 -89
  356. package/src/headers/16/node_platform.h +0 -192
  357. package/src/headers/16/node_process.h +0 -43
  358. package/src/headers/16/node_provider.d +0 -80
  359. package/src/headers/16/node_snapshotable.h +0 -137
  360. package/src/headers/16/node_sockaddr-inl.h +0 -266
  361. package/src/headers/16/node_sockaddr.h +0 -405
  362. package/src/headers/16/node_union_bytes.h +0 -103
  363. package/src/headers/16/node_url.h +0 -205
  364. package/src/headers/16/node_v8.h +0 -41
  365. package/src/headers/16/node_v8_platform-inl.h +0 -194
  366. package/src/headers/16/node_version.h +0 -98
  367. package/src/headers/16/node_wasi.h +0 -108
  368. package/src/headers/16/node_watchdog.h +0 -152
  369. package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
  370. package/src/headers/16/node_win32_etw_provider.h +0 -99
  371. package/src/headers/16/node_worker.h +0 -145
  372. package/src/headers/16/req_wrap.h +0 -77
  373. package/src/headers/16/spawn_sync.h +0 -242
  374. package/src/headers/16/stream_base-inl.h +0 -303
  375. package/src/headers/16/stream_base.h +0 -454
  376. package/src/headers/16/stream_pipe.h +0 -73
  377. package/src/headers/16/string_bytes.h +0 -122
  378. package/src/headers/16/string_decoder-inl.h +0 -37
  379. package/src/headers/16/string_search.h +0 -638
  380. package/src/headers/16/tcp_wrap.h +0 -103
  381. package/src/headers/16/threadpoolwork-inl.h +0 -57
  382. package/src/headers/16/timer_wrap.h +0 -84
  383. package/src/headers/16/tracing/agent.h +0 -195
  384. package/src/headers/16/tracing/node_trace_buffer.h +0 -83
  385. package/src/headers/16/tracing/node_trace_writer.h +0 -75
  386. package/src/headers/16/tracing/trace_event.h +0 -720
  387. package/src/headers/16/tracing/trace_event_common.h +0 -1109
  388. package/src/headers/16/tracing/traced_value.h +0 -70
  389. package/src/headers/16/tty_wrap.h +0 -66
  390. package/src/headers/16/util-inl.h +0 -575
  391. package/src/headers/16/util.h +0 -824
  392. package/src/headers/16/v8abbr.h +0 -123
  393. package/src/headers/16/v8ustack.d +0 -695
  394. package/src/headers/18/aliased_buffer.h +0 -315
  395. package/src/headers/18/aliased_struct-inl.h +0 -54
  396. package/src/headers/18/aliased_struct.h +0 -63
  397. package/src/headers/18/base64-inl.h +0 -189
  398. package/src/headers/18/base64.h +0 -69
  399. package/src/headers/18/base_object-inl.h +0 -374
  400. package/src/headers/18/callback_queue-inl.h +0 -97
  401. package/src/headers/18/callback_queue.h +0 -78
  402. package/src/headers/18/cares_wrap.h +0 -523
  403. package/src/headers/18/connect_wrap.h +0 -26
  404. package/src/headers/18/connection_wrap.h +0 -30
  405. package/src/headers/18/crypto/crypto_aes.h +0 -89
  406. package/src/headers/18/crypto/crypto_bio.h +0 -194
  407. package/src/headers/18/crypto/crypto_cipher.h +0 -291
  408. package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
  409. package/src/headers/18/crypto/crypto_common.h +0 -151
  410. package/src/headers/18/crypto/crypto_dh.h +0 -156
  411. package/src/headers/18/crypto/crypto_dsa.h +0 -77
  412. package/src/headers/18/crypto/crypto_ec.h +0 -170
  413. package/src/headers/18/crypto/crypto_groups.h +0 -415
  414. package/src/headers/18/crypto/crypto_hash.h +0 -89
  415. package/src/headers/18/crypto/crypto_hkdf.h +0 -65
  416. package/src/headers/18/crypto/crypto_hmac.h +0 -94
  417. package/src/headers/18/crypto/crypto_keygen.h +0 -305
  418. package/src/headers/18/crypto/crypto_pbkdf2.h +0 -76
  419. package/src/headers/18/crypto/crypto_random.h +0 -130
  420. package/src/headers/18/crypto/crypto_rsa.h +0 -141
  421. package/src/headers/18/crypto/crypto_scrypt.h +0 -87
  422. package/src/headers/18/crypto/crypto_sig.h +0 -168
  423. package/src/headers/18/crypto/crypto_spkac.h +0 -21
  424. package/src/headers/18/crypto/crypto_timing.h +0 -20
  425. package/src/headers/18/crypto/crypto_x509.h +0 -143
  426. package/src/headers/18/debug_utils-inl.h +0 -223
  427. package/src/headers/18/diagnosticfilename-inl.h +0 -33
  428. package/src/headers/18/env-inl.h +0 -1308
  429. package/src/headers/18/env.h +0 -1667
  430. package/src/headers/18/inspector_agent.h +0 -144
  431. package/src/headers/18/inspector_io.h +0 -78
  432. package/src/headers/18/inspector_profiler.h +0 -149
  433. package/src/headers/18/inspector_socket.h +0 -60
  434. package/src/headers/18/inspector_socket_server.h +0 -110
  435. package/src/headers/18/js_stream.h +0 -52
  436. package/src/headers/18/json_utils.h +0 -161
  437. package/src/headers/18/memory_tracker.h +0 -284
  438. package/src/headers/18/module_wrap.h +0 -116
  439. package/src/headers/18/node_binding.h +0 -99
  440. package/src/headers/18/node_context_data.h +0 -44
  441. package/src/headers/18/node_contextify.h +0 -196
  442. package/src/headers/18/node_crypto.h +0 -57
  443. package/src/headers/18/node_dir.h +0 -52
  444. package/src/headers/18/node_dtrace.h +0 -86
  445. package/src/headers/18/node_external_reference.h +0 -145
  446. package/src/headers/18/node_file.h +0 -426
  447. package/src/headers/18/node_http2_state.h +0 -149
  448. package/src/headers/18/node_i18n.h +0 -145
  449. package/src/headers/18/node_mem-inl.h +0 -112
  450. package/src/headers/18/node_mem.h +0 -45
  451. package/src/headers/18/node_mutex.h +0 -323
  452. package/src/headers/18/node_native_module.h +0 -109
  453. package/src/headers/18/node_native_module_env.h +0 -71
  454. package/src/headers/18/node_object_wrap.h +0 -132
  455. package/src/headers/18/node_process-inl.h +0 -26
  456. package/src/headers/18/node_report.h +0 -47
  457. package/src/headers/18/node_revert.h +0 -82
  458. package/src/headers/18/node_root_certs.h +0 -3246
  459. package/src/headers/18/node_snapshot_builder.h +0 -43
  460. package/src/headers/18/node_snapshotable.h +0 -130
  461. package/src/headers/18/node_stat_watcher.h +0 -72
  462. package/src/headers/18/node_union_bytes.h +0 -103
  463. package/src/headers/18/node_url.h +0 -205
  464. package/src/headers/18/node_v8.h +0 -41
  465. package/src/headers/18/node_v8_platform-inl.h +0 -194
  466. package/src/headers/18/node_wasi.h +0 -108
  467. package/src/headers/18/node_watchdog.h +0 -152
  468. package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
  469. package/src/headers/18/node_win32_etw_provider.h +0 -99
  470. package/src/headers/18/pipe_wrap.h +0 -80
  471. package/src/headers/18/req_wrap-inl.h +0 -170
  472. package/src/headers/18/spawn_sync.h +0 -242
  473. package/src/headers/18/stream_wrap.h +0 -133
  474. package/src/headers/18/string_decoder-inl.h +0 -37
  475. package/src/headers/18/string_decoder.h +0 -50
  476. package/src/headers/18/string_search.h +0 -638
  477. package/src/headers/18/tracing/node_trace_buffer.h +0 -83
  478. package/src/headers/18/tracing/node_trace_writer.h +0 -75
  479. package/src/headers/18/tracing/trace_event_common.h +0 -1109
  480. package/src/headers/18/tracing/traced_value.h +0 -70
  481. package/src/headers/18/udp_wrap.h +0 -227
  482. package/src/headers/18/v8abbr.h +0 -123
  483. /package/src/headers/{14 → 20}/tracing/node_trace_buffer.h +0 -0
  484. /package/src/headers/{14 → 20}/tracing/node_trace_writer.h +0 -0
  485. /package/src/headers/{14 → 20}/tracing/traced_value.h +0 -0
  486. /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
  487. /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
  488. /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
  489. /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
  490. /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
  491. /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
  492. /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
  493. /package/src/headers/{14 → 22}/inspector_io.h +0 -0
  494. /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
  495. /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
  496. /package/src/headers/{14 → 22}/js_stream.h +0 -0
  497. /package/src/headers/{14 → 22}/node_dir.h +0 -0
  498. /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
  499. /package/src/headers/{16 → 22}/node_mem.h +0 -0
  500. /package/src/headers/{16 → 22}/node_mutex.h +0 -0
  501. /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
  502. /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
  503. /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
  504. /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
  505. /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
  506. /package/src/headers/{18 → 22}/req_wrap.h +0 -0
  507. /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
  508. /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
  509. /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
  510. /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
  511. /package/src/headers/{18 → 22}/tty_wrap.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,6 +280,7 @@ 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,
@@ -227,11 +291,12 @@ FSReqBase* GetReqWrap(const v8::FunctionCallbackInfo<v8::Value>& args,
227
291
  return Unwrap<FSReqBase>(value.As<v8::Object>());
228
292
  }
229
293
 
230
- BindingData* binding_data = Environment::GetBindingData<BindingData>(args);
231
- Environment* env = binding_data->env();
232
- if (value->StrictEquals(env->fs_use_promises_symbol())) {
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())) {
233
298
  if (use_bigint) {
234
- return FSReqPromise<AliasedBigUint64Array>::New(binding_data, use_bigint);
299
+ return FSReqPromise<AliasedBigInt64Array>::New(binding_data, use_bigint);
235
300
  } else {
236
301
  return FSReqPromise<AliasedFloat64Array>::New(binding_data, use_bigint);
237
302
  }
@@ -298,6 +363,38 @@ int SyncCall(Environment* env, v8::Local<v8::Value> ctx,
298
363
  return err;
299
364
  }
300
365
 
366
+ // Similar to SyncCall but throws immediately if there is an error.
367
+ template <typename Predicate, typename Func, typename... Args>
368
+ int SyncCallAndThrowIf(Predicate should_throw,
369
+ Environment* env,
370
+ FSReqWrapSync* req_wrap,
371
+ Func fn,
372
+ Args... args) {
373
+ env->PrintSyncTrace();
374
+ int result = fn(nullptr, &(req_wrap->req), args..., nullptr);
375
+ if (should_throw(result)) {
376
+ env->ThrowUVException(result,
377
+ req_wrap->syscall_p,
378
+ nullptr,
379
+ req_wrap->path_p,
380
+ req_wrap->dest_p);
381
+ }
382
+ return result;
383
+ }
384
+
385
+ constexpr bool is_uv_error(int result) {
386
+ return result < 0;
387
+ }
388
+
389
+ // Similar to SyncCall but throws immediately if there is an error.
390
+ template <typename Func, typename... Args>
391
+ int SyncCallAndThrowOnError(Environment* env,
392
+ FSReqWrapSync* req_wrap,
393
+ Func fn,
394
+ Args... args) {
395
+ return SyncCallAndThrowIf(is_uv_error, env, req_wrap, fn, args...);
396
+ }
397
+
301
398
  } // namespace fs
302
399
  } // namespace node
303
400
 
@@ -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;
373
470
 
471
+ FSReqWrapSync(const FSReqWrapSync&) = delete;
472
+ FSReqWrapSync& operator=(const FSReqWrapSync&) = delete;
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
  };
@@ -417,6 +516,18 @@ inline int SyncCall(Environment* env, v8::Local<v8::Value> ctx,
417
516
  FSReqWrapSync* req_wrap, const char* syscall,
418
517
  Func fn, Args... args);
419
518
 
519
+ // Similar to SyncCall but throws immediately if there is an error.
520
+ template <typename Predicate, typename Func, typename... Args>
521
+ int SyncCallAndThrowIf(Predicate should_throw,
522
+ Environment* env,
523
+ FSReqWrapSync* req_wrap,
524
+ Func fn,
525
+ Args... args);
526
+ template <typename Func, typename... Args>
527
+ int SyncCallAndThrowOnError(Environment* env,
528
+ FSReqWrapSync* req_wrap,
529
+ Func fn,
530
+ Args... args);
420
531
  } // namespace fs
421
532
 
422
533
  } // namespace node
@@ -3,8 +3,9 @@
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
- // FIXME(joyeecheung): nghttp2.h needs stdint.h to compile on Windows
7
- #include <cstdint>
6
+ // clang-format off
7
+ #include "node.h" // nghttp2.h needs ssize_t
8
+ // clang-format on
8
9
  #include "nghttp2/nghttp2.h"
9
10
 
10
11
  #include "env.h"
@@ -626,6 +627,15 @@ class Http2Session : public AsyncWrap,
626
627
  flags_ |= kSessionStateClosed;
627
628
  }
628
629
 
630
+ struct custom_settings_state {
631
+ size_t number;
632
+ nghttp2_settings_entry entries[MAX_ADDITIONAL_SETTINGS];
633
+ };
634
+
635
+ custom_settings_state& custom_settings(bool local) {
636
+ return local ? local_custom_settings_ : remote_custom_settings_;
637
+ }
638
+
629
639
  #define IS_FLAG(name, flag) \
630
640
  bool is_##name() const { return flags_ & flag; } \
631
641
  void set_##name(bool on = true) { \
@@ -714,7 +724,7 @@ class Http2Session : public AsyncWrap,
714
724
  static void AltSvc(const v8::FunctionCallbackInfo<v8::Value>& args);
715
725
  static void Origin(const v8::FunctionCallbackInfo<v8::Value>& args);
716
726
 
717
- template <get_setting fn>
727
+ template <get_setting fn, bool local>
718
728
  static void RefreshSettings(const v8::FunctionCallbackInfo<v8::Value>& args);
719
729
 
720
730
  uv_loop_t* event_loop() const {
@@ -738,6 +748,9 @@ class Http2Session : public AsyncWrap,
738
748
  current_session_memory_ -= amount;
739
749
  }
740
750
 
751
+ void UpdateLocalCustomSettings(size_t count_,
752
+ nghttp2_settings_entry* entries_);
753
+
741
754
  // Tell our custom memory allocator that this rcbuf is independent of
742
755
  // this session now, and may outlive it.
743
756
  void StopTrackingRcbuf(nghttp2_rcbuf* buf);
@@ -775,6 +788,8 @@ class Http2Session : public AsyncWrap,
775
788
  private:
776
789
  void EmitStatistics();
777
790
 
791
+ void FetchAllowedRemoteCustomSettings();
792
+
778
793
  // Frame Padding Strategies
779
794
  ssize_t OnDWordAlignedPadding(size_t frameLength,
780
795
  size_t maxPayloadLen);
@@ -842,11 +857,11 @@ class Http2Session : public AsyncWrap,
842
857
  const nghttp2_frame* frame,
843
858
  size_t maxPayloadLen,
844
859
  void* user_data);
845
- static int OnNghttpError(
846
- nghttp2_session* session,
847
- const char* message,
848
- size_t len,
849
- void* user_data);
860
+ static int OnNghttpError(nghttp2_session* session,
861
+ int lib_error_code,
862
+ const char* message,
863
+ size_t len,
864
+ void* user_data);
850
865
  static int OnSendData(
851
866
  nghttp2_session* session,
852
867
  nghttp2_frame* frame,
@@ -914,6 +929,9 @@ class Http2Session : public AsyncWrap,
914
929
  size_t max_outstanding_settings_ = kDefaultMaxSettings;
915
930
  std::queue<BaseObjectPtr<Http2Settings>> outstanding_settings_;
916
931
 
932
+ struct custom_settings_state local_custom_settings_;
933
+ struct custom_settings_state remote_custom_settings_;
934
+
917
935
  std::vector<NgHttp2StreamWrite> outgoing_buffers_;
918
936
  std::vector<uint8_t> outgoing_storage_;
919
937
  size_t outgoing_length_ = 0;
@@ -1017,8 +1035,7 @@ class Http2Settings : public AsyncWrap {
1017
1035
  static void RefreshDefaults(Http2State* http2_state);
1018
1036
 
1019
1037
  // Update the local or remote settings for the given session
1020
- static void Update(Http2Session* session,
1021
- get_setting fn);
1038
+ static void Update(Http2Session* session, get_setting fn, bool local);
1022
1039
 
1023
1040
  private:
1024
1041
  static size_t Init(
@@ -1034,7 +1051,7 @@ class Http2Settings : public AsyncWrap {
1034
1051
  v8::Global<v8::Function> callback_;
1035
1052
  uint64_t startTime_;
1036
1053
  size_t count_ = 0;
1037
- nghttp2_settings_entry entries_[IDX_SETTINGS_COUNT];
1054
+ nghttp2_settings_entry entries_[IDX_SETTINGS_COUNT + MAX_ADDITIONAL_SETTINGS];
1038
1055
  };
1039
1056
 
1040
1057
  class Origins {
@@ -21,6 +21,9 @@ namespace http2 {
21
21
  IDX_SETTINGS_COUNT
22
22
  };
23
23
 
24
+ // number of max additional settings, thus settings not implemented by nghttp2
25
+ const size_t MAX_ADDITIONAL_SETTINGS = 10;
26
+
24
27
  enum Http2SessionStateIndex {
25
28
  IDX_SESSION_STATE_EFFECTIVE_LOCAL_WINDOW_SIZE,
26
29
  IDX_SESSION_STATE_EFFECTIVE_RECV_DATA_LENGTH,
@@ -55,6 +58,8 @@ namespace http2 {
55
58
  IDX_OPTIONS_MAX_OUTSTANDING_SETTINGS,
56
59
  IDX_OPTIONS_MAX_SESSION_MEMORY,
57
60
  IDX_OPTIONS_MAX_SETTINGS,
61
+ IDX_OPTIONS_STREAM_RESET_RATE,
62
+ IDX_OPTIONS_STREAM_RESET_BURST,
58
63
  IDX_OPTIONS_FLAGS
59
64
  };
60
65
 
@@ -83,37 +88,36 @@ namespace http2 {
83
88
 
84
89
  class Http2State : public BaseObject {
85
90
  public:
86
- Http2State(Environment* env, v8::Local<v8::Object> obj)
87
- : BaseObject(env, obj),
88
- root_buffer(env->isolate(), sizeof(http2_state_internal)),
91
+ Http2State(Realm* realm, v8::Local<v8::Object> obj)
92
+ : BaseObject(realm, obj),
93
+ root_buffer(realm->isolate(), sizeof(http2_state_internal)),
89
94
  session_state_buffer(
90
- env->isolate(),
95
+ realm->isolate(),
91
96
  offsetof(http2_state_internal, session_state_buffer),
92
97
  IDX_SESSION_STATE_COUNT,
93
98
  root_buffer),
94
- stream_state_buffer(
95
- env->isolate(),
96
- offsetof(http2_state_internal, stream_state_buffer),
97
- IDX_STREAM_STATE_COUNT,
98
- root_buffer),
99
- stream_stats_buffer(
100
- env->isolate(),
101
- offsetof(http2_state_internal, stream_stats_buffer),
102
- IDX_STREAM_STATS_COUNT,
103
- root_buffer),
99
+ stream_state_buffer(realm->isolate(),
100
+ offsetof(http2_state_internal, stream_state_buffer),
101
+ IDX_STREAM_STATE_COUNT,
102
+ root_buffer),
103
+ stream_stats_buffer(realm->isolate(),
104
+ offsetof(http2_state_internal, stream_stats_buffer),
105
+ IDX_STREAM_STATS_COUNT,
106
+ root_buffer),
104
107
  session_stats_buffer(
105
- env->isolate(),
108
+ realm->isolate(),
106
109
  offsetof(http2_state_internal, session_stats_buffer),
107
110
  IDX_SESSION_STATS_COUNT,
108
111
  root_buffer),
109
- options_buffer(env->isolate(),
110
- offsetof(http2_state_internal, options_buffer),
111
- IDX_OPTIONS_FLAGS + 1,
112
- root_buffer),
113
- settings_buffer(env->isolate(),
114
- offsetof(http2_state_internal, settings_buffer),
115
- IDX_SETTINGS_COUNT + 1,
116
- root_buffer) {}
112
+ options_buffer(realm->isolate(),
113
+ offsetof(http2_state_internal, options_buffer),
114
+ IDX_OPTIONS_FLAGS + 1,
115
+ root_buffer),
116
+ settings_buffer(
117
+ realm->isolate(),
118
+ offsetof(http2_state_internal, settings_buffer),
119
+ IDX_SETTINGS_COUNT + 1 + 1 + 2 * MAX_ADDITIONAL_SETTINGS,
120
+ root_buffer) {}
117
121
 
118
122
  AliasedUint8Array root_buffer;
119
123
  AliasedFloat64Array session_state_buffer;
@@ -127,7 +131,7 @@ class Http2State : public BaseObject {
127
131
  SET_SELF_SIZE(Http2State)
128
132
  SET_MEMORY_INFO_NAME(Http2State)
129
133
 
130
- static constexpr FastStringKey type_name { "http2" };
134
+ SET_BINDING_ID(http2_binding_data)
131
135
 
132
136
  private:
133
137
  struct http2_state_internal {
@@ -137,7 +141,12 @@ class Http2State : public BaseObject {
137
141
  double stream_stats_buffer[IDX_STREAM_STATS_COUNT];
138
142
  double session_stats_buffer[IDX_SESSION_STATS_COUNT];
139
143
  uint32_t options_buffer[IDX_OPTIONS_FLAGS + 1];
140
- uint32_t settings_buffer[IDX_SETTINGS_COUNT + 1];
144
+ // first + 1: number of actual nghttp2 supported settings
145
+ // second + 1: number of additional settings not supported by nghttp2
146
+ // 2 * MAX_ADDITIONAL_SETTINGS: settings id and value for each
147
+ // additional setting
148
+ uint32_t settings_buffer[IDX_SETTINGS_COUNT + 1 + 1 +
149
+ 2 * MAX_ADDITIONAL_SETTINGS];
141
150
  };
142
151
  };
143
152