@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
@@ -3,11 +3,14 @@
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
+ #include <optional>
6
7
  #include <unordered_map>
7
8
  #include "node_messaging.h"
8
9
  #include "uv.h"
9
10
 
10
11
  namespace node {
12
+
13
+ struct SnapshotData;
11
14
  namespace worker {
12
15
 
13
16
  class WorkerThreadData;
@@ -16,6 +19,7 @@ enum ResourceLimits {
16
19
  kMaxYoungGenerationSizeMb,
17
20
  kMaxOldGenerationSizeMb,
18
21
  kCodeRangeSizeMb,
22
+ kStackSizeMb,
19
23
  kTotalResourceLimitCount
20
24
  };
21
25
 
@@ -27,15 +31,19 @@ class Worker : public AsyncWrap {
27
31
  const std::string& url,
28
32
  std::shared_ptr<PerIsolateOptions> per_isolate_opts,
29
33
  std::vector<std::string>&& exec_argv,
30
- std::shared_ptr<KVStore> env_vars);
34
+ std::shared_ptr<KVStore> env_vars,
35
+ const SnapshotData* snapshot_data);
31
36
  ~Worker() override;
32
37
 
33
38
  // Run the worker. This is only called from the worker thread.
34
39
  void Run();
35
40
 
36
41
  // Forcibly exit the thread with a specified exit code. This may be called
37
- // from any thread.
38
- void Exit(int code);
42
+ // from any thread. `error_code` and `error_message` can be used to create
43
+ // a custom `'error'` event before emitting `'exit'`.
44
+ void Exit(int code,
45
+ const char* error_code = nullptr,
46
+ const char* error_message = nullptr);
39
47
 
40
48
  // Wait for the worker thread to stop (in a blocking manner).
41
49
  void JoinThread();
@@ -43,11 +51,13 @@ class Worker : public AsyncWrap {
43
51
  template <typename Fn>
44
52
  inline bool RequestInterrupt(Fn&& cb);
45
53
 
46
- void MemoryInfo(MemoryTracker* tracker) const override;
54
+ SET_NO_MEMORY_INFO()
47
55
  SET_MEMORY_INFO_NAME(Worker)
48
56
  SET_SELF_SIZE(Worker)
57
+ bool IsNotIndicativeOfMemoryLeakAtExit() const override;
49
58
 
50
59
  bool is_stopped() const;
60
+ const SnapshotData* snapshot_data() const { return snapshot_data_; }
51
61
 
52
62
  static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
53
63
  static void CloneParentEnvVars(
@@ -55,15 +65,18 @@ class Worker : public AsyncWrap {
55
65
  static void SetEnvVars(const v8::FunctionCallbackInfo<v8::Value>& args);
56
66
  static void StartThread(const v8::FunctionCallbackInfo<v8::Value>& args);
57
67
  static void StopThread(const v8::FunctionCallbackInfo<v8::Value>& args);
68
+ static void HasRef(const v8::FunctionCallbackInfo<v8::Value>& args);
58
69
  static void Ref(const v8::FunctionCallbackInfo<v8::Value>& args);
59
70
  static void Unref(const v8::FunctionCallbackInfo<v8::Value>& args);
60
71
  static void GetResourceLimits(
61
72
  const v8::FunctionCallbackInfo<v8::Value>& args);
62
73
  v8::Local<v8::Float64Array> GetResourceLimits(v8::Isolate* isolate) const;
63
74
  static void TakeHeapSnapshot(const v8::FunctionCallbackInfo<v8::Value>& args);
75
+ static void LoopIdleTime(const v8::FunctionCallbackInfo<v8::Value>& args);
76
+ static void LoopStartTime(const v8::FunctionCallbackInfo<v8::Value>& args);
64
77
 
65
78
  private:
66
- void CreateEnvMessagePort(Environment* env);
79
+ bool CreateEnvMessagePort(Environment* env);
67
80
  static size_t NearHeapLimit(void* data, size_t current_heap_limit,
68
81
  size_t initial_heap_limit);
69
82
 
@@ -73,21 +86,17 @@ class Worker : public AsyncWrap {
73
86
 
74
87
  MultiIsolatePlatform* platform_;
75
88
  v8::Isolate* isolate_ = nullptr;
76
- bool start_profiler_idle_notifier_;
77
- uv_thread_t tid_;
89
+ std::optional<uv_thread_t> tid_; // Set while the thread is running
78
90
 
79
- #if HAVE_INSPECTOR
80
- std::unique_ptr<inspector::ParentInspectorHandle> inspector_parent_handle_;
81
- #endif
91
+ std::unique_ptr<InspectorParentHandle> inspector_parent_handle_;
82
92
 
83
93
  // This mutex protects access to all variables listed below it.
84
94
  mutable Mutex mutex_;
85
95
 
86
- bool thread_joined_ = true;
87
96
  const char* custom_error_ = nullptr;
88
97
  std::string custom_error_str_;
89
98
  int exit_code_ = 0;
90
- uint64_t thread_id_ = -1;
99
+ ThreadId thread_id_;
91
100
  uintptr_t stack_base_ = 0;
92
101
 
93
102
  // Custom resource constraints:
@@ -95,17 +104,13 @@ class Worker : public AsyncWrap {
95
104
  void UpdateResourceConstraints(v8::ResourceConstraints* constraints);
96
105
 
97
106
  // Full size of the thread's stack.
98
- static constexpr size_t kStackSize = 4 * 1024 * 1024;
107
+ size_t stack_size_ = 4 * 1024 * 1024;
99
108
  // Stack buffer size that is not available to the JS engine.
100
109
  static constexpr size_t kStackBufferSize = 192 * 1024;
101
110
 
102
111
  std::unique_ptr<MessagePortData> child_port_data_;
103
112
  std::shared_ptr<KVStore> env_vars_;
104
113
 
105
- // This is always kept alive because the JS object associated with the Worker
106
- // instance refers to it via its [kPort] property.
107
- MessagePort* parent_port_ = nullptr;
108
-
109
114
  // A raw flag that is used by creator and worker threads to
110
115
  // sync up on pre-mature termination of worker - while in the
111
116
  // warmup phase. Once the worker is fully warmed up, use the
@@ -113,6 +118,7 @@ class Worker : public AsyncWrap {
113
118
  bool stopped_ = true;
114
119
 
115
120
  bool has_ref_ = true;
121
+ uint64_t environment_flags_ = EnvironmentFlags::kNoFlags;
116
122
 
117
123
  // The real Environment of the worker object. It has a lesser
118
124
  // lifespan than the worker object itself - comes to life
@@ -120,6 +126,7 @@ class Worker : public AsyncWrap {
120
126
  // destroyed alongwith the worker thread.
121
127
  Environment* env_ = nullptr;
122
128
 
129
+ const SnapshotData* snapshot_data_ = nullptr;
123
130
  friend class WorkerThreadData;
124
131
  };
125
132
 
@@ -29,6 +29,7 @@
29
29
 
30
30
  namespace node {
31
31
 
32
+ class ExternalReferenceRegistry;
32
33
  class Environment;
33
34
 
34
35
  class PipeWrap : public ConnectionWrap<PipeWrap, uv_pipe_t> {
@@ -47,6 +48,7 @@ class PipeWrap : public ConnectionWrap<PipeWrap, uv_pipe_t> {
47
48
  v8::Local<v8::Context> context,
48
49
  void* priv);
49
50
 
51
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
50
52
  SET_NO_MEMORY_INFO()
51
53
  SET_MEMORY_INFO_NAME(PipeWrap)
52
54
  SET_SELF_SIZE(PipeWrap)
File without changes
@@ -66,7 +66,7 @@ class ReqWrap : public AsyncWrap, public ReqWrapBase {
66
66
  // members in memory are predictable. sizeof(req_) depends on the type of T,
67
67
  // so req_wrap_queue_ would no longer be at a fixed offset if it came after
68
68
  // req_. For more information please refer to
69
- // `doc/guides/node-postmortem-support.md`
69
+ // `doc/contributing/node-postmortem-support.md`
70
70
  T req_;
71
71
  };
72
72
 
File without changes
@@ -4,6 +4,7 @@
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
6
  #include "async_wrap-inl.h"
7
+ #include "base_object-inl.h"
7
8
  #include "node.h"
8
9
  #include "stream_base.h"
9
10
  #include "v8.h"
@@ -31,9 +32,10 @@ StreamReq* StreamReq::FromObject(v8::Local<v8::Object> req_wrap_obj) {
31
32
  }
32
33
 
33
34
  void StreamReq::Dispose() {
34
- std::unique_ptr<StreamReq> ptr(this);
35
+ BaseObjectPtr<AsyncWrap> destroy_me{GetAsyncWrap()};
35
36
  object()->SetAlignedPointerInInternalField(
36
37
  StreamReq::kStreamReqField, nullptr);
38
+ destroy_me->Detach();
37
39
  }
38
40
 
39
41
  v8::Local<v8::Object> StreamReq::object() {
@@ -90,29 +92,29 @@ void StreamResource::RemoveStreamListener(StreamListener* listener) {
90
92
  }
91
93
 
92
94
  uv_buf_t StreamResource::EmitAlloc(size_t suggested_size) {
93
- DebugSealHandleScope handle_scope(v8::Isolate::GetCurrent());
95
+ DebugSealHandleScope seal_handle_scope;
94
96
  return listener_->OnStreamAlloc(suggested_size);
95
97
  }
96
98
 
97
99
  void StreamResource::EmitRead(ssize_t nread, const uv_buf_t& buf) {
98
- DebugSealHandleScope handle_scope(v8::Isolate::GetCurrent());
100
+ DebugSealHandleScope seal_handle_scope;
99
101
  if (nread > 0)
100
102
  bytes_read_ += static_cast<uint64_t>(nread);
101
103
  listener_->OnStreamRead(nread, buf);
102
104
  }
103
105
 
104
106
  void StreamResource::EmitAfterWrite(WriteWrap* w, int status) {
105
- DebugSealHandleScope handle_scope(v8::Isolate::GetCurrent());
107
+ DebugSealHandleScope seal_handle_scope;
106
108
  listener_->OnStreamAfterWrite(w, status);
107
109
  }
108
110
 
109
111
  void StreamResource::EmitAfterShutdown(ShutdownWrap* w, int status) {
110
- DebugSealHandleScope handle_scope(v8::Isolate::GetCurrent());
112
+ DebugSealHandleScope seal_handle_scope;
111
113
  listener_->OnStreamAfterShutdown(w, status);
112
114
  }
113
115
 
114
116
  void StreamResource::EmitWantsWrite(size_t suggested_size) {
115
- DebugSealHandleScope handle_scope(v8::Isolate::GetCurrent());
117
+ DebugSealHandleScope seal_handle_scope;
116
118
  listener_->OnStreamWantsWrite(suggested_size);
117
119
  }
118
120
 
@@ -134,8 +136,11 @@ int StreamBase::Shutdown(v8::Local<v8::Object> req_wrap_obj) {
134
136
  StreamReq::ResetObject(req_wrap_obj);
135
137
  }
136
138
 
139
+ BaseObjectPtr<AsyncWrap> req_wrap_ptr;
137
140
  AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(GetAsyncWrap());
138
141
  ShutdownWrap* req_wrap = CreateShutdownWrap(req_wrap_obj);
142
+ if (req_wrap != nullptr)
143
+ req_wrap_ptr.reset(req_wrap->GetAsyncWrap());
139
144
  int err = DoShutdown(req_wrap);
140
145
 
141
146
  if (err != 0 && req_wrap != nullptr) {
@@ -144,9 +149,11 @@ int StreamBase::Shutdown(v8::Local<v8::Object> req_wrap_obj) {
144
149
 
145
150
  const char* msg = Error();
146
151
  if (msg != nullptr) {
147
- req_wrap_obj->Set(
148
- env->context(),
149
- env->error_string(), OneByteString(env->isolate(), msg)).Check();
152
+ if (req_wrap_obj->Set(env->context(),
153
+ env->error_string(),
154
+ OneByteString(env->isolate(), msg)).IsNothing()) {
155
+ return UV_EBUSY;
156
+ }
150
157
  ClearError();
151
158
  }
152
159
 
@@ -169,7 +176,7 @@ StreamWriteResult StreamBase::Write(
169
176
  if (send_handle == nullptr) {
170
177
  err = DoTryWrite(&bufs, &count);
171
178
  if (err != 0 || count == 0) {
172
- return StreamWriteResult { false, err, nullptr, total_bytes };
179
+ return StreamWriteResult { false, err, nullptr, total_bytes, {} };
173
180
  }
174
181
  }
175
182
 
@@ -179,13 +186,14 @@ StreamWriteResult StreamBase::Write(
179
186
  if (!env->write_wrap_template()
180
187
  ->NewInstance(env->context())
181
188
  .ToLocal(&req_wrap_obj)) {
182
- return StreamWriteResult { false, UV_EBUSY, nullptr, 0 };
189
+ return StreamWriteResult { false, UV_EBUSY, nullptr, 0, {} };
183
190
  }
184
191
  StreamReq::ResetObject(req_wrap_obj);
185
192
  }
186
193
 
187
194
  AsyncHooks::DefaultTriggerAsyncIdScope trigger_scope(GetAsyncWrap());
188
195
  WriteWrap* req_wrap = CreateWriteWrap(req_wrap_obj);
196
+ BaseObjectPtr<AsyncWrap> req_wrap_ptr(req_wrap->GetAsyncWrap());
189
197
 
190
198
  err = DoWrite(req_wrap, bufs, count, send_handle);
191
199
  bool async = err == 0;
@@ -197,13 +205,16 @@ StreamWriteResult StreamBase::Write(
197
205
 
198
206
  const char* msg = Error();
199
207
  if (msg != nullptr) {
200
- req_wrap_obj->Set(env->context(),
201
- env->error_string(),
202
- OneByteString(env->isolate(), msg)).Check();
208
+ if (req_wrap_obj->Set(env->context(),
209
+ env->error_string(),
210
+ OneByteString(env->isolate(), msg)).IsNothing()) {
211
+ return StreamWriteResult { false, UV_EBUSY, nullptr, 0, {} };
212
+ }
203
213
  ClearError();
204
214
  }
205
215
 
206
- return StreamWriteResult { async, err, req_wrap, total_bytes };
216
+ return StreamWriteResult {
217
+ async, err, req_wrap, total_bytes, std::move(req_wrap_ptr) };
207
218
  }
208
219
 
209
220
  template <typename OtherBase>
@@ -240,19 +251,44 @@ StreamBase* StreamBase::FromObject(v8::Local<v8::Object> obj) {
240
251
  StreamBase::kStreamBaseField));
241
252
  }
242
253
 
243
- void WriteWrap::SetAllocatedStorage(AllocatedBuffer&& storage) {
244
- CHECK_NULL(storage_.data());
245
- storage_ = std::move(storage);
254
+ WriteWrap* WriteWrap::FromObject(v8::Local<v8::Object> req_wrap_obj) {
255
+ return static_cast<WriteWrap*>(StreamReq::FromObject(req_wrap_obj));
256
+ }
257
+
258
+ template <typename T, bool kIsWeak>
259
+ WriteWrap* WriteWrap::FromObject(
260
+ const BaseObjectPtrImpl<T, kIsWeak>& base_obj) {
261
+ if (!base_obj) return nullptr;
262
+ return FromObject(base_obj->object());
263
+ }
264
+
265
+ ShutdownWrap* ShutdownWrap::FromObject(v8::Local<v8::Object> req_wrap_obj) {
266
+ return static_cast<ShutdownWrap*>(StreamReq::FromObject(req_wrap_obj));
267
+ }
268
+
269
+ template <typename T, bool kIsWeak>
270
+ ShutdownWrap* ShutdownWrap::FromObject(
271
+ const BaseObjectPtrImpl<T, kIsWeak>& base_obj) {
272
+ if (!base_obj) return nullptr;
273
+ return FromObject(base_obj->object());
274
+ }
275
+
276
+ void WriteWrap::SetBackingStore(std::unique_ptr<v8::BackingStore> bs) {
277
+ CHECK(!backing_store_);
278
+ backing_store_ = std::move(bs);
246
279
  }
247
280
 
248
281
  void StreamReq::Done(int status, const char* error_str) {
249
282
  AsyncWrap* async_wrap = GetAsyncWrap();
250
283
  Environment* env = async_wrap->env();
251
284
  if (error_str != nullptr) {
252
- async_wrap->object()->Set(env->context(),
253
- env->error_string(),
254
- OneByteString(env->isolate(), error_str))
255
- .Check();
285
+ v8::HandleScope handle_scope(env->isolate());
286
+ if (async_wrap->object()->Set(
287
+ env->context(),
288
+ env->error_string(),
289
+ OneByteString(env->isolate(), error_str)).IsNothing()) {
290
+ return;
291
+ }
256
292
  }
257
293
 
258
294
  OnDone(status);
@@ -18,12 +18,14 @@ class ShutdownWrap;
18
18
  class WriteWrap;
19
19
  class StreamBase;
20
20
  class StreamResource;
21
+ class ExternalReferenceRegistry;
21
22
 
22
23
  struct StreamWriteResult {
23
24
  bool async;
24
25
  int err;
25
26
  WriteWrap* wrap;
26
27
  size_t bytes;
28
+ BaseObjectPtr<AsyncWrap> wrap_obj;
27
29
  };
28
30
 
29
31
  using JSMethodFunction = void(const v8::FunctionCallbackInfo<v8::Value>& args);
@@ -47,6 +49,8 @@ class StreamReq {
47
49
  virtual AsyncWrap* GetAsyncWrap() = 0;
48
50
  inline v8::Local<v8::Object> object();
49
51
 
52
+ // TODO(RaisinTen): Update the return type to a Maybe, so that we can indicate
53
+ // if there is a pending exception/termination.
50
54
  inline void Done(int status, const char* error_str = nullptr);
51
55
  inline void Dispose();
52
56
 
@@ -76,23 +80,33 @@ class ShutdownWrap : public StreamReq {
76
80
  StreamBase* stream,
77
81
  v8::Local<v8::Object> req_wrap_obj);
78
82
 
83
+ static inline ShutdownWrap* FromObject(v8::Local<v8::Object> req_wrap_obj);
84
+ template <typename T, bool kIsWeak>
85
+ static inline ShutdownWrap* FromObject(
86
+ const BaseObjectPtrImpl<T, kIsWeak>& base_obj);
87
+
79
88
  // Call stream()->EmitAfterShutdown() and dispose of this request wrap.
80
89
  void OnDone(int status) override;
81
90
  };
82
91
 
83
92
  class WriteWrap : public StreamReq {
84
93
  public:
85
- inline void SetAllocatedStorage(AllocatedBuffer&& storage);
94
+ inline void SetBackingStore(std::unique_ptr<v8::BackingStore> bs);
86
95
 
87
96
  inline WriteWrap(
88
97
  StreamBase* stream,
89
98
  v8::Local<v8::Object> req_wrap_obj);
90
99
 
100
+ static inline WriteWrap* FromObject(v8::Local<v8::Object> req_wrap_obj);
101
+ template <typename T, bool kIsWeak>
102
+ static inline WriteWrap* FromObject(
103
+ const BaseObjectPtrImpl<T, kIsWeak>& base_obj);
104
+
91
105
  // Call stream()->EmitAfterWrite() and dispose of this request wrap.
92
106
  void OnDone(int status) override;
93
107
 
94
108
  private:
95
- AllocatedBuffer storage_;
109
+ std::unique_ptr<v8::BackingStore> backing_store_;
96
110
  };
97
111
 
98
112
 
@@ -296,7 +310,7 @@ class StreamBase : public StreamResource {
296
310
 
297
311
  static void AddMethods(Environment* env,
298
312
  v8::Local<v8::FunctionTemplate> target);
299
-
313
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
300
314
  virtual bool IsAlive() = 0;
301
315
  virtual bool IsClosing() = 0;
302
316
  virtual bool IsIPCPipe();
@@ -314,6 +328,8 @@ class StreamBase : public StreamResource {
314
328
  // subclasses are also `BaseObject`s.
315
329
  Environment* stream_env() const { return env_; }
316
330
 
331
+ // TODO(RaisinTen): Update the return type to a Maybe, so that we can indicate
332
+ // if there is a pending exception/termination.
317
333
  // Shut down the current stream. This request can use an existing
318
334
  // ShutdownWrap object (that was created in JS), or a new one will be created.
319
335
  // Returns 1 in case of a synchronous completion, 0 in case of asynchronous
@@ -321,6 +337,8 @@ class StreamBase : public StreamResource {
321
337
  inline int Shutdown(
322
338
  v8::Local<v8::Object> req_wrap_obj = v8::Local<v8::Object>());
323
339
 
340
+ // TODO(RaisinTen): Update the return type to a Maybe, so that we can indicate
341
+ // if there is a pending exception/termination.
324
342
  // Write data to the current stream. This request can use an existing
325
343
  // WriteWrap object (that was created in JS), or a new one will be created.
326
344
  // This will first try to write synchronously using `DoTryWrite()`, then
@@ -411,6 +429,10 @@ class SimpleShutdownWrap : public ShutdownWrap, public OtherBase {
411
429
  SET_NO_MEMORY_INFO()
412
430
  SET_MEMORY_INFO_NAME(SimpleShutdownWrap)
413
431
  SET_SELF_SIZE(SimpleShutdownWrap)
432
+
433
+ bool IsNotIndicativeOfMemoryLeakAtExit() const override {
434
+ return OtherBase::IsNotIndicativeOfMemoryLeakAtExit();
435
+ }
414
436
  };
415
437
 
416
438
  template <typename OtherBase>
@@ -424,6 +446,10 @@ class SimpleWriteWrap : public WriteWrap, public OtherBase {
424
446
  SET_NO_MEMORY_INFO()
425
447
  SET_MEMORY_INFO_NAME(SimpleWriteWrap)
426
448
  SET_SELF_SIZE(SimpleWriteWrap)
449
+
450
+ bool IsNotIndicativeOfMemoryLeakAtExit() const override {
451
+ return OtherBase::IsNotIndicativeOfMemoryLeakAtExit();
452
+ }
427
453
  };
428
454
 
429
455
  } // namespace node
@@ -9,11 +9,14 @@ namespace node {
9
9
 
10
10
  class StreamPipe : public AsyncWrap {
11
11
  public:
12
- StreamPipe(StreamBase* source, StreamBase* sink, v8::Local<v8::Object> obj);
13
12
  ~StreamPipe() override;
14
13
 
15
14
  void Unpipe(bool is_in_deletion = false);
16
15
 
16
+ // TODO(RaisinTen): Just like MessagePort, add the following overload:
17
+ // static StreamPipe* New(StreamBase* source, StreamBase* sink,
18
+ // v8::Local<v8::Object> obj);
19
+ // so that we can indicate if there is a pending exception/termination.
17
20
  static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
18
21
  static void Start(const v8::FunctionCallbackInfo<v8::Value>& args);
19
22
  static void Unpipe(const v8::FunctionCallbackInfo<v8::Value>& args);
@@ -25,6 +28,8 @@ class StreamPipe : public AsyncWrap {
25
28
  SET_SELF_SIZE(StreamPipe)
26
29
 
27
30
  private:
31
+ StreamPipe(StreamBase* source, StreamBase* sink, v8::Local<v8::Object> obj);
32
+
28
33
  inline StreamBase* source();
29
34
  inline StreamBase* sink();
30
35
 
@@ -42,7 +47,7 @@ class StreamPipe : public AsyncWrap {
42
47
  // `OnStreamWantsWrite()` support.
43
48
  size_t wanted_data_ = 0;
44
49
 
45
- void ProcessData(size_t nread, AllocatedBuffer&& buf);
50
+ void ProcessData(size_t nread, std::unique_ptr<v8::BackingStore> bs);
46
51
 
47
52
  class ReadableListener : public StreamListener {
48
53
  public:
@@ -67,6 +72,6 @@ class StreamPipe : public AsyncWrap {
67
72
 
68
73
  } // namespace node
69
74
 
70
- #endif
75
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
71
76
 
72
77
  #endif // SRC_STREAM_PIPE_H_
@@ -31,6 +31,7 @@
31
31
  namespace node {
32
32
 
33
33
  class Environment;
34
+ class ExternalReferenceRegistry;
34
35
 
35
36
  class LibuvStreamWrap : public HandleWrap, public StreamBase {
36
37
  public:
@@ -38,7 +39,7 @@ class LibuvStreamWrap : public HandleWrap, public StreamBase {
38
39
  v8::Local<v8::Value> unused,
39
40
  v8::Local<v8::Context> context,
40
41
  void* priv);
41
-
42
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
42
43
  int GetFD() override;
43
44
  bool IsAlive() override;
44
45
  bool IsClosing() override;
@@ -104,6 +105,8 @@ class LibuvStreamWrap : public HandleWrap, public StreamBase {
104
105
 
105
106
  // Callbacks for libuv
106
107
  void OnUvAlloc(size_t suggested_size, uv_buf_t* buf);
108
+ // TODO(RaisinTen): Update the return type to a Maybe, so that we can indicate
109
+ // if there is a pending exception/termination.
107
110
  void OnUvRead(ssize_t nread, const uv_buf_t* buf);
108
111
 
109
112
  static void AfterUvWrite(uv_write_t* req, int status);
@@ -26,14 +26,7 @@
26
26
 
27
27
  // Decodes a v8::Local<v8::String> or Buffer to a raw char*
28
28
 
29
- #if (__GNUC__ >= 8) && !defined(__clang__)
30
- #pragma GCC diagnostic push
31
- #pragma GCC diagnostic ignored "-Wcast-function-type"
32
- #endif
33
29
  #include "v8.h"
34
- #if (__GNUC__ >= 8) && !defined(__clang__)
35
- #pragma GCC diagnostic pop
36
- #endif
37
30
  #include "env-inl.h"
38
31
 
39
32
  #include <string>
File without changes
File without changes
@@ -32,7 +32,7 @@ class Vector {
32
32
 
33
33
  // Returns true if the Vector is front-to-back, false if back-to-front.
34
34
  // In the latter case, v[0] corresponds to the *end* of the memory range.
35
- size_t forward() const { return is_forward_; }
35
+ bool forward() const { return is_forward_; }
36
36
 
37
37
  // Access individual vector elements - checks bounds in debug mode.
38
38
  T& operator[](size_t index) const {
@@ -458,7 +458,7 @@ size_t StringSearch<Char>::BoyerMooreHorspoolSearch(
458
458
  const size_t subject_length = subject.length();
459
459
  const size_t pattern_length = pattern_.length();
460
460
  int* char_occurrences = bad_char_shift_table_;
461
- int64_t badness = -pattern_length;
461
+ int64_t badness = -static_cast<int64_t>(pattern_length);
462
462
 
463
463
  // How bad we are doing without a good-suffix table.
464
464
  Char last_char = pattern_[pattern_length - 1];
@@ -29,6 +29,7 @@
29
29
 
30
30
  namespace node {
31
31
 
32
+ class ExternalReferenceRegistry;
32
33
  class Environment;
33
34
 
34
35
  class TCPWrap : public ConnectionWrap<TCPWrap, uv_tcp_t> {
@@ -45,6 +46,7 @@ class TCPWrap : public ConnectionWrap<TCPWrap, uv_tcp_t> {
45
46
  v8::Local<v8::Value> unused,
46
47
  v8::Local<v8::Context> context,
47
48
  void* priv);
49
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
48
50
 
49
51
  SET_NO_MEMORY_INFO()
50
52
  SET_SELF_SIZE(TCPWrap)
@@ -86,6 +88,8 @@ class TCPWrap : public ConnectionWrap<TCPWrap, uv_tcp_t> {
86
88
  const v8::FunctionCallbackInfo<v8::Value>& args,
87
89
  int family,
88
90
  std::function<int(const char* ip_address, int port, T* addr)> uv_ip_addr);
91
+ static void Reset(const v8::FunctionCallbackInfo<v8::Value>& args);
92
+ int Reset(v8::Local<v8::Value> close_callback = v8::Local<v8::Value>());
89
93
 
90
94
  #ifdef _WIN32
91
95
  static void SetSimultaneousAccepts(
File without changes
@@ -0,0 +1,32 @@
1
+ #ifndef SRC_TIMER_WRAP_INL_H_
2
+ #define SRC_TIMER_WRAP_INL_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "timer_wrap.h"
7
+
8
+ #include <utility>
9
+
10
+ #include "env.h"
11
+ #include "uv.h"
12
+
13
+ namespace node {
14
+
15
+ template <typename... Args>
16
+ inline TimerWrap::TimerWrap(Environment* env, Args&&... args)
17
+ : env_(env), fn_(std::forward<Args>(args)...) {
18
+ uv_timer_init(env->event_loop(), &timer_);
19
+ timer_.data = this;
20
+ }
21
+
22
+ template <typename... Args>
23
+ inline TimerWrapHandle::TimerWrapHandle(Environment* env, Args&&... args) {
24
+ timer_ = new TimerWrap(env, std::forward<Args>(args)...);
25
+ env->AddCleanupHook(CleanupHook, this);
26
+ }
27
+
28
+ } // namespace node
29
+
30
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
31
+
32
+ #endif // SRC_TIMER_WRAP_INL_H_