@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
@@ -0,0 +1,132 @@
1
+ #ifndef SRC_BLOB_SERIALIZER_DESERIALIZER_H_
2
+ #define SRC_BLOB_SERIALIZER_DESERIALIZER_H_
3
+
4
+ #include <string>
5
+ #include <vector>
6
+
7
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
8
+
9
+ // This is related to the blob that is used in snapshots and single executable
10
+ // applications and has nothing to do with `node_blob.h`.
11
+
12
+ namespace node {
13
+
14
+ class BlobSerializerDeserializer {
15
+ public:
16
+ explicit BlobSerializerDeserializer(bool is_debug_v) : is_debug(is_debug_v) {}
17
+
18
+ template <typename... Args>
19
+ void Debug(const char* format, Args&&... args) const;
20
+
21
+ template <typename T>
22
+ std::string ToStr(const T& arg) const;
23
+
24
+ template <typename T>
25
+ std::string GetName() const;
26
+
27
+ bool is_debug = false;
28
+ };
29
+
30
+ enum class StringLogMode {
31
+ kAddressOnly, // Can be used when the string contains binary content.
32
+ kAddressAndContent,
33
+ };
34
+
35
+ // Child classes are expected to implement T Read<T>() where
36
+ // !std::is_arithmetic_v<T> && !std::is_same_v<T, std::string>
37
+ template <typename Impl>
38
+ class BlobDeserializer : public BlobSerializerDeserializer {
39
+ public:
40
+ explicit BlobDeserializer(bool is_debug_v, std::string_view s)
41
+ : BlobSerializerDeserializer(is_debug_v), sink(s) {}
42
+ ~BlobDeserializer() = default;
43
+
44
+ size_t read_total = 0;
45
+ std::string_view sink;
46
+
47
+ Impl* impl() { return static_cast<Impl*>(this); }
48
+ const Impl* impl() const { return static_cast<const Impl*>(this); }
49
+
50
+ // Helper for reading numeric types.
51
+ template <typename T>
52
+ T ReadArithmetic();
53
+
54
+ // Layout of vectors:
55
+ // [ 4/8 bytes ] count
56
+ // [ ... ] contents (count * size of individual elements)
57
+ template <typename T>
58
+ std::vector<T> ReadVector();
59
+
60
+ // ReadString() creates a copy of the data. ReadStringView() doesn't.
61
+ std::string ReadString();
62
+ std::string_view ReadStringView(StringLogMode mode);
63
+
64
+ // Helper for reading an array of numeric types.
65
+ template <typename T>
66
+ void ReadArithmetic(T* out, size_t count);
67
+
68
+ // Helper for reading numeric vectors.
69
+ template <typename Number>
70
+ std::vector<Number> ReadArithmeticVector(size_t count);
71
+
72
+ private:
73
+ // Helper for reading non-numeric vectors.
74
+ template <typename T>
75
+ std::vector<T> ReadNonArithmeticVector(size_t count);
76
+
77
+ template <typename T>
78
+ T ReadElement();
79
+ };
80
+
81
+ // Child classes are expected to implement size_t Write<T>(const T&) where
82
+ // !std::is_arithmetic_v<T> && !std::is_same_v<T, std::string>
83
+ template <typename Impl>
84
+ class BlobSerializer : public BlobSerializerDeserializer {
85
+ public:
86
+ explicit BlobSerializer(bool is_debug_v)
87
+ : BlobSerializerDeserializer(is_debug_v) {}
88
+ ~BlobSerializer() = default;
89
+
90
+ Impl* impl() { return static_cast<Impl*>(this); }
91
+ const Impl* impl() const { return static_cast<const Impl*>(this); }
92
+
93
+ std::vector<char> sink;
94
+
95
+ // Helper for writing numeric types.
96
+ template <typename T>
97
+ size_t WriteArithmetic(const T& data);
98
+
99
+ // Layout of vectors:
100
+ // [ 4/8 bytes ] count
101
+ // [ ... ] contents (count * size of individual elements)
102
+ template <typename T>
103
+ size_t WriteVector(const std::vector<T>& data);
104
+
105
+ // The layout of a written string:
106
+ // [ 4/8 bytes ] length
107
+ // [ |length| bytes ] contents
108
+ size_t WriteStringView(std::string_view data, StringLogMode mode);
109
+ size_t WriteString(const std::string& data);
110
+
111
+ // Helper for writing an array of numeric types.
112
+ template <typename T>
113
+ size_t WriteArithmetic(const T* data, size_t count);
114
+
115
+ // Helper for writing numeric vectors.
116
+ template <typename Number>
117
+ size_t WriteArithmeticVector(const std::vector<Number>& data);
118
+
119
+ private:
120
+ // Helper for writing non-numeric vectors.
121
+ template <typename T>
122
+ size_t WriteNonArithmeticVector(const std::vector<T>& data);
123
+
124
+ template <typename T>
125
+ size_t WriteElement(const T& data);
126
+ };
127
+
128
+ } // namespace node
129
+
130
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
131
+
132
+ #endif // SRC_BLOB_SERIALIZER_DESERIALIZER_H_
@@ -4,6 +4,7 @@
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
6
  #include <atomic>
7
+ #include <memory>
7
8
 
8
9
  namespace node {
9
10
 
@@ -9,8 +9,9 @@
9
9
  #include "base_object.h"
10
10
  #include "env.h"
11
11
  #include "memory_tracker.h"
12
- #include "util.h"
13
12
  #include "node.h"
13
+ #include "node_internals.h"
14
+ #include "util.h"
14
15
 
15
16
  #include "ares.h"
16
17
  #include "v8.h"
@@ -29,6 +30,9 @@ namespace cares_wrap {
29
30
 
30
31
  constexpr int ns_t_cname_or_a = -1;
31
32
  constexpr int DNS_ESETSRVPENDING = -1000;
33
+ constexpr uint8_t DNS_ORDER_VERBATIM = 0;
34
+ constexpr uint8_t DNS_ORDER_IPV4_FIRST = 1;
35
+ constexpr uint8_t DNS_ORDER_IPV6_FIRST = 2;
32
36
 
33
37
  class ChannelWrap;
34
38
 
@@ -194,16 +198,16 @@ class GetAddrInfoReqWrap final : public ReqWrap<uv_getaddrinfo_t> {
194
198
  public:
195
199
  GetAddrInfoReqWrap(Environment* env,
196
200
  v8::Local<v8::Object> req_wrap_obj,
197
- bool verbatim);
201
+ uint8_t order);
198
202
 
199
203
  SET_NO_MEMORY_INFO()
200
204
  SET_MEMORY_INFO_NAME(GetAddrInfoReqWrap)
201
205
  SET_SELF_SIZE(GetAddrInfoReqWrap)
202
206
 
203
- bool verbatim() const { return verbatim_; }
207
+ uint8_t order() const { return order_; }
204
208
 
205
209
  private:
206
- const bool verbatim_;
210
+ const uint8_t order_;
207
211
  };
208
212
 
209
213
  class GetNameInfoReqWrap final : public ReqWrap<uv_getnameinfo_t> {
@@ -242,18 +246,20 @@ class QueryWrap final : public AsyncWrap {
242
246
  return Traits::Send(this, name);
243
247
  }
244
248
 
245
- void AresQuery(const char* name, int dnsclass, int type) {
249
+ void AresQuery(const char* name,
250
+ ares_dns_class_t dnsclass,
251
+ ares_dns_rec_type_t type) {
246
252
  channel_->EnsureServers();
247
253
  TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(
248
254
  TRACING_CATEGORY_NODE2(dns, native), trace_name_, this,
249
255
  "name", TRACE_STR_COPY(name));
250
- ares_query(
251
- channel_->cares_channel(),
252
- name,
253
- dnsclass,
254
- type,
255
- Callback,
256
- MakeCallbackPointer());
256
+ ares_query_dnsrec(channel_->cares_channel(),
257
+ name,
258
+ dnsclass,
259
+ type,
260
+ Callback,
261
+ MakeCallbackPointer(),
262
+ nullptr);
257
263
  }
258
264
 
259
265
  void ParseError(int status) {
@@ -300,19 +306,20 @@ class QueryWrap final : public AsyncWrap {
300
306
  return wrap;
301
307
  }
302
308
 
303
- static void Callback(
304
- void* arg,
305
- int status,
306
- int timeouts,
307
- unsigned char* answer_buf,
308
- int answer_len) {
309
+ static void Callback(void* arg,
310
+ ares_status_t status,
311
+ size_t timeouts,
312
+ const ares_dns_record_t* dnsrec) {
309
313
  QueryWrap<Traits>* wrap = FromCallbackPointer(arg);
310
314
  if (wrap == nullptr) return;
311
315
 
312
316
  unsigned char* buf_copy = nullptr;
317
+ size_t answer_len = 0;
313
318
  if (status == ARES_SUCCESS) {
314
- buf_copy = node::Malloc<unsigned char>(answer_len);
315
- memcpy(buf_copy, answer_buf, answer_len);
319
+ // No need to explicitly call ares_free_string here,
320
+ // as it is a wrapper around free, which is already
321
+ // invoked when MallocedBuffer is destructed.
322
+ ares_dns_write(dnsrec, &buf_copy, &answer_len);
316
323
  }
317
324
 
318
325
  wrap->response_data_ = std::make_unique<ResponseData>();
@@ -0,0 +1,6 @@
1
+ // This is an auto generated file, please do not edit.
2
+ // Refer to tools/dep_updaters/update-cjs-module-lexer.sh
3
+ #ifndef SRC_CJS_MODULE_LEXER_VERSION_H_
4
+ #define SRC_CJS_MODULE_LEXER_VERSION_H_
5
+ #define CJS_MODULE_LEXER_VERSION "1.4.1"
6
+ #endif // SRC_CJS_MODULE_LEXER_VERSION_H_
@@ -0,0 +1,62 @@
1
+ #ifndef SRC_CLEANUP_QUEUE_INL_H_
2
+ #define SRC_CLEANUP_QUEUE_INL_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "base_object.h"
7
+ #include "cleanup_queue.h"
8
+ #include "memory_tracker-inl.h"
9
+ #include "util.h"
10
+
11
+ namespace node {
12
+
13
+ inline void CleanupQueue::MemoryInfo(MemoryTracker* tracker) const {
14
+ ForEachBaseObject([&](BaseObject* obj) {
15
+ if (obj->IsDoneInitializing()) tracker->Track(obj);
16
+ });
17
+ }
18
+
19
+ inline size_t CleanupQueue::SelfSize() const {
20
+ return sizeof(CleanupQueue) +
21
+ cleanup_hooks_.size() * sizeof(CleanupHookCallback);
22
+ }
23
+
24
+ bool CleanupQueue::empty() const {
25
+ return cleanup_hooks_.empty();
26
+ }
27
+
28
+ void CleanupQueue::Add(Callback cb, void* arg) {
29
+ auto insertion_info =
30
+ cleanup_hooks_.emplace(cb, arg, cleanup_hook_counter_++);
31
+ // Make sure there was no existing element with these values.
32
+ CHECK_EQ(insertion_info.second, true);
33
+ }
34
+
35
+ void CleanupQueue::Remove(Callback cb, void* arg) {
36
+ CleanupHookCallback search{cb, arg, 0};
37
+ cleanup_hooks_.erase(search);
38
+ }
39
+
40
+ template <typename T>
41
+ void CleanupQueue::ForEachBaseObject(T&& iterator) const {
42
+ std::vector<CleanupHookCallback> callbacks = GetOrdered();
43
+
44
+ for (const auto& hook : callbacks) {
45
+ BaseObject* obj = GetBaseObject(hook);
46
+ if (obj != nullptr) iterator(obj);
47
+ }
48
+ }
49
+
50
+ BaseObject* CleanupQueue::GetBaseObject(
51
+ const CleanupHookCallback& callback) const {
52
+ if (callback.fn_ == BaseObject::DeleteMe)
53
+ return static_cast<BaseObject*>(callback.arg_);
54
+ else
55
+ return nullptr;
56
+ }
57
+
58
+ } // namespace node
59
+
60
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
61
+
62
+ #endif // SRC_CLEANUP_QUEUE_INL_H_
@@ -0,0 +1,85 @@
1
+ #ifndef SRC_CLEANUP_QUEUE_H_
2
+ #define SRC_CLEANUP_QUEUE_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include <cstddef>
7
+ #include <cstdint>
8
+ #include <unordered_set>
9
+ #include <vector>
10
+
11
+ #include "memory_tracker.h"
12
+
13
+ namespace node {
14
+
15
+ class BaseObject;
16
+
17
+ class CleanupQueue : public MemoryRetainer {
18
+ public:
19
+ typedef void (*Callback)(void*);
20
+
21
+ CleanupQueue() = default;
22
+
23
+ // Not copyable.
24
+ CleanupQueue(const CleanupQueue&) = delete;
25
+
26
+ SET_MEMORY_INFO_NAME(CleanupQueue)
27
+ inline void MemoryInfo(node::MemoryTracker* tracker) const override;
28
+ inline size_t SelfSize() const override;
29
+
30
+ inline bool empty() const;
31
+
32
+ inline void Add(Callback cb, void* arg);
33
+ inline void Remove(Callback cb, void* arg);
34
+ void Drain();
35
+
36
+ template <typename T>
37
+ inline void ForEachBaseObject(T&& iterator) const;
38
+
39
+ private:
40
+ class CleanupHookCallback {
41
+ public:
42
+ CleanupHookCallback(Callback fn,
43
+ void* arg,
44
+ uint64_t insertion_order_counter)
45
+ : fn_(fn),
46
+ arg_(arg),
47
+ insertion_order_counter_(insertion_order_counter) {}
48
+
49
+ // Only hashes `arg_`, since that is usually enough to identify the hook.
50
+ struct Hash {
51
+ size_t operator()(const CleanupHookCallback& cb) const;
52
+ };
53
+
54
+ // Compares by `fn_` and `arg_` being equal.
55
+ struct Equal {
56
+ bool operator()(const CleanupHookCallback& a,
57
+ const CleanupHookCallback& b) const;
58
+ };
59
+
60
+ private:
61
+ friend class CleanupQueue;
62
+ Callback fn_;
63
+ void* arg_;
64
+
65
+ // We keep track of the insertion order for these objects, so that we can
66
+ // call the callbacks in reverse order when we are cleaning up.
67
+ uint64_t insertion_order_counter_;
68
+ };
69
+
70
+ std::vector<CleanupHookCallback> GetOrdered() const;
71
+ inline BaseObject* GetBaseObject(const CleanupHookCallback& callback) const;
72
+
73
+ // Use an unordered_set, so that we have efficient insertion and removal.
74
+ std::unordered_set<CleanupHookCallback,
75
+ CleanupHookCallback::Hash,
76
+ CleanupHookCallback::Equal>
77
+ cleanup_hooks_;
78
+ uint64_t cleanup_hook_counter_ = 0;
79
+ };
80
+
81
+ } // namespace node
82
+
83
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
84
+
85
+ #endif // SRC_CLEANUP_QUEUE_H_
@@ -0,0 +1,104 @@
1
+ #ifndef SRC_COMPILE_CACHE_H_
2
+ #define SRC_COMPILE_CACHE_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include <cinttypes>
7
+ #include <memory>
8
+ #include <string>
9
+ #include <string_view>
10
+ #include <unordered_map>
11
+ #include "v8.h"
12
+
13
+ namespace node {
14
+ class Environment;
15
+
16
+ // TODO(joyeecheung): move it into a CacheHandler class.
17
+ enum class CachedCodeType : uint8_t {
18
+ kCommonJS = 0,
19
+ kESM,
20
+ };
21
+
22
+ struct CompileCacheEntry {
23
+ std::unique_ptr<v8::ScriptCompiler::CachedData> cache{nullptr};
24
+ uint32_t cache_key;
25
+ uint32_t code_hash;
26
+ uint32_t code_size;
27
+
28
+ std::string cache_filename;
29
+ std::string source_filename;
30
+ CachedCodeType type;
31
+ bool refreshed = false;
32
+ bool persisted = false;
33
+
34
+ // Copy the cache into a new store for V8 to consume. Caller takes
35
+ // ownership.
36
+ v8::ScriptCompiler::CachedData* CopyCache() const;
37
+ };
38
+
39
+ #define COMPILE_CACHE_STATUS(V) \
40
+ V(FAILED) /* Failed to enable the cache */ \
41
+ V(ENABLED) /* Was not enabled before, and now enabled. */ \
42
+ V(ALREADY_ENABLED) /* Was already enabled. */ \
43
+ V(DISABLED) /* Has been disabled by NODE_DISABLE_COMPILE_CACHE. */
44
+
45
+ enum class CompileCacheEnableStatus : uint8_t {
46
+ #define V(status) status,
47
+ COMPILE_CACHE_STATUS(V)
48
+ #undef V
49
+ };
50
+
51
+ struct CompileCacheEnableResult {
52
+ CompileCacheEnableStatus status;
53
+ std::string cache_directory;
54
+ std::string message; // Set in case of failure.
55
+ };
56
+
57
+ class CompileCacheHandler {
58
+ public:
59
+ explicit CompileCacheHandler(Environment* env);
60
+ CompileCacheEnableResult Enable(Environment* env, const std::string& dir);
61
+
62
+ void Persist();
63
+
64
+ CompileCacheEntry* GetOrInsert(v8::Local<v8::String> code,
65
+ v8::Local<v8::String> filename,
66
+ CachedCodeType type);
67
+ void MaybeSave(CompileCacheEntry* entry,
68
+ v8::Local<v8::Function> func,
69
+ bool rejected);
70
+ void MaybeSave(CompileCacheEntry* entry,
71
+ v8::Local<v8::Module> mod,
72
+ bool rejected);
73
+ std::string_view cache_dir() { return compile_cache_dir_; }
74
+
75
+ private:
76
+ void ReadCacheFile(CompileCacheEntry* entry);
77
+
78
+ template <typename T>
79
+ void MaybeSaveImpl(CompileCacheEntry* entry,
80
+ v8::Local<T> func_or_mod,
81
+ bool rejected);
82
+
83
+ template <typename... Args>
84
+ inline void Debug(const char* format, Args&&... args) const;
85
+
86
+ static constexpr size_t kMagicNumberOffset = 0;
87
+ static constexpr size_t kCodeSizeOffset = 1;
88
+ static constexpr size_t kCacheSizeOffset = 2;
89
+ static constexpr size_t kCodeHashOffset = 3;
90
+ static constexpr size_t kCacheHashOffset = 4;
91
+ static constexpr size_t kHeaderCount = 5;
92
+
93
+ v8::Isolate* isolate_ = nullptr;
94
+ bool is_debug_ = false;
95
+
96
+ std::string compile_cache_dir_;
97
+ std::unordered_map<uint32_t, std::unique_ptr<CompileCacheEntry>>
98
+ compiler_cache_store_;
99
+ };
100
+ } // namespace node
101
+
102
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
103
+
104
+ #endif // SRC_COMPILE_CACHE_H_
@@ -66,7 +66,7 @@ class ClientHelloParser {
66
66
  void Parse(const uint8_t* data, size_t avail);
67
67
 
68
68
  inline void Reset();
69
- inline void Start(OnHelloCb onhello_cb, OnEndCb onend_cb, void* onend_arg);
69
+ inline void Start(OnHelloCb onhello_cb, OnEndCb onend_cb, void* cb_arg);
70
70
  inline void End();
71
71
  inline bool IsPaused() const;
72
72
  inline bool IsEnded() const;
@@ -3,8 +3,9 @@
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
- #include "crypto/crypto_util.h"
7
6
  #include "base_object.h"
7
+ #include "crypto/crypto_keys.h"
8
+ #include "crypto/crypto_util.h"
8
9
  #include "env.h"
9
10
  #include "memory_tracker.h"
10
11
  #include "v8.h"
@@ -18,11 +19,10 @@ constexpr int kMaxSupportedVersion = TLS1_3_VERSION;
18
19
  void GetRootCertificates(
19
20
  const v8::FunctionCallbackInfo<v8::Value>& args);
20
21
 
21
- void IsExtraRootCertsFileLoaded(
22
- const v8::FunctionCallbackInfo<v8::Value>& args);
23
-
24
22
  X509_STORE* NewRootCertStore();
25
23
 
24
+ X509_STORE* GetOrCreateRootCertStore();
25
+
26
26
  BIOPointer LoadBIO(Environment* env, v8::Local<v8::Value> v);
27
27
 
28
28
  class SecureContext final : public BaseObject {
@@ -43,6 +43,10 @@ class SecureContext final : public BaseObject {
43
43
 
44
44
  const SSLCtxPointer& ctx() const { return ctx_; }
45
45
 
46
+ // Non-const ctx() that allows for non-default initialization of
47
+ // the SecureContext.
48
+ SSLCtxPointer& ctx() { return ctx_; }
49
+
46
50
  SSLPointer CreateSSL();
47
51
 
48
52
  void SetGetSessionCallback(GetSessionCb cb);
@@ -50,6 +54,19 @@ class SecureContext final : public BaseObject {
50
54
  void SetNewSessionCallback(NewSessionCb cb);
51
55
  void SetSelectSNIContextCallback(SelectSNIContextCb cb);
52
56
 
57
+ inline const X509Pointer& issuer() const { return issuer_; }
58
+ inline const X509Pointer& cert() const { return cert_; }
59
+
60
+ v8::Maybe<void> AddCert(Environment* env, BIOPointer&& bio);
61
+ v8::Maybe<void> SetCRL(Environment* env, const BIOPointer& bio);
62
+ v8::Maybe<void> UseKey(Environment* env, const KeyObjectData& key);
63
+
64
+ void SetCACert(const BIOPointer& bio);
65
+ void SetRootCerts();
66
+
67
+ void SetX509StoreFlag(unsigned long flags); // NOLINT(runtime/int)
68
+ X509_STORE* GetCertStoreOwnedByThisSecureContext();
69
+
53
70
  // TODO(joyeecheung): track the memory used by OpenSSL types
54
71
  SET_NO_MEMORY_INFO()
55
72
  SET_MEMORY_INFO_NAME(SecureContext)
@@ -76,6 +93,8 @@ class SecureContext final : public BaseObject {
76
93
  #endif // !OPENSSL_NO_ENGINE
77
94
  static void SetCert(const v8::FunctionCallbackInfo<v8::Value>& args);
78
95
  static void AddCACert(const v8::FunctionCallbackInfo<v8::Value>& args);
96
+ static void SetAllowPartialTrustChain(
97
+ const v8::FunctionCallbackInfo<v8::Value>& args);
79
98
  static void AddCRL(const v8::FunctionCallbackInfo<v8::Value>& args);
80
99
  static void AddRootCerts(const v8::FunctionCallbackInfo<v8::Value>& args);
81
100
  static void SetCipherSuites(const v8::FunctionCallbackInfo<v8::Value>& args);
@@ -100,8 +119,6 @@ class SecureContext final : public BaseObject {
100
119
  #endif // !OPENSSL_NO_ENGINE
101
120
  static void GetTicketKeys(const v8::FunctionCallbackInfo<v8::Value>& args);
102
121
  static void SetTicketKeys(const v8::FunctionCallbackInfo<v8::Value>& args);
103
- static void SetFreeListLength(
104
- const v8::FunctionCallbackInfo<v8::Value>& args);
105
122
  static void EnableTicketKeyCallback(
106
123
  const v8::FunctionCallbackInfo<v8::Value>& args);
107
124
  static void CtxGetter(const v8::FunctionCallbackInfo<v8::Value>& info);
@@ -130,9 +147,11 @@ class SecureContext final : public BaseObject {
130
147
  SSLCtxPointer ctx_;
131
148
  X509Pointer cert_;
132
149
  X509Pointer issuer_;
150
+ // Non-owning cache for SSL_CTX_get_cert_store(ctx_.get())
151
+ X509_STORE* own_cert_store_cache_ = nullptr;
133
152
  #ifndef OPENSSL_NO_ENGINE
134
153
  bool client_cert_engine_provided_ = false;
135
- EnginePointer private_key_engine_;
154
+ ncrypto::EnginePointer private_key_engine_;
136
155
  #endif // !OPENSSL_NO_ENGINE
137
156
 
138
157
  unsigned char ticket_key_name_[16];
@@ -140,6 +159,11 @@ class SecureContext final : public BaseObject {
140
159
  unsigned char ticket_key_hmac_[16];
141
160
  };
142
161
 
162
+ int SSL_CTX_use_certificate_chain(SSL_CTX* ctx,
163
+ BIOPointer&& in,
164
+ X509Pointer* cert,
165
+ X509Pointer* issuer);
166
+
143
167
  } // namespace crypto
144
168
  } // namespace node
145
169