@encharm/cws 4.0.2 → 4.3.0

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 (410) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/LICENSE +3 -2
  3. package/README.md +9 -2
  4. package/binding.gyp +2 -2
  5. package/dist/bindings/cws_darwin_arm64_node108.node +0 -0
  6. package/dist/bindings/cws_darwin_arm64_node64.node +0 -0
  7. package/dist/bindings/cws_darwin_arm64_node72.node +0 -0
  8. package/dist/bindings/cws_darwin_arm64_node79.node +0 -0
  9. package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
  10. package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
  11. package/dist/bindings/cws_darwin_x64_node108.node +0 -0
  12. package/dist/bindings/cws_darwin_x64_node64.node +0 -0
  13. package/dist/bindings/cws_darwin_x64_node72.node +0 -0
  14. package/dist/bindings/cws_darwin_x64_node79.node +0 -0
  15. package/dist/bindings/cws_darwin_x64_node83.node +0 -0
  16. package/dist/bindings/cws_darwin_x64_node93.node +0 -0
  17. package/dist/bindings/cws_linux_x64_node108.node +0 -0
  18. package/dist/bindings/cws_linux_x64_node64.node +0 -0
  19. package/dist/bindings/cws_linux_x64_node72.node +0 -0
  20. package/dist/bindings/cws_linux_x64_node79.node +0 -0
  21. package/dist/bindings/cws_linux_x64_node83.node +0 -0
  22. package/dist/bindings/cws_linux_x64_node93.node +0 -0
  23. package/dist/bindings/cws_win32_x64_node108.node +0 -0
  24. package/dist/bindings/cws_win32_x64_node64.node +0 -0
  25. package/dist/bindings/cws_win32_x64_node72.node +0 -0
  26. package/dist/bindings/cws_win32_x64_node79.node +0 -0
  27. package/dist/bindings/cws_win32_x64_node83.node +0 -0
  28. package/dist/bindings/cws_win32_x64_node93.node +0 -0
  29. package/dist/client.d.ts +1 -0
  30. package/dist/client.js +4 -0
  31. package/dist/index.js +3 -2
  32. package/dist/server.js +1 -0
  33. package/dist/shared.js +2 -1
  34. package/package.json +1 -1
  35. package/src/Addon.cpp +1 -0
  36. package/src/Addon.h +35 -2
  37. package/src/HTTPSocket.cpp +1 -1
  38. package/src/LICENSE +4 -0
  39. package/src/Socket.h +12 -3
  40. package/src/headers/{13 → 18}/aliased_buffer.h +61 -9
  41. package/src/headers/18/aliased_struct-inl.h +54 -0
  42. package/src/headers/18/aliased_struct.h +63 -0
  43. package/src/headers/{12 → 18}/async_wrap-inl.h +0 -0
  44. package/src/headers/{12 → 18}/async_wrap.h +26 -2
  45. package/src/headers/{12/base64.h → 18/base64-inl.h} +78 -86
  46. package/src/headers/18/base64.h +69 -0
  47. package/src/headers/{12 → 18}/base_object-inl.h +46 -25
  48. package/src/headers/{12 → 18}/base_object.h +82 -17
  49. package/src/headers/{12 → 18}/callback_queue-inl.h +9 -9
  50. package/src/headers/{12 → 18}/callback_queue.h +13 -5
  51. package/src/headers/18/cares_wrap.h +523 -0
  52. package/src/headers/{12 → 18}/connect_wrap.h +0 -0
  53. package/src/headers/{12 → 18}/connection_wrap.h +0 -0
  54. package/src/headers/18/crypto/crypto_aes.h +89 -0
  55. package/src/headers/{13/node_crypto_bio.h → 18/crypto/crypto_bio.h} +3 -4
  56. package/src/headers/18/crypto/crypto_cipher.h +291 -0
  57. package/src/headers/{13/node_crypto_clienthello-inl.h → 18/crypto/crypto_clienthello-inl.h} +4 -5
  58. package/src/headers/{13/node_crypto_clienthello.h → 18/crypto/crypto_clienthello.h} +3 -4
  59. package/src/headers/{12/node_crypto_common.h → 18/crypto/crypto_common.h} +49 -36
  60. package/src/headers/18/crypto/crypto_context.h +147 -0
  61. package/src/headers/18/crypto/crypto_dh.h +156 -0
  62. package/src/headers/18/crypto/crypto_dsa.h +77 -0
  63. package/src/headers/18/crypto/crypto_ec.h +170 -0
  64. package/src/headers/{12/node_crypto_groups.h → 18/crypto/crypto_groups.h} +3 -3
  65. package/src/headers/18/crypto/crypto_hash.h +89 -0
  66. package/src/headers/18/crypto/crypto_hkdf.h +65 -0
  67. package/src/headers/18/crypto/crypto_hmac.h +94 -0
  68. package/src/headers/18/crypto/crypto_keygen.h +305 -0
  69. package/src/headers/18/crypto/crypto_keys.h +420 -0
  70. package/src/headers/18/crypto/crypto_pbkdf2.h +76 -0
  71. package/src/headers/18/crypto/crypto_random.h +130 -0
  72. package/src/headers/18/crypto/crypto_rsa.h +141 -0
  73. package/src/headers/18/crypto/crypto_scrypt.h +87 -0
  74. package/src/headers/18/crypto/crypto_sig.h +168 -0
  75. package/src/headers/18/crypto/crypto_spkac.h +21 -0
  76. package/src/headers/18/crypto/crypto_timing.h +20 -0
  77. package/src/headers/{12/tls_wrap.h → 18/crypto/crypto_tls.h} +137 -66
  78. package/src/headers/18/crypto/crypto_util.h +791 -0
  79. package/src/headers/18/crypto/crypto_x509.h +143 -0
  80. package/src/headers/{12 → 18}/debug_utils-inl.h +0 -0
  81. package/src/headers/{13 → 18}/debug_utils.h +7 -4
  82. package/src/headers/{12 → 18}/diagnosticfilename-inl.h +0 -0
  83. package/src/headers/{12 → 18}/env-inl.h +397 -304
  84. package/src/headers/{12 → 18}/env.h +397 -172
  85. package/src/headers/{12 → 18}/handle_wrap.h +7 -3
  86. package/src/headers/18/histogram-inl.h +107 -0
  87. package/src/headers/18/histogram.h +239 -0
  88. package/src/headers/{13 → 18}/inspector_agent.h +4 -7
  89. package/src/headers/{12 → 18}/inspector_io.h +0 -0
  90. package/src/headers/{13 → 18}/inspector_profiler.h +17 -5
  91. package/src/headers/{12 → 18}/inspector_socket.h +0 -0
  92. package/src/headers/{12 → 18}/inspector_socket_server.h +0 -0
  93. package/src/headers/18/js_native_api.h +571 -0
  94. package/src/headers/{13 → 18}/js_native_api_types.h +30 -7
  95. package/src/headers/{12 → 18}/js_native_api_v8.h +220 -83
  96. package/src/headers/{12 → 18}/js_native_api_v8_internals.h +6 -5
  97. package/src/headers/{12 → 18}/js_stream.h +0 -0
  98. package/src/headers/{12 → 18}/json_utils.h +0 -0
  99. package/src/headers/{13 → 18}/memory_tracker-inl.h +6 -5
  100. package/src/headers/{13 → 18}/memory_tracker.h +0 -7
  101. package/src/headers/{13 → 18}/module_wrap.h +24 -7
  102. package/src/headers/{13 → 18}/node.h +329 -68
  103. package/src/headers/18/node_api.h +288 -0
  104. package/src/headers/18/node_api_internals.h +38 -0
  105. package/src/headers/{12 → 18}/node_api_types.h +12 -9
  106. package/src/headers/{12 → 18}/node_binding.h +0 -0
  107. package/src/headers/18/node_blob.h +191 -0
  108. package/src/headers/18/node_bob-inl.h +37 -0
  109. package/src/headers/18/node_bob.h +111 -0
  110. package/src/headers/{13 → 18}/node_buffer.h +0 -0
  111. package/src/headers/{13 → 18}/node_constants.h +5 -1
  112. package/src/headers/{12 → 18}/node_context_data.h +5 -0
  113. package/src/headers/{12 → 18}/node_contextify.h +37 -2
  114. package/src/headers/{10/node_javascript.h → 18/node_crypto.h} +30 -14
  115. package/src/headers/{12 → 18}/node_dir.h +0 -0
  116. package/src/headers/{12 → 18}/node_dtrace.h +0 -0
  117. package/src/headers/{12 → 18}/node_errors.h +90 -24
  118. package/src/headers/18/node_external_reference.h +145 -0
  119. package/src/headers/{13 → 18}/node_file-inl.h +38 -21
  120. package/src/headers/{12 → 18}/node_file.h +74 -13
  121. package/src/headers/{13 → 18}/node_http2.h +365 -269
  122. package/src/headers/{12 → 18}/node_http2_state.h +40 -50
  123. package/src/headers/{13 → 18}/node_http_common-inl.h +25 -5
  124. package/src/headers/{13 → 18}/node_http_common.h +24 -20
  125. package/src/headers/{13 → 18}/node_i18n.h +2 -1
  126. package/src/headers/{12 → 18}/node_internals.h +39 -41
  127. package/src/headers/{12 → 18}/node_main_instance.h +15 -18
  128. package/src/headers/{12 → 18}/node_mem-inl.h +0 -0
  129. package/src/headers/{12 → 18}/node_mem.h +1 -1
  130. package/src/headers/{13 → 18}/node_messaging.h +170 -23
  131. package/src/headers/{12 → 18}/node_metadata.h +17 -4
  132. package/src/headers/{12 → 18}/node_mutex.h +77 -1
  133. package/src/headers/{12 → 18}/node_native_module.h +11 -1
  134. package/src/headers/{12 → 18}/node_native_module_env.h +14 -8
  135. package/src/headers/{12 → 18}/node_object_wrap.h +0 -0
  136. package/src/headers/{13 → 18}/node_options-inl.h +51 -21
  137. package/src/headers/{13 → 18}/node_options.h +46 -14
  138. package/src/headers/18/node_perf.h +168 -0
  139. package/src/headers/{12 → 18}/node_perf_common.h +16 -22
  140. package/src/headers/{12 → 18}/node_platform.h +21 -16
  141. package/src/headers/18/node_process-inl.h +26 -0
  142. package/src/headers/18/node_process.h +97 -0
  143. package/src/headers/{13 → 18}/node_report.h +2 -2
  144. package/src/headers/{13 → 18}/node_revert.h +10 -0
  145. package/src/headers/{12 → 18}/node_root_certs.h +439 -651
  146. package/src/headers/18/node_snapshot_builder.h +43 -0
  147. package/src/headers/18/node_snapshotable.h +130 -0
  148. package/src/headers/{12 → 18}/node_sockaddr-inl.h +100 -4
  149. package/src/headers/18/node_sockaddr.h +405 -0
  150. package/src/headers/{13 → 18}/node_stat_watcher.h +7 -1
  151. package/src/headers/{12 → 18}/node_union_bytes.h +0 -0
  152. package/src/headers/{13 → 18}/node_url.h +18 -1
  153. package/src/headers/18/node_v8.h +41 -0
  154. package/src/headers/{12 → 18}/node_v8_platform-inl.h +10 -0
  155. package/src/headers/{13 → 18}/node_version.h +7 -7
  156. package/src/headers/{12 → 18}/node_wasi.h +0 -0
  157. package/src/headers/18/node_wasm_web_api.h +55 -0
  158. package/src/headers/{13 → 18}/node_watchdog.h +0 -0
  159. package/src/headers/{10 → 18}/node_win32_etw_provider-inl.h +7 -6
  160. package/src/headers/{10 → 18}/node_win32_etw_provider.h +0 -0
  161. package/src/headers/{13 → 18}/node_worker.h +24 -17
  162. package/src/headers/{12 → 18}/pipe_wrap.h +2 -0
  163. package/src/headers/{12 → 18}/req_wrap-inl.h +0 -0
  164. package/src/headers/{13 → 18}/req_wrap.h +1 -1
  165. package/src/headers/{12 → 18}/spawn_sync.h +0 -0
  166. package/src/headers/{13 → 18}/stream_base-inl.h +58 -22
  167. package/src/headers/{13 → 18}/stream_base.h +29 -3
  168. package/src/headers/{13 → 18}/stream_pipe.h +8 -3
  169. package/src/headers/{12 → 18}/stream_wrap.h +4 -1
  170. package/src/headers/{13 → 18}/string_bytes.h +0 -7
  171. package/src/headers/{12 → 18}/string_decoder-inl.h +0 -0
  172. package/src/headers/{10 → 18}/string_decoder.h +0 -0
  173. package/src/headers/{13 → 18}/string_search.h +2 -2
  174. package/src/headers/{12 → 18}/tcp_wrap.h +4 -0
  175. package/src/headers/{12 → 18}/threadpoolwork-inl.h +0 -0
  176. package/src/headers/18/timer_wrap-inl.h +32 -0
  177. package/src/headers/18/timer_wrap.h +85 -0
  178. package/src/headers/{13 → 18}/tracing/agent.h +1 -1
  179. package/src/headers/{12 → 18}/tracing/node_trace_buffer.h +0 -0
  180. package/src/headers/{12 → 18}/tracing/node_trace_writer.h +0 -0
  181. package/src/headers/{13 → 18}/tracing/trace_event.h +23 -13
  182. package/src/headers/{12 → 18}/tracing/trace_event_common.h +0 -0
  183. package/src/headers/{12 → 18}/tracing/traced_value.h +0 -0
  184. package/src/headers/{13 → 18}/tty_wrap.h +2 -1
  185. package/src/headers/{13 → 18}/udp_wrap.h +5 -0
  186. package/src/headers/{13 → 18}/util-inl.h +69 -15
  187. package/src/headers/{13 → 18}/util.h +93 -31
  188. package/src/headers/18/v8-fast-api-calls.h +939 -0
  189. package/src/headers/{12 → 18}/v8abbr.h +2 -2
  190. package/dist/bindings/cws_darwin_64.node +0 -0
  191. package/dist/bindings/cws_darwin_72.node +0 -0
  192. package/dist/bindings/cws_darwin_79.node +0 -0
  193. package/dist/bindings/cws_darwin_83.node +0 -0
  194. package/dist/bindings/cws_darwin_93.node +0 -0
  195. package/dist/bindings/cws_linux_64.node +0 -0
  196. package/dist/bindings/cws_linux_72.node +0 -0
  197. package/dist/bindings/cws_linux_79.node +0 -0
  198. package/dist/bindings/cws_linux_83.node +0 -0
  199. package/dist/bindings/cws_linux_93.node +0 -0
  200. package/dist/bindings/cws_win32_64.node +0 -0
  201. package/dist/bindings/cws_win32_72.node +0 -0
  202. package/dist/bindings/cws_win32_79.node +0 -0
  203. package/dist/bindings/cws_win32_83.node +0 -0
  204. package/dist/bindings/cws_win32_93.node +0 -0
  205. package/src/headers/10/aliased_buffer.h +0 -241
  206. package/src/headers/10/async_wrap-inl.h +0 -106
  207. package/src/headers/10/async_wrap.h +0 -218
  208. package/src/headers/10/base64.h +0 -197
  209. package/src/headers/10/base_object-inl.h +0 -132
  210. package/src/headers/10/base_object.h +0 -115
  211. package/src/headers/10/connect_wrap.h +0 -28
  212. package/src/headers/10/connection_wrap.h +0 -30
  213. package/src/headers/10/debug_utils.h +0 -128
  214. package/src/headers/10/env-inl.h +0 -906
  215. package/src/headers/10/env.h +0 -1046
  216. package/src/headers/10/handle_wrap.h +0 -114
  217. package/src/headers/10/inspector_agent.h +0 -137
  218. package/src/headers/10/inspector_io.h +0 -97
  219. package/src/headers/10/inspector_socket.h +0 -59
  220. package/src/headers/10/inspector_socket_server.h +0 -104
  221. package/src/headers/10/js_stream.h +0 -57
  222. package/src/headers/10/memory_tracker-inl.h +0 -318
  223. package/src/headers/10/memory_tracker.h +0 -246
  224. package/src/headers/10/module_wrap.h +0 -100
  225. package/src/headers/10/node.h +0 -863
  226. package/src/headers/10/node_api.h +0 -752
  227. package/src/headers/10/node_api_types.h +0 -171
  228. package/src/headers/10/node_buffer.h +0 -90
  229. package/src/headers/10/node_code_cache.h +0 -17
  230. package/src/headers/10/node_constants.h +0 -74
  231. package/src/headers/10/node_context_data.h +0 -39
  232. package/src/headers/10/node_contextify.h +0 -141
  233. package/src/headers/10/node_counters.h +0 -59
  234. package/src/headers/10/node_crypto.h +0 -699
  235. package/src/headers/10/node_crypto_bio.h +0 -177
  236. package/src/headers/10/node_crypto_clienthello-inl.h +0 -92
  237. package/src/headers/10/node_crypto_clienthello.h +0 -131
  238. package/src/headers/10/node_crypto_groups.h +0 -416
  239. package/src/headers/10/node_dtrace.h +0 -84
  240. package/src/headers/10/node_errors.h +0 -118
  241. package/src/headers/10/node_file.h +0 -373
  242. package/src/headers/10/node_http2.h +0 -1304
  243. package/src/headers/10/node_http2_state.h +0 -158
  244. package/src/headers/10/node_i18n.h +0 -69
  245. package/src/headers/10/node_internals.h +0 -952
  246. package/src/headers/10/node_messaging.h +0 -219
  247. package/src/headers/10/node_mutex.h +0 -191
  248. package/src/headers/10/node_object_wrap.h +0 -130
  249. package/src/headers/10/node_options-inl.h +0 -444
  250. package/src/headers/10/node_options.h +0 -397
  251. package/src/headers/10/node_perf.h +0 -134
  252. package/src/headers/10/node_perf_common.h +0 -96
  253. package/src/headers/10/node_persistent.h +0 -30
  254. package/src/headers/10/node_platform.h +0 -170
  255. package/src/headers/10/node_revert.h +0 -75
  256. package/src/headers/10/node_root_certs.h +0 -3393
  257. package/src/headers/10/node_stat_watcher.h +0 -65
  258. package/src/headers/10/node_url.h +0 -193
  259. package/src/headers/10/node_version.h +0 -120
  260. package/src/headers/10/node_watchdog.h +0 -114
  261. package/src/headers/10/node_win32_perfctr_provider.h +0 -58
  262. package/src/headers/10/node_worker.h +0 -94
  263. package/src/headers/10/pipe_wrap.h +0 -76
  264. package/src/headers/10/req_wrap-inl.h +0 -166
  265. package/src/headers/10/req_wrap.h +0 -61
  266. package/src/headers/10/sharedarraybuffer_metadata.h +0 -67
  267. package/src/headers/10/spawn_sync.h +0 -240
  268. package/src/headers/10/stream_base-inl.h +0 -458
  269. package/src/headers/10/stream_base.h +0 -378
  270. package/src/headers/10/stream_pipe.h +0 -72
  271. package/src/headers/10/stream_wrap.h +0 -130
  272. package/src/headers/10/string_bytes.h +0 -126
  273. package/src/headers/10/string_decoder-inl.h +0 -38
  274. package/src/headers/10/string_search.h +0 -620
  275. package/src/headers/10/tcp_wrap.h +0 -99
  276. package/src/headers/10/tls_wrap.h +0 -195
  277. package/src/headers/10/tracing/agent.h +0 -178
  278. package/src/headers/10/tracing/node_trace_buffer.h +0 -83
  279. package/src/headers/10/tracing/node_trace_writer.h +0 -75
  280. package/src/headers/10/tracing/trace_event.h +0 -706
  281. package/src/headers/10/tracing/trace_event_common.h +0 -1102
  282. package/src/headers/10/tracing/traced_value.h +0 -68
  283. package/src/headers/10/tty_wrap.h +0 -63
  284. package/src/headers/10/udp_wrap.h +0 -102
  285. package/src/headers/10/util-inl.h +0 -459
  286. package/src/headers/10/util.h +0 -508
  287. package/src/headers/10/v8abbr.h +0 -121
  288. package/src/headers/12/aliased_buffer.h +0 -263
  289. package/src/headers/12/debug_utils.h +0 -181
  290. package/src/headers/12/histogram-inl.h +0 -83
  291. package/src/headers/12/histogram.h +0 -98
  292. package/src/headers/12/http_parser_adaptor.h +0 -24
  293. package/src/headers/12/inspector_agent.h +0 -147
  294. package/src/headers/12/inspector_profiler.h +0 -137
  295. package/src/headers/12/js_native_api.h +0 -541
  296. package/src/headers/12/js_native_api_types.h +0 -139
  297. package/src/headers/12/memory_tracker-inl.h +0 -339
  298. package/src/headers/12/memory_tracker.h +0 -283
  299. package/src/headers/12/module_wrap.h +0 -99
  300. package/src/headers/12/node.h +0 -887
  301. package/src/headers/12/node_api.h +0 -239
  302. package/src/headers/12/node_buffer.h +0 -92
  303. package/src/headers/12/node_constants.h +0 -80
  304. package/src/headers/12/node_crypto.h +0 -800
  305. package/src/headers/12/node_crypto_bio.h +0 -195
  306. package/src/headers/12/node_crypto_clienthello-inl.h +0 -91
  307. package/src/headers/12/node_crypto_clienthello.h +0 -132
  308. package/src/headers/12/node_file-inl.h +0 -289
  309. package/src/headers/12/node_http2.h +0 -1311
  310. package/src/headers/12/node_http_parser_impl.h +0 -994
  311. package/src/headers/12/node_i18n.h +0 -144
  312. package/src/headers/12/node_messaging.h +0 -227
  313. package/src/headers/12/node_options-inl.h +0 -447
  314. package/src/headers/12/node_options.h +0 -479
  315. package/src/headers/12/node_perf.h +0 -181
  316. package/src/headers/12/node_process.h +0 -41
  317. package/src/headers/12/node_report.h +0 -47
  318. package/src/headers/12/node_revert.h +0 -78
  319. package/src/headers/12/node_sockaddr.h +0 -123
  320. package/src/headers/12/node_stat_watcher.h +0 -66
  321. package/src/headers/12/node_url.h +0 -188
  322. package/src/headers/12/node_version.h +0 -98
  323. package/src/headers/12/node_watchdog.h +0 -152
  324. package/src/headers/12/node_win32_etw_provider-inl.h +0 -287
  325. package/src/headers/12/node_win32_etw_provider.h +0 -99
  326. package/src/headers/12/node_worker.h +0 -142
  327. package/src/headers/12/req_wrap.h +0 -77
  328. package/src/headers/12/sharedarraybuffer_metadata.h +0 -72
  329. package/src/headers/12/stream_base-inl.h +0 -323
  330. package/src/headers/12/stream_base.h +0 -431
  331. package/src/headers/12/stream_pipe.h +0 -72
  332. package/src/headers/12/string_bytes.h +0 -142
  333. package/src/headers/12/string_decoder.h +0 -50
  334. package/src/headers/12/string_search.h +0 -638
  335. package/src/headers/12/tracing/agent.h +0 -195
  336. package/src/headers/12/tracing/trace_event.h +0 -710
  337. package/src/headers/12/tty_wrap.h +0 -64
  338. package/src/headers/12/udp_wrap.h +0 -222
  339. package/src/headers/12/util-inl.h +0 -529
  340. package/src/headers/12/util.h +0 -765
  341. package/src/headers/13/async_wrap-inl.h +0 -94
  342. package/src/headers/13/async_wrap.h +0 -224
  343. package/src/headers/13/base64.h +0 -197
  344. package/src/headers/13/base_object-inl.h +0 -353
  345. package/src/headers/13/base_object.h +0 -229
  346. package/src/headers/13/connect_wrap.h +0 -26
  347. package/src/headers/13/connection_wrap.h +0 -30
  348. package/src/headers/13/debug_utils-inl.h +0 -223
  349. package/src/headers/13/diagnosticfilename-inl.h +0 -33
  350. package/src/headers/13/env-inl.h +0 -1293
  351. package/src/headers/13/env.h +0 -1469
  352. package/src/headers/13/handle_wrap.h +0 -117
  353. package/src/headers/13/histogram-inl.h +0 -83
  354. package/src/headers/13/histogram.h +0 -98
  355. package/src/headers/13/inspector_io.h +0 -78
  356. package/src/headers/13/inspector_socket.h +0 -60
  357. package/src/headers/13/inspector_socket_server.h +0 -110
  358. package/src/headers/13/js_native_api.h +0 -541
  359. package/src/headers/13/js_native_api_v8.h +0 -303
  360. package/src/headers/13/js_native_api_v8_internals.h +0 -38
  361. package/src/headers/13/js_stream.h +0 -52
  362. package/src/headers/13/json_utils.h +0 -160
  363. package/src/headers/13/node_api.h +0 -239
  364. package/src/headers/13/node_api_types.h +0 -44
  365. package/src/headers/13/node_binding.h +0 -99
  366. package/src/headers/13/node_context_data.h +0 -39
  367. package/src/headers/13/node_contextify.h +0 -161
  368. package/src/headers/13/node_crypto.h +0 -800
  369. package/src/headers/13/node_crypto_common.h +0 -138
  370. package/src/headers/13/node_crypto_groups.h +0 -415
  371. package/src/headers/13/node_dir.h +0 -52
  372. package/src/headers/13/node_dtrace.h +0 -86
  373. package/src/headers/13/node_errors.h +0 -210
  374. package/src/headers/13/node_file.h +0 -364
  375. package/src/headers/13/node_http2_state.h +0 -144
  376. package/src/headers/13/node_internals.h +0 -405
  377. package/src/headers/13/node_main_instance.h +0 -97
  378. package/src/headers/13/node_mem-inl.h +0 -112
  379. package/src/headers/13/node_mem.h +0 -41
  380. package/src/headers/13/node_metadata.h +0 -109
  381. package/src/headers/13/node_mutex.h +0 -247
  382. package/src/headers/13/node_native_module.h +0 -99
  383. package/src/headers/13/node_native_module_env.h +0 -65
  384. package/src/headers/13/node_object_wrap.h +0 -132
  385. package/src/headers/13/node_perf.h +0 -181
  386. package/src/headers/13/node_perf_common.h +0 -97
  387. package/src/headers/13/node_platform.h +0 -190
  388. package/src/headers/13/node_process.h +0 -41
  389. package/src/headers/13/node_root_certs.h +0 -3424
  390. package/src/headers/13/node_sockaddr-inl.h +0 -170
  391. package/src/headers/13/node_sockaddr.h +0 -123
  392. package/src/headers/13/node_union_bytes.h +0 -103
  393. package/src/headers/13/node_v8_platform-inl.h +0 -184
  394. package/src/headers/13/node_wasi.h +0 -108
  395. package/src/headers/13/node_win32_etw_provider-inl.h +0 -287
  396. package/src/headers/13/node_win32_etw_provider.h +0 -99
  397. package/src/headers/13/pipe_wrap.h +0 -78
  398. package/src/headers/13/req_wrap-inl.h +0 -170
  399. package/src/headers/13/spawn_sync.h +0 -242
  400. package/src/headers/13/stream_wrap.h +0 -130
  401. package/src/headers/13/string_decoder-inl.h +0 -37
  402. package/src/headers/13/string_decoder.h +0 -50
  403. package/src/headers/13/tcp_wrap.h +0 -101
  404. package/src/headers/13/threadpoolwork-inl.h +0 -57
  405. package/src/headers/13/tls_wrap.h +0 -221
  406. package/src/headers/13/tracing/node_trace_buffer.h +0 -83
  407. package/src/headers/13/tracing/node_trace_writer.h +0 -75
  408. package/src/headers/13/tracing/trace_event_common.h +0 -1109
  409. package/src/headers/13/tracing/traced_value.h +0 -70
  410. package/src/headers/13/v8abbr.h +0 -124
@@ -23,12 +23,14 @@ template <typename Options>
23
23
  void OptionsParser<Options>::AddOption(const char* name,
24
24
  const char* help_text,
25
25
  bool Options::* field,
26
- OptionEnvvarSettings env_setting) {
26
+ OptionEnvvarSettings env_setting,
27
+ bool default_is_true) {
27
28
  options_.emplace(name,
28
29
  OptionInfo{kBoolean,
29
30
  std::make_shared<SimpleOptionField<bool>>(field),
30
31
  env_setting,
31
- help_text});
32
+ help_text,
33
+ default_is_true});
32
34
  }
33
35
 
34
36
  template <typename Options>
@@ -138,10 +140,9 @@ void OptionsParser<Options>::Implies(const char* from,
138
140
  const char* to) {
139
141
  auto it = options_.find(to);
140
142
  CHECK_NE(it, options_.end());
141
- CHECK_EQ(it->second.type, kBoolean);
142
- implications_.emplace(from, Implication {
143
- it->second.field, true
144
- });
143
+ CHECK(it->second.type == kBoolean || it->second.type == kV8Option);
144
+ implications_.emplace(
145
+ from, Implication{it->second.type, to, it->second.field, true});
145
146
  }
146
147
 
147
148
  template <typename Options>
@@ -150,9 +151,8 @@ void OptionsParser<Options>::ImpliesNot(const char* from,
150
151
  auto it = options_.find(to);
151
152
  CHECK_NE(it, options_.end());
152
153
  CHECK_EQ(it->second.type, kBoolean);
153
- implications_.emplace(from, Implication {
154
- it->second.field, false
155
- });
154
+ implications_.emplace(
155
+ from, Implication{it->second.type, to, it->second.field, false});
156
156
  }
157
157
 
158
158
  template <typename Options>
@@ -188,7 +188,8 @@ auto OptionsParser<Options>::Convert(
188
188
  return OptionInfo{original.type,
189
189
  Convert(original.field, get_child),
190
190
  original.env_setting,
191
- original.help_text};
191
+ original.help_text,
192
+ original.default_is_true};
192
193
  }
193
194
 
194
195
  template <typename Options>
@@ -196,9 +197,11 @@ template <typename ChildOptions>
196
197
  auto OptionsParser<Options>::Convert(
197
198
  typename OptionsParser<ChildOptions>::Implication original,
198
199
  ChildOptions* (Options::* get_child)()) {
199
- return Implication {
200
- Convert(original.target_field, get_child),
201
- original.target_value
200
+ return Implication{
201
+ original.type,
202
+ original.name,
203
+ Convert(original.target_field, get_child),
204
+ original.target_value,
202
205
  };
203
206
  }
204
207
 
@@ -225,6 +228,10 @@ inline std::string RequiresArgumentErr(const std::string& arg) {
225
228
  return arg + " requires an argument";
226
229
  }
227
230
 
231
+ inline std::string NegationImpliesBooleanError(const std::string& arg) {
232
+ return arg + " is an invalid negation because it is not a boolean option";
233
+ }
234
+
228
235
  // We store some of the basic information around a single Parse call inside
229
236
  // this struct, to separate storage of command line arguments and their
230
237
  // handling. In particular, this makes it easier to introduce 'synthetic'
@@ -325,6 +332,13 @@ void OptionsParser<Options>::Parse(
325
332
  name[i] = '-';
326
333
  }
327
334
 
335
+ // Convert --no-foo to --foo and keep in mind that we're negating.
336
+ bool is_negation = false;
337
+ if (name.find("--no-") == 0) {
338
+ name.erase(2, 3); // remove no-
339
+ is_negation = true;
340
+ }
341
+
328
342
  {
329
343
  auto it = aliases_.end();
330
344
  // Expand aliases:
@@ -366,20 +380,36 @@ void OptionsParser<Options>::Parse(
366
380
  break;
367
381
  }
368
382
 
383
+ {
384
+ std::string implied_name = name;
385
+ if (is_negation) {
386
+ // Implications for negated options are defined with "--no-".
387
+ implied_name.insert(2, "no-");
388
+ }
389
+ auto implications = implications_.equal_range(implied_name);
390
+ for (auto it = implications.first; it != implications.second; ++it) {
391
+ if (it->second.type == kV8Option) {
392
+ v8_args->push_back(it->second.name);
393
+ } else {
394
+ *it->second.target_field->template Lookup<bool>(options) =
395
+ it->second.target_value;
396
+ }
397
+ }
398
+ }
399
+
369
400
  if (it == options_.end()) {
370
401
  v8_args->push_back(arg);
371
402
  continue;
372
403
  }
373
404
 
374
- {
375
- auto implications = implications_.equal_range(name);
376
- for (auto it = implications.first; it != implications.second; ++it) {
377
- *it->second.target_field->template Lookup<bool>(options) =
378
- it->second.target_value;
379
- }
405
+ const OptionInfo& info = it->second;
406
+
407
+ // Some V8 options can be negated and they are validated by V8 later.
408
+ if (is_negation && info.type != kBoolean && info.type != kV8Option) {
409
+ errors->push_back(NegationImpliesBooleanError(arg));
410
+ break;
380
411
  }
381
412
 
382
- const OptionInfo& info = it->second;
383
413
  std::string value;
384
414
  if (info.type != kBoolean && info.type != kNoOp && info.type != kV8Option) {
385
415
  if (equals_index != std::string::npos) {
@@ -408,7 +438,7 @@ void OptionsParser<Options>::Parse(
408
438
 
409
439
  switch (info.type) {
410
440
  case kBoolean:
411
- *Lookup<bool>(info.field, options) = true;
441
+ *Lookup<bool>(info.field, options) = !is_negation;
412
442
  break;
413
443
  case kInteger:
414
444
  *Lookup<int64_t>(info.field, options) = std::atoll(value.c_str());
@@ -11,6 +11,10 @@
11
11
  #include "node_mutex.h"
12
12
  #include "util.h"
13
13
 
14
+ #if HAVE_OPENSSL
15
+ #include "openssl/opensslv.h"
16
+ #endif
17
+
14
18
  namespace node {
15
19
 
16
20
  class HostPort {
@@ -100,26 +104,32 @@ class DebugOptions : public Options {
100
104
  class EnvironmentOptions : public Options {
101
105
  public:
102
106
  bool abort_on_uncaught_exception = false;
107
+ std::vector<std::string> conditions;
108
+ std::string dns_result_order;
103
109
  bool enable_source_maps = false;
104
- bool experimental_json_modules = false;
105
- bool experimental_modules = false;
110
+ bool experimental_fetch = true;
111
+ bool experimental_global_web_crypto = false;
112
+ bool experimental_https_modules = false;
106
113
  std::string experimental_specifier_resolution;
107
- std::string es_module_specifier_resolution;
108
114
  bool experimental_wasm_modules = false;
109
115
  bool experimental_import_meta_resolve = false;
110
116
  std::string module_type;
111
117
  std::string experimental_policy;
112
118
  std::string experimental_policy_integrity;
113
- bool has_policy_integrity_string;
114
- bool experimental_repl_await = false;
119
+ bool has_policy_integrity_string = false;
120
+ bool experimental_repl_await = true;
115
121
  bool experimental_vm_modules = false;
116
122
  bool expose_internals = false;
123
+ bool force_node_api_uncaught_exceptions_policy = false;
117
124
  bool frozen_intrinsics = false;
125
+ int64_t heap_snapshot_near_heap_limit = 0;
118
126
  std::string heap_snapshot_signal;
119
127
  uint64_t max_http_header_size = 16 * 1024;
120
- bool no_deprecation = false;
121
- bool no_force_async_hooks_checks = false;
122
- bool no_warnings = false;
128
+ bool deprecation = true;
129
+ bool force_async_hooks_checks = true;
130
+ bool allow_native_addons = true;
131
+ bool global_search_paths = true;
132
+ bool warnings = true;
123
133
  bool force_context_aware = false;
124
134
  bool pending_deprecation = false;
125
135
  bool preserve_symlinks = false;
@@ -138,16 +148,27 @@ class EnvironmentOptions : public Options {
138
148
  bool heap_prof = false;
139
149
  #endif // HAVE_INSPECTOR
140
150
  std::string redirect_warnings;
151
+ std::string diagnostic_dir;
152
+ bool test_runner = false;
153
+ bool test_only = false;
141
154
  bool test_udp_no_try_send = false;
142
155
  bool throw_deprecation = false;
156
+ bool trace_atomics_wait = false;
143
157
  bool trace_deprecation = false;
144
158
  bool trace_exit = false;
145
159
  bool trace_sync_io = false;
146
160
  bool trace_tls = false;
147
161
  bool trace_uncaught = false;
148
162
  bool trace_warnings = false;
163
+ bool extra_info_on_fatal_exception = true;
149
164
  std::string unhandled_rejections;
150
165
  std::string userland_loader;
166
+ bool verify_base_objects =
167
+ #ifdef DEBUG
168
+ true;
169
+ #else
170
+ false;
171
+ #endif // DEBUG
151
172
 
152
173
  bool syntax_check_only = false;
153
174
  bool has_eval_string = false;
@@ -183,7 +204,6 @@ class PerIsolateOptions : public Options {
183
204
  public:
184
205
  std::shared_ptr<EnvironmentOptions> per_env { new EnvironmentOptions() };
185
206
  bool track_heap_objects = false;
186
- bool no_node_snapshot = false;
187
207
  bool report_uncaught_exception = false;
188
208
  bool report_on_signal = false;
189
209
  std::string report_signal = "SIGUSR2";
@@ -210,6 +230,11 @@ class PerProcessOptions : public Options {
210
230
  bool zero_fill_all_buffers = false;
211
231
  bool debug_arraybuffer_allocations = false;
212
232
  std::string disable_proto;
233
+ bool build_snapshot = false;
234
+ // We enable the shared read-only heap which currently requires that the
235
+ // snapshot used in different isolates in the same process to be the same.
236
+ // Therefore --node-snapshot is a per-process option.
237
+ bool node_snapshot = true;
213
238
 
214
239
  std::vector<std::string> security_reverts;
215
240
  bool print_bash_completion = false;
@@ -222,10 +247,12 @@ class PerProcessOptions : public Options {
222
247
  #endif
223
248
 
224
249
  // Per-process because they affect singleton OpenSSL shared library state,
225
- // or are used once during process intialization.
250
+ // or are used once during process initialization.
226
251
  #if HAVE_OPENSSL
227
252
  std::string openssl_config;
228
253
  std::string tls_cipher_list = DEFAULT_CIPHER_LIST_CORE;
254
+ int64_t secure_heap = 0;
255
+ int64_t secure_heap_min = 2;
229
256
  #ifdef NODE_OPENSSL_CERT_STORE
230
257
  bool ssl_openssl_cert_store = true;
231
258
  #else
@@ -233,10 +260,11 @@ class PerProcessOptions : public Options {
233
260
  #endif
234
261
  bool use_openssl_ca = false;
235
262
  bool use_bundled_ca = false;
236
- #if NODE_FIPS_MODE
237
263
  bool enable_fips_crypto = false;
238
264
  bool force_fips_crypto = false;
239
265
  #endif
266
+ #if OPENSSL_VERSION_MAJOR >= 3
267
+ bool openssl_legacy_provider = false;
240
268
  #endif
241
269
 
242
270
  // Per-process because reports can be triggered outside a known V8 context.
@@ -290,7 +318,8 @@ class OptionsParser {
290
318
  void AddOption(const char* name,
291
319
  const char* help_text,
292
320
  bool Options::* field,
293
- OptionEnvvarSettings env_setting = kDisallowedInEnvironment);
321
+ OptionEnvvarSettings env_setting = kDisallowedInEnvironment,
322
+ bool default_is_true = false);
294
323
  void AddOption(const char* name,
295
324
  const char* help_text,
296
325
  uint64_t Options::* field,
@@ -413,11 +442,14 @@ class OptionsParser {
413
442
  std::shared_ptr<BaseOptionField> field;
414
443
  OptionEnvvarSettings env_setting;
415
444
  std::string help_text;
445
+ bool default_is_true = false;
416
446
  };
417
447
 
418
448
  // An implied option is composed of the information on where to store a
419
449
  // specific boolean value (if another specific option is encountered).
420
450
  struct Implication {
451
+ OptionType type;
452
+ std::string name;
421
453
  std::shared_ptr<BaseOptionField> target_field;
422
454
  bool target_value;
423
455
  };
@@ -444,7 +476,7 @@ class OptionsParser {
444
476
  template <typename OtherOptions>
445
477
  friend class OptionsParser;
446
478
 
447
- friend void GetOptions(const v8::FunctionCallbackInfo<v8::Value>& args);
479
+ friend void GetCLIOptions(const v8::FunctionCallbackInfo<v8::Value>& args);
448
480
  friend std::string GetBashCompletion();
449
481
  };
450
482
 
@@ -460,7 +492,7 @@ void Parse(
460
492
  namespace per_process {
461
493
 
462
494
  extern Mutex cli_options_mutex;
463
- extern std::shared_ptr<PerProcessOptions> cli_options;
495
+ extern NODE_EXTERN_PRIVATE std::shared_ptr<PerProcessOptions> cli_options;
464
496
 
465
497
  } // namespace per_process
466
498
 
@@ -0,0 +1,168 @@
1
+ #ifndef SRC_NODE_PERF_H_
2
+ #define SRC_NODE_PERF_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "base_object-inl.h"
7
+ #include "histogram.h"
8
+ #include "node.h"
9
+ #include "node_internals.h"
10
+ #include "node_perf_common.h"
11
+
12
+ #include "v8.h"
13
+ #include "uv.h"
14
+
15
+ #include <string>
16
+
17
+ namespace node {
18
+
19
+ class Environment;
20
+ class ExternalReferenceRegistry;
21
+
22
+ namespace performance {
23
+
24
+ extern const uint64_t timeOrigin;
25
+
26
+ inline const char* GetPerformanceMilestoneName(
27
+ PerformanceMilestone milestone) {
28
+ switch (milestone) {
29
+ #define V(name, label) case NODE_PERFORMANCE_MILESTONE_##name: return label;
30
+ NODE_PERFORMANCE_MILESTONES(V)
31
+ #undef V
32
+ default:
33
+ UNREACHABLE();
34
+ }
35
+ }
36
+
37
+ inline PerformanceMilestone ToPerformanceMilestoneEnum(const char* str) {
38
+ #define V(name, label) \
39
+ if (strcmp(str, label) == 0) return NODE_PERFORMANCE_MILESTONE_##name;
40
+ NODE_PERFORMANCE_MILESTONES(V)
41
+ #undef V
42
+ return NODE_PERFORMANCE_MILESTONE_INVALID;
43
+ }
44
+
45
+ inline const char* GetPerformanceEntryTypeName(
46
+ PerformanceEntryType type) {
47
+ switch (type) {
48
+ #define V(name, label) case NODE_PERFORMANCE_ENTRY_TYPE_##name: return label;
49
+ NODE_PERFORMANCE_ENTRY_TYPES(V)
50
+ #undef V
51
+ default:
52
+ UNREACHABLE();
53
+ }
54
+ }
55
+
56
+ inline PerformanceEntryType ToPerformanceEntryTypeEnum(
57
+ const char* type) {
58
+ #define V(name, label) \
59
+ if (strcmp(type, label) == 0) return NODE_PERFORMANCE_ENTRY_TYPE_##name;
60
+ NODE_PERFORMANCE_ENTRY_TYPES(V)
61
+ #undef V
62
+ return NODE_PERFORMANCE_ENTRY_TYPE_INVALID;
63
+ }
64
+
65
+ enum PerformanceGCKind {
66
+ NODE_PERFORMANCE_GC_MAJOR = v8::GCType::kGCTypeMarkSweepCompact,
67
+ NODE_PERFORMANCE_GC_MINOR = v8::GCType::kGCTypeScavenge,
68
+ NODE_PERFORMANCE_GC_INCREMENTAL = v8::GCType::kGCTypeIncrementalMarking,
69
+ NODE_PERFORMANCE_GC_WEAKCB = v8::GCType::kGCTypeProcessWeakCallbacks
70
+ };
71
+
72
+ enum PerformanceGCFlags {
73
+ NODE_PERFORMANCE_GC_FLAGS_NO =
74
+ v8::GCCallbackFlags::kNoGCCallbackFlags,
75
+ NODE_PERFORMANCE_GC_FLAGS_CONSTRUCT_RETAINED =
76
+ v8::GCCallbackFlags::kGCCallbackFlagConstructRetainedObjectInfos,
77
+ NODE_PERFORMANCE_GC_FLAGS_FORCED =
78
+ v8::GCCallbackFlags::kGCCallbackFlagForced,
79
+ NODE_PERFORMANCE_GC_FLAGS_SYNCHRONOUS_PHANTOM_PROCESSING =
80
+ v8::GCCallbackFlags::kGCCallbackFlagSynchronousPhantomCallbackProcessing,
81
+ NODE_PERFORMANCE_GC_FLAGS_ALL_AVAILABLE_GARBAGE =
82
+ v8::GCCallbackFlags::kGCCallbackFlagCollectAllAvailableGarbage,
83
+ NODE_PERFORMANCE_GC_FLAGS_ALL_EXTERNAL_MEMORY =
84
+ v8::GCCallbackFlags::kGCCallbackFlagCollectAllExternalMemory,
85
+ NODE_PERFORMANCE_GC_FLAGS_SCHEDULE_IDLE =
86
+ v8::GCCallbackFlags::kGCCallbackScheduleIdleGarbageCollection
87
+ };
88
+
89
+ template <typename Traits>
90
+ struct PerformanceEntry {
91
+ using Details = typename Traits::Details;
92
+ std::string name;
93
+ double start_time;
94
+ double duration;
95
+ Details details;
96
+
97
+ PerformanceEntry(
98
+ const std::string& name_,
99
+ double start_time_,
100
+ double duration_,
101
+ const Details& details_)
102
+ : name(name_),
103
+ start_time(start_time_),
104
+ duration(duration_),
105
+ details(details_) {}
106
+
107
+ static v8::MaybeLocal<v8::Object> GetDetails(
108
+ Environment* env,
109
+ const PerformanceEntry<Traits>& entry) {
110
+ return Traits::GetDetails(env, entry);
111
+ }
112
+
113
+ void Notify(Environment* env) {
114
+ v8::HandleScope handle_scope(env->isolate());
115
+ v8::Context::Scope scope(env->context());
116
+ AliasedUint32Array& observers = env->performance_state()->observers;
117
+ if (env->performance_entry_callback().IsEmpty() ||
118
+ !observers[Traits::kType]) {
119
+ return;
120
+ }
121
+
122
+ v8::Local<v8::Object> detail;
123
+ if (!Traits::GetDetails(env, *this).ToLocal(&detail)) {
124
+ // TODO(@jasnell): Handle the error here
125
+ return;
126
+ }
127
+
128
+ v8::Local<v8::Value> argv[] = {
129
+ OneByteString(env->isolate(), name.c_str()),
130
+ OneByteString(env->isolate(), GetPerformanceEntryTypeName(Traits::kType)),
131
+ v8::Number::New(env->isolate(), start_time),
132
+ v8::Number::New(env->isolate(), duration),
133
+ detail
134
+ };
135
+
136
+ node::MakeSyncCallback(
137
+ env->isolate(),
138
+ env->context()->Global(),
139
+ env->performance_entry_callback(),
140
+ arraysize(argv),
141
+ argv);
142
+ }
143
+ };
144
+
145
+ struct GCPerformanceEntryTraits {
146
+ static constexpr PerformanceEntryType kType =
147
+ NODE_PERFORMANCE_ENTRY_TYPE_GC;
148
+ struct Details {
149
+ PerformanceGCKind kind;
150
+ PerformanceGCFlags flags;
151
+
152
+ Details(PerformanceGCKind kind_, PerformanceGCFlags flags_)
153
+ : kind(kind_), flags(flags_) {}
154
+ };
155
+
156
+ static v8::MaybeLocal<v8::Object> GetDetails(
157
+ Environment* env,
158
+ const PerformanceEntry<GCPerformanceEntryTraits>& entry);
159
+ };
160
+
161
+ using GCPerformanceEntry = PerformanceEntry<GCPerformanceEntryTraits>;
162
+
163
+ } // namespace performance
164
+ } // namespace node
165
+
166
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
167
+
168
+ #endif // SRC_NODE_PERF_H_
@@ -3,11 +3,13 @@
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
+ #include "aliased_buffer.h"
6
7
  #include "node.h"
7
8
  #include "uv.h"
8
9
  #include "v8.h"
9
10
 
10
11
  #include <algorithm>
12
+ #include <iostream>
11
13
  #include <map>
12
14
  #include <string>
13
15
 
@@ -30,13 +32,11 @@ extern uint64_t performance_v8_start;
30
32
 
31
33
 
32
34
  #define NODE_PERFORMANCE_ENTRY_TYPES(V) \
33
- V(NODE, "node") \
34
- V(MARK, "mark") \
35
- V(MEASURE, "measure") \
36
35
  V(GC, "gc") \
37
- V(FUNCTION, "function") \
36
+ V(HTTP, "http") \
38
37
  V(HTTP2, "http2") \
39
- V(HTTP, "http")
38
+ V(NET, "net") \
39
+ V(DNS, "dns")
40
40
 
41
41
  enum PerformanceMilestone {
42
42
  #define V(name, _) NODE_PERFORMANCE_MILESTONE_##name,
@@ -54,23 +54,17 @@ enum PerformanceEntryType {
54
54
 
55
55
  class PerformanceState {
56
56
  public:
57
- explicit PerformanceState(v8::Isolate* isolate) :
58
- root(
59
- isolate,
60
- sizeof(performance_state_internal)),
61
- milestones(
62
- isolate,
63
- offsetof(performance_state_internal, milestones),
64
- NODE_PERFORMANCE_MILESTONE_INVALID,
65
- root),
66
- observers(
67
- isolate,
68
- offsetof(performance_state_internal, observers),
69
- NODE_PERFORMANCE_ENTRY_TYPE_INVALID,
70
- root) {
71
- for (size_t i = 0; i < milestones.Length(); i++)
72
- milestones[i] = -1.;
73
- }
57
+ struct SerializeInfo {
58
+ AliasedBufferIndex root;
59
+ AliasedBufferIndex milestones;
60
+ AliasedBufferIndex observers;
61
+ };
62
+
63
+ explicit PerformanceState(v8::Isolate* isolate, const SerializeInfo* info);
64
+ SerializeInfo Serialize(v8::Local<v8::Context> context,
65
+ v8::SnapshotCreator* creator);
66
+ void Deserialize(v8::Local<v8::Context> context);
67
+ friend std::ostream& operator<<(std::ostream& o, const SerializeInfo& i);
74
68
 
75
69
  AliasedUint8Array root;
76
70
  AliasedFloat64Array milestones;
@@ -11,7 +11,6 @@
11
11
  #include "libplatform/libplatform.h"
12
12
  #include "node.h"
13
13
  #include "node_mutex.h"
14
- #include "tracing/agent.h"
15
14
  #include "uv.h"
16
15
 
17
16
  namespace node {
@@ -52,12 +51,14 @@ struct DelayedTask {
52
51
 
53
52
  // This acts as the foreground task runner for a given Isolate.
54
53
  class PerIsolatePlatformData :
54
+ public IsolatePlatformDelegate,
55
55
  public v8::TaskRunner,
56
56
  public std::enable_shared_from_this<PerIsolatePlatformData> {
57
57
  public:
58
58
  PerIsolatePlatformData(v8::Isolate* isolate, uv_loop_t* loop);
59
59
  ~PerIsolatePlatformData() override;
60
60
 
61
+ std::shared_ptr<v8::TaskRunner> GetForegroundTaskRunner() override;
61
62
  void PostTask(std::unique_ptr<v8::Task> task) override;
62
63
  void PostIdleTask(std::unique_ptr<v8::IdleTask> task) override;
63
64
  void PostDelayedTask(std::unique_ptr<v8::Task> task,
@@ -137,8 +138,9 @@ class WorkerThreadsTaskRunner {
137
138
  class NodePlatform : public MultiIsolatePlatform {
138
139
  public:
139
140
  NodePlatform(int thread_pool_size,
140
- node::tracing::TracingController* tracing_controller);
141
- ~NodePlatform() override = default;
141
+ v8::TracingController* tracing_controller,
142
+ v8::PageAllocator* page_allocator = nullptr);
143
+ ~NodePlatform() override;
142
144
 
143
145
  void DrainTasks(v8::Isolate* isolate) override;
144
146
  void Shutdown();
@@ -148,21 +150,19 @@ class NodePlatform : public MultiIsolatePlatform {
148
150
  void CallOnWorkerThread(std::unique_ptr<v8::Task> task) override;
149
151
  void CallDelayedOnWorkerThread(std::unique_ptr<v8::Task> task,
150
152
  double delay_in_seconds) override;
151
- void CallOnForegroundThread(v8::Isolate* isolate, v8::Task* task) override {
152
- UNREACHABLE();
153
- }
154
- void CallDelayedOnForegroundThread(v8::Isolate* isolate,
155
- v8::Task* task,
156
- double delay_in_seconds) override {
157
- UNREACHABLE();
158
- }
159
153
  bool IdleTasksEnabled(v8::Isolate* isolate) override;
160
154
  double MonotonicallyIncreasingTime() override;
161
155
  double CurrentClockTimeMillis() override;
162
- node::tracing::TracingController* GetTracingController() override;
156
+ v8::TracingController* GetTracingController() override;
163
157
  bool FlushForegroundTasks(v8::Isolate* isolate) override;
158
+ std::unique_ptr<v8::JobHandle> PostJob(
159
+ v8::TaskPriority priority,
160
+ std::unique_ptr<v8::JobTask> job_task) override;
164
161
 
165
162
  void RegisterIsolate(v8::Isolate* isolate, uv_loop_t* loop) override;
163
+ void RegisterIsolate(v8::Isolate* isolate,
164
+ IsolatePlatformDelegate* delegate) override;
165
+
166
166
  void UnregisterIsolate(v8::Isolate* isolate) override;
167
167
  void AddIsolateFinishedCallback(v8::Isolate* isolate,
168
168
  void (*callback)(void*), void* data) override;
@@ -171,16 +171,21 @@ class NodePlatform : public MultiIsolatePlatform {
171
171
  v8::Isolate* isolate) override;
172
172
 
173
173
  Platform::StackTracePrinter GetStackTracePrinter() override;
174
+ v8::PageAllocator* GetPageAllocator() override;
174
175
 
175
176
  private:
176
- std::shared_ptr<PerIsolatePlatformData> ForIsolate(v8::Isolate* isolate);
177
+ IsolatePlatformDelegate* ForIsolate(v8::Isolate* isolate);
178
+ std::shared_ptr<PerIsolatePlatformData> ForNodeIsolate(v8::Isolate* isolate);
177
179
 
178
180
  Mutex per_isolate_mutex_;
179
- std::unordered_map<v8::Isolate*,
180
- std::shared_ptr<PerIsolatePlatformData>> per_isolate_;
181
+ using DelegatePair = std::pair<
182
+ IsolatePlatformDelegate*, std::shared_ptr<PerIsolatePlatformData>>;
183
+ std::unordered_map<v8::Isolate*, DelegatePair> per_isolate_;
181
184
 
182
- node::tracing::TracingController* tracing_controller_;
185
+ v8::TracingController* tracing_controller_;
186
+ v8::PageAllocator* page_allocator_;
183
187
  std::shared_ptr<WorkerThreadsTaskRunner> worker_thread_task_runner_;
188
+ bool has_shut_down_ = false;
184
189
  };
185
190
 
186
191
  } // namespace node
@@ -0,0 +1,26 @@
1
+ #ifndef SRC_NODE_PROCESS_INL_H_
2
+ #define SRC_NODE_PROCESS_INL_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "node_process.h"
7
+ #include "v8.h"
8
+ #include "debug_utils-inl.h"
9
+
10
+ namespace node {
11
+
12
+ // Call process.emitWarning(str), fmt is a snprintf() format string
13
+ template <typename... Args>
14
+ inline v8::Maybe<bool> ProcessEmitWarning(Environment* env,
15
+ const char* fmt,
16
+ Args&&... args) {
17
+ std::string warning = SPrintF(fmt, std::forward<Args>(args)...);
18
+
19
+ return ProcessEmitWarningGeneric(env, warning.c_str());
20
+ }
21
+
22
+ } // namespace node
23
+
24
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
25
+
26
+ #endif // SRC_NODE_PROCESS_INL_H_