@encharm/cws 4.1.0 → 4.2.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 (370) hide show
  1. package/dist/bindings/cws_linux_108.node +0 -0
  2. package/dist/bindings/cws_linux_64.node +0 -0
  3. package/dist/bindings/cws_linux_72.node +0 -0
  4. package/dist/bindings/cws_linux_79.node +0 -0
  5. package/dist/bindings/cws_linux_83.node +0 -0
  6. package/dist/bindings/cws_linux_93.node +0 -0
  7. package/dist/bindings/cws_win32_64.node +0 -0
  8. package/dist/bindings/cws_win32_72.node +0 -0
  9. package/dist/bindings/cws_win32_79.node +0 -0
  10. package/dist/bindings/cws_win32_83.node +0 -0
  11. package/dist/bindings/cws_win32_93.node +0 -0
  12. package/package.json +1 -1
  13. package/src/Addon.h +24 -2
  14. package/src/HTTPSocket.cpp +1 -1
  15. package/src/headers/{13 → 18}/aliased_buffer.h +61 -9
  16. package/src/headers/18/aliased_struct-inl.h +54 -0
  17. package/src/headers/18/aliased_struct.h +63 -0
  18. package/src/headers/{12 → 18}/async_wrap-inl.h +0 -0
  19. package/src/headers/{12 → 18}/async_wrap.h +26 -2
  20. package/src/headers/{12/base64.h → 18/base64-inl.h} +78 -86
  21. package/src/headers/18/base64.h +69 -0
  22. package/src/headers/{12 → 18}/base_object-inl.h +46 -25
  23. package/src/headers/{12 → 18}/base_object.h +82 -17
  24. package/src/headers/{12 → 18}/callback_queue-inl.h +9 -9
  25. package/src/headers/{12 → 18}/callback_queue.h +13 -5
  26. package/src/headers/18/cares_wrap.h +523 -0
  27. package/src/headers/{12 → 18}/connect_wrap.h +0 -0
  28. package/src/headers/{12 → 18}/connection_wrap.h +0 -0
  29. package/src/headers/18/crypto/crypto_aes.h +89 -0
  30. package/src/headers/{13/node_crypto_bio.h → 18/crypto/crypto_bio.h} +3 -4
  31. package/src/headers/18/crypto/crypto_cipher.h +291 -0
  32. package/src/headers/{13/node_crypto_clienthello-inl.h → 18/crypto/crypto_clienthello-inl.h} +4 -5
  33. package/src/headers/{13/node_crypto_clienthello.h → 18/crypto/crypto_clienthello.h} +3 -4
  34. package/src/headers/{12/node_crypto_common.h → 18/crypto/crypto_common.h} +49 -36
  35. package/src/headers/18/crypto/crypto_context.h +147 -0
  36. package/src/headers/18/crypto/crypto_dh.h +156 -0
  37. package/src/headers/18/crypto/crypto_dsa.h +77 -0
  38. package/src/headers/18/crypto/crypto_ec.h +170 -0
  39. package/src/headers/{12/node_crypto_groups.h → 18/crypto/crypto_groups.h} +3 -3
  40. package/src/headers/18/crypto/crypto_hash.h +89 -0
  41. package/src/headers/18/crypto/crypto_hkdf.h +65 -0
  42. package/src/headers/18/crypto/crypto_hmac.h +94 -0
  43. package/src/headers/18/crypto/crypto_keygen.h +305 -0
  44. package/src/headers/18/crypto/crypto_keys.h +420 -0
  45. package/src/headers/18/crypto/crypto_pbkdf2.h +76 -0
  46. package/src/headers/18/crypto/crypto_random.h +130 -0
  47. package/src/headers/18/crypto/crypto_rsa.h +141 -0
  48. package/src/headers/18/crypto/crypto_scrypt.h +87 -0
  49. package/src/headers/18/crypto/crypto_sig.h +168 -0
  50. package/src/headers/18/crypto/crypto_spkac.h +21 -0
  51. package/src/headers/18/crypto/crypto_timing.h +20 -0
  52. package/src/headers/{13/tls_wrap.h → 18/crypto/crypto_tls.h} +137 -66
  53. package/src/headers/18/crypto/crypto_util.h +791 -0
  54. package/src/headers/18/crypto/crypto_x509.h +143 -0
  55. package/src/headers/{12 → 18}/debug_utils-inl.h +0 -0
  56. package/src/headers/{13 → 18}/debug_utils.h +7 -4
  57. package/src/headers/{12 → 18}/diagnosticfilename-inl.h +0 -0
  58. package/src/headers/{12 → 18}/env-inl.h +397 -304
  59. package/src/headers/{12 → 18}/env.h +397 -172
  60. package/src/headers/{12 → 18}/handle_wrap.h +7 -3
  61. package/src/headers/18/histogram-inl.h +107 -0
  62. package/src/headers/18/histogram.h +239 -0
  63. package/src/headers/{13 → 18}/inspector_agent.h +4 -7
  64. package/src/headers/{12 → 18}/inspector_io.h +0 -0
  65. package/src/headers/{13 → 18}/inspector_profiler.h +17 -5
  66. package/src/headers/{12 → 18}/inspector_socket.h +0 -0
  67. package/src/headers/{12 → 18}/inspector_socket_server.h +0 -0
  68. package/src/headers/18/js_native_api.h +571 -0
  69. package/src/headers/{13 → 18}/js_native_api_types.h +30 -7
  70. package/src/headers/{12 → 18}/js_native_api_v8.h +220 -83
  71. package/src/headers/{12 → 18}/js_native_api_v8_internals.h +6 -5
  72. package/src/headers/{12 → 18}/js_stream.h +0 -0
  73. package/src/headers/{12 → 18}/json_utils.h +0 -0
  74. package/src/headers/{13 → 18}/memory_tracker-inl.h +6 -5
  75. package/src/headers/{13 → 18}/memory_tracker.h +0 -7
  76. package/src/headers/{13 → 18}/module_wrap.h +24 -7
  77. package/src/headers/{13 → 18}/node.h +329 -68
  78. package/src/headers/18/node_api.h +288 -0
  79. package/src/headers/18/node_api_internals.h +38 -0
  80. package/src/headers/{12 → 18}/node_api_types.h +12 -9
  81. package/src/headers/{12 → 18}/node_binding.h +0 -0
  82. package/src/headers/18/node_blob.h +191 -0
  83. package/src/headers/18/node_bob-inl.h +37 -0
  84. package/src/headers/18/node_bob.h +111 -0
  85. package/src/headers/{13 → 18}/node_buffer.h +0 -0
  86. package/src/headers/{13 → 18}/node_constants.h +5 -1
  87. package/src/headers/{12 → 18}/node_context_data.h +5 -0
  88. package/src/headers/{12 → 18}/node_contextify.h +37 -2
  89. package/src/headers/{10/node_win32_perfctr_provider.h → 18/node_crypto.h} +30 -31
  90. package/src/headers/{12 → 18}/node_dir.h +0 -0
  91. package/src/headers/{12 → 18}/node_dtrace.h +0 -0
  92. package/src/headers/{12 → 18}/node_errors.h +90 -24
  93. package/src/headers/18/node_external_reference.h +145 -0
  94. package/src/headers/{13 → 18}/node_file-inl.h +38 -21
  95. package/src/headers/{12 → 18}/node_file.h +74 -13
  96. package/src/headers/{13 → 18}/node_http2.h +365 -269
  97. package/src/headers/{12 → 18}/node_http2_state.h +40 -50
  98. package/src/headers/{13 → 18}/node_http_common-inl.h +25 -5
  99. package/src/headers/{13 → 18}/node_http_common.h +24 -20
  100. package/src/headers/{13 → 18}/node_i18n.h +2 -1
  101. package/src/headers/{12 → 18}/node_internals.h +39 -41
  102. package/src/headers/{13 → 18}/node_main_instance.h +15 -18
  103. package/src/headers/{12 → 18}/node_mem-inl.h +0 -0
  104. package/src/headers/{12 → 18}/node_mem.h +1 -1
  105. package/src/headers/{13 → 18}/node_messaging.h +170 -23
  106. package/src/headers/{12 → 18}/node_metadata.h +17 -4
  107. package/src/headers/{12 → 18}/node_mutex.h +77 -1
  108. package/src/headers/{12 → 18}/node_native_module.h +11 -1
  109. package/src/headers/{13 → 18}/node_native_module_env.h +14 -8
  110. package/src/headers/{12 → 18}/node_object_wrap.h +0 -0
  111. package/src/headers/{13 → 18}/node_options-inl.h +51 -21
  112. package/src/headers/{13 → 18}/node_options.h +46 -14
  113. package/src/headers/18/node_perf.h +168 -0
  114. package/src/headers/{12 → 18}/node_perf_common.h +16 -22
  115. package/src/headers/{12 → 18}/node_platform.h +21 -16
  116. package/src/headers/18/node_process-inl.h +26 -0
  117. package/src/headers/18/node_process.h +97 -0
  118. package/src/headers/{13 → 18}/node_report.h +2 -2
  119. package/src/headers/{13 → 18}/node_revert.h +10 -0
  120. package/src/headers/{12 → 18}/node_root_certs.h +439 -651
  121. package/src/headers/18/node_snapshot_builder.h +43 -0
  122. package/src/headers/18/node_snapshotable.h +130 -0
  123. package/src/headers/{12 → 18}/node_sockaddr-inl.h +100 -4
  124. package/src/headers/18/node_sockaddr.h +405 -0
  125. package/src/headers/{12 → 18}/node_stat_watcher.h +7 -1
  126. package/src/headers/{12 → 18}/node_union_bytes.h +0 -0
  127. package/src/headers/{13 → 18}/node_url.h +18 -1
  128. package/src/headers/18/node_v8.h +41 -0
  129. package/src/headers/{12 → 18}/node_v8_platform-inl.h +10 -0
  130. package/src/headers/{13 → 18}/node_version.h +7 -7
  131. package/src/headers/{12 → 18}/node_wasi.h +0 -0
  132. package/src/headers/18/node_wasm_web_api.h +55 -0
  133. package/src/headers/{13 → 18}/node_watchdog.h +0 -0
  134. package/src/headers/{10 → 18}/node_win32_etw_provider-inl.h +7 -6
  135. package/src/headers/{10 → 18}/node_win32_etw_provider.h +0 -0
  136. package/src/headers/{13 → 18}/node_worker.h +24 -17
  137. package/src/headers/{12 → 18}/pipe_wrap.h +2 -0
  138. package/src/headers/{12 → 18}/req_wrap-inl.h +0 -0
  139. package/src/headers/{12 → 18}/req_wrap.h +1 -1
  140. package/src/headers/{12 → 18}/spawn_sync.h +0 -0
  141. package/src/headers/{13 → 18}/stream_base-inl.h +58 -22
  142. package/src/headers/{13 → 18}/stream_base.h +29 -3
  143. package/src/headers/{13 → 18}/stream_pipe.h +8 -3
  144. package/src/headers/{12 → 18}/stream_wrap.h +4 -1
  145. package/src/headers/{13 → 18}/string_bytes.h +0 -7
  146. package/src/headers/{12 → 18}/string_decoder-inl.h +0 -0
  147. package/src/headers/{10 → 18}/string_decoder.h +0 -0
  148. package/src/headers/{13 → 18}/string_search.h +2 -2
  149. package/src/headers/{12 → 18}/tcp_wrap.h +4 -0
  150. package/src/headers/{12 → 18}/threadpoolwork-inl.h +0 -0
  151. package/src/headers/18/timer_wrap-inl.h +32 -0
  152. package/src/headers/18/timer_wrap.h +85 -0
  153. package/src/headers/{13 → 18}/tracing/agent.h +1 -1
  154. package/src/headers/{12 → 18}/tracing/node_trace_buffer.h +0 -0
  155. package/src/headers/{12 → 18}/tracing/node_trace_writer.h +0 -0
  156. package/src/headers/{13 → 18}/tracing/trace_event.h +23 -13
  157. package/src/headers/{12 → 18}/tracing/trace_event_common.h +0 -0
  158. package/src/headers/{12 → 18}/tracing/traced_value.h +0 -0
  159. package/src/headers/{13 → 18}/tty_wrap.h +2 -1
  160. package/src/headers/{13 → 18}/udp_wrap.h +5 -0
  161. package/src/headers/{13 → 18}/util-inl.h +69 -15
  162. package/src/headers/{13 → 18}/util.h +93 -31
  163. package/src/headers/18/v8-fast-api-calls.h +939 -0
  164. package/src/headers/{12 → 18}/v8abbr.h +2 -2
  165. package/src/headers/10/aliased_buffer.h +0 -241
  166. package/src/headers/10/async_wrap-inl.h +0 -106
  167. package/src/headers/10/async_wrap.h +0 -218
  168. package/src/headers/10/base64.h +0 -197
  169. package/src/headers/10/base_object-inl.h +0 -132
  170. package/src/headers/10/base_object.h +0 -115
  171. package/src/headers/10/connect_wrap.h +0 -28
  172. package/src/headers/10/connection_wrap.h +0 -30
  173. package/src/headers/10/debug_utils.h +0 -128
  174. package/src/headers/10/env-inl.h +0 -906
  175. package/src/headers/10/env.h +0 -1046
  176. package/src/headers/10/handle_wrap.h +0 -114
  177. package/src/headers/10/inspector_agent.h +0 -137
  178. package/src/headers/10/inspector_io.h +0 -97
  179. package/src/headers/10/inspector_socket.h +0 -59
  180. package/src/headers/10/inspector_socket_server.h +0 -104
  181. package/src/headers/10/js_stream.h +0 -57
  182. package/src/headers/10/memory_tracker-inl.h +0 -318
  183. package/src/headers/10/memory_tracker.h +0 -246
  184. package/src/headers/10/module_wrap.h +0 -100
  185. package/src/headers/10/node.h +0 -863
  186. package/src/headers/10/node_api.h +0 -752
  187. package/src/headers/10/node_api_types.h +0 -171
  188. package/src/headers/10/node_buffer.h +0 -90
  189. package/src/headers/10/node_code_cache.h +0 -17
  190. package/src/headers/10/node_constants.h +0 -74
  191. package/src/headers/10/node_context_data.h +0 -39
  192. package/src/headers/10/node_contextify.h +0 -141
  193. package/src/headers/10/node_counters.h +0 -59
  194. package/src/headers/10/node_crypto.h +0 -699
  195. package/src/headers/10/node_crypto_bio.h +0 -177
  196. package/src/headers/10/node_crypto_clienthello-inl.h +0 -92
  197. package/src/headers/10/node_crypto_clienthello.h +0 -131
  198. package/src/headers/10/node_crypto_groups.h +0 -416
  199. package/src/headers/10/node_dtrace.h +0 -84
  200. package/src/headers/10/node_errors.h +0 -118
  201. package/src/headers/10/node_file.h +0 -373
  202. package/src/headers/10/node_http2.h +0 -1304
  203. package/src/headers/10/node_http2_state.h +0 -158
  204. package/src/headers/10/node_i18n.h +0 -69
  205. package/src/headers/10/node_internals.h +0 -952
  206. package/src/headers/10/node_javascript.h +0 -41
  207. package/src/headers/10/node_messaging.h +0 -219
  208. package/src/headers/10/node_mutex.h +0 -191
  209. package/src/headers/10/node_object_wrap.h +0 -130
  210. package/src/headers/10/node_options-inl.h +0 -444
  211. package/src/headers/10/node_options.h +0 -397
  212. package/src/headers/10/node_perf.h +0 -134
  213. package/src/headers/10/node_perf_common.h +0 -96
  214. package/src/headers/10/node_persistent.h +0 -30
  215. package/src/headers/10/node_platform.h +0 -170
  216. package/src/headers/10/node_revert.h +0 -75
  217. package/src/headers/10/node_root_certs.h +0 -3393
  218. package/src/headers/10/node_stat_watcher.h +0 -65
  219. package/src/headers/10/node_url.h +0 -193
  220. package/src/headers/10/node_version.h +0 -120
  221. package/src/headers/10/node_watchdog.h +0 -114
  222. package/src/headers/10/node_worker.h +0 -94
  223. package/src/headers/10/pipe_wrap.h +0 -76
  224. package/src/headers/10/req_wrap-inl.h +0 -166
  225. package/src/headers/10/req_wrap.h +0 -61
  226. package/src/headers/10/sharedarraybuffer_metadata.h +0 -67
  227. package/src/headers/10/spawn_sync.h +0 -240
  228. package/src/headers/10/stream_base-inl.h +0 -458
  229. package/src/headers/10/stream_base.h +0 -378
  230. package/src/headers/10/stream_pipe.h +0 -72
  231. package/src/headers/10/stream_wrap.h +0 -130
  232. package/src/headers/10/string_bytes.h +0 -126
  233. package/src/headers/10/string_decoder-inl.h +0 -38
  234. package/src/headers/10/string_search.h +0 -620
  235. package/src/headers/10/tcp_wrap.h +0 -99
  236. package/src/headers/10/tls_wrap.h +0 -195
  237. package/src/headers/10/tracing/agent.h +0 -178
  238. package/src/headers/10/tracing/node_trace_buffer.h +0 -83
  239. package/src/headers/10/tracing/node_trace_writer.h +0 -75
  240. package/src/headers/10/tracing/trace_event.h +0 -706
  241. package/src/headers/10/tracing/trace_event_common.h +0 -1102
  242. package/src/headers/10/tracing/traced_value.h +0 -68
  243. package/src/headers/10/tty_wrap.h +0 -63
  244. package/src/headers/10/udp_wrap.h +0 -102
  245. package/src/headers/10/util-inl.h +0 -459
  246. package/src/headers/10/util.h +0 -508
  247. package/src/headers/10/v8abbr.h +0 -121
  248. package/src/headers/12/aliased_buffer.h +0 -263
  249. package/src/headers/12/debug_utils.h +0 -181
  250. package/src/headers/12/histogram-inl.h +0 -83
  251. package/src/headers/12/histogram.h +0 -98
  252. package/src/headers/12/http_parser_adaptor.h +0 -24
  253. package/src/headers/12/inspector_agent.h +0 -147
  254. package/src/headers/12/inspector_profiler.h +0 -137
  255. package/src/headers/12/js_native_api.h +0 -541
  256. package/src/headers/12/js_native_api_types.h +0 -139
  257. package/src/headers/12/memory_tracker-inl.h +0 -339
  258. package/src/headers/12/memory_tracker.h +0 -283
  259. package/src/headers/12/module_wrap.h +0 -99
  260. package/src/headers/12/node.h +0 -887
  261. package/src/headers/12/node_api.h +0 -239
  262. package/src/headers/12/node_buffer.h +0 -92
  263. package/src/headers/12/node_constants.h +0 -80
  264. package/src/headers/12/node_crypto.h +0 -800
  265. package/src/headers/12/node_crypto_bio.h +0 -195
  266. package/src/headers/12/node_crypto_clienthello-inl.h +0 -91
  267. package/src/headers/12/node_crypto_clienthello.h +0 -132
  268. package/src/headers/12/node_file-inl.h +0 -289
  269. package/src/headers/12/node_http2.h +0 -1311
  270. package/src/headers/12/node_http_parser_impl.h +0 -994
  271. package/src/headers/12/node_i18n.h +0 -144
  272. package/src/headers/12/node_main_instance.h +0 -97
  273. package/src/headers/12/node_messaging.h +0 -227
  274. package/src/headers/12/node_native_module_env.h +0 -65
  275. package/src/headers/12/node_options-inl.h +0 -447
  276. package/src/headers/12/node_options.h +0 -479
  277. package/src/headers/12/node_perf.h +0 -181
  278. package/src/headers/12/node_process.h +0 -41
  279. package/src/headers/12/node_report.h +0 -47
  280. package/src/headers/12/node_revert.h +0 -78
  281. package/src/headers/12/node_sockaddr.h +0 -123
  282. package/src/headers/12/node_url.h +0 -188
  283. package/src/headers/12/node_version.h +0 -98
  284. package/src/headers/12/node_watchdog.h +0 -152
  285. package/src/headers/12/node_win32_etw_provider-inl.h +0 -287
  286. package/src/headers/12/node_win32_etw_provider.h +0 -99
  287. package/src/headers/12/node_worker.h +0 -142
  288. package/src/headers/12/sharedarraybuffer_metadata.h +0 -72
  289. package/src/headers/12/stream_base-inl.h +0 -323
  290. package/src/headers/12/stream_base.h +0 -431
  291. package/src/headers/12/stream_pipe.h +0 -72
  292. package/src/headers/12/string_bytes.h +0 -142
  293. package/src/headers/12/string_decoder.h +0 -50
  294. package/src/headers/12/string_search.h +0 -638
  295. package/src/headers/12/tls_wrap.h +0 -221
  296. package/src/headers/12/tracing/agent.h +0 -195
  297. package/src/headers/12/tracing/trace_event.h +0 -710
  298. package/src/headers/12/tty_wrap.h +0 -64
  299. package/src/headers/12/udp_wrap.h +0 -222
  300. package/src/headers/12/util-inl.h +0 -529
  301. package/src/headers/12/util.h +0 -765
  302. package/src/headers/13/async_wrap-inl.h +0 -94
  303. package/src/headers/13/async_wrap.h +0 -224
  304. package/src/headers/13/base64.h +0 -197
  305. package/src/headers/13/base_object-inl.h +0 -353
  306. package/src/headers/13/base_object.h +0 -229
  307. package/src/headers/13/connect_wrap.h +0 -26
  308. package/src/headers/13/connection_wrap.h +0 -30
  309. package/src/headers/13/debug_utils-inl.h +0 -223
  310. package/src/headers/13/diagnosticfilename-inl.h +0 -33
  311. package/src/headers/13/env-inl.h +0 -1293
  312. package/src/headers/13/env.h +0 -1469
  313. package/src/headers/13/handle_wrap.h +0 -117
  314. package/src/headers/13/histogram-inl.h +0 -83
  315. package/src/headers/13/histogram.h +0 -98
  316. package/src/headers/13/inspector_io.h +0 -78
  317. package/src/headers/13/inspector_socket.h +0 -60
  318. package/src/headers/13/inspector_socket_server.h +0 -110
  319. package/src/headers/13/js_native_api.h +0 -541
  320. package/src/headers/13/js_native_api_v8.h +0 -303
  321. package/src/headers/13/js_native_api_v8_internals.h +0 -38
  322. package/src/headers/13/js_stream.h +0 -52
  323. package/src/headers/13/json_utils.h +0 -160
  324. package/src/headers/13/node_api.h +0 -239
  325. package/src/headers/13/node_api_types.h +0 -44
  326. package/src/headers/13/node_binding.h +0 -99
  327. package/src/headers/13/node_context_data.h +0 -39
  328. package/src/headers/13/node_contextify.h +0 -161
  329. package/src/headers/13/node_crypto.h +0 -800
  330. package/src/headers/13/node_crypto_common.h +0 -138
  331. package/src/headers/13/node_crypto_groups.h +0 -415
  332. package/src/headers/13/node_dir.h +0 -52
  333. package/src/headers/13/node_dtrace.h +0 -86
  334. package/src/headers/13/node_errors.h +0 -210
  335. package/src/headers/13/node_file.h +0 -364
  336. package/src/headers/13/node_http2_state.h +0 -144
  337. package/src/headers/13/node_internals.h +0 -405
  338. package/src/headers/13/node_mem-inl.h +0 -112
  339. package/src/headers/13/node_mem.h +0 -41
  340. package/src/headers/13/node_metadata.h +0 -109
  341. package/src/headers/13/node_mutex.h +0 -247
  342. package/src/headers/13/node_native_module.h +0 -99
  343. package/src/headers/13/node_object_wrap.h +0 -132
  344. package/src/headers/13/node_perf.h +0 -181
  345. package/src/headers/13/node_perf_common.h +0 -97
  346. package/src/headers/13/node_platform.h +0 -190
  347. package/src/headers/13/node_process.h +0 -41
  348. package/src/headers/13/node_root_certs.h +0 -3424
  349. package/src/headers/13/node_sockaddr-inl.h +0 -170
  350. package/src/headers/13/node_sockaddr.h +0 -123
  351. package/src/headers/13/node_stat_watcher.h +0 -66
  352. package/src/headers/13/node_union_bytes.h +0 -103
  353. package/src/headers/13/node_v8_platform-inl.h +0 -184
  354. package/src/headers/13/node_wasi.h +0 -108
  355. package/src/headers/13/node_win32_etw_provider-inl.h +0 -287
  356. package/src/headers/13/node_win32_etw_provider.h +0 -99
  357. package/src/headers/13/pipe_wrap.h +0 -78
  358. package/src/headers/13/req_wrap-inl.h +0 -170
  359. package/src/headers/13/req_wrap.h +0 -77
  360. package/src/headers/13/spawn_sync.h +0 -242
  361. package/src/headers/13/stream_wrap.h +0 -130
  362. package/src/headers/13/string_decoder-inl.h +0 -37
  363. package/src/headers/13/string_decoder.h +0 -50
  364. package/src/headers/13/tcp_wrap.h +0 -101
  365. package/src/headers/13/threadpoolwork-inl.h +0 -57
  366. package/src/headers/13/tracing/node_trace_buffer.h +0 -83
  367. package/src/headers/13/tracing/node_trace_writer.h +0 -75
  368. package/src/headers/13/tracing/trace_event_common.h +0 -1109
  369. package/src/headers/13/tracing/traced_value.h +0 -70
  370. package/src/headers/13/v8abbr.h +0 -124
@@ -1,50 +1,12 @@
1
- #ifndef SRC_BASE64_H_
2
- #define SRC_BASE64_H_
1
+ #ifndef SRC_BASE64_INL_H_
2
+ #define SRC_BASE64_INL_H_
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
+ #include "base64.h"
6
7
  #include "util.h"
7
8
 
8
- #include <cstddef>
9
- #include <cstdint>
10
-
11
9
  namespace node {
12
- //// Base 64 ////
13
- static inline constexpr size_t base64_encoded_size(size_t size) {
14
- return ((size + 2 - ((size + 2) % 3)) / 3 * 4);
15
- }
16
-
17
- // Doesn't check for padding at the end. Can be 1-2 bytes over.
18
- static inline size_t base64_decoded_size_fast(size_t size) {
19
- size_t remainder = size % 4;
20
-
21
- size = (size / 4) * 3;
22
- if (remainder) {
23
- if (size == 0 && remainder == 1) {
24
- // special case: 1-byte input cannot be decoded
25
- size = 0;
26
- } else {
27
- // non-padded input, add 1 or 2 extra bytes
28
- size += 1 + (remainder == 3);
29
- }
30
- }
31
-
32
- return size;
33
- }
34
-
35
- template <typename TypeName>
36
- size_t base64_decoded_size(const TypeName* src, size_t size) {
37
- if (size == 0)
38
- return 0;
39
-
40
- if (src[size - 1] == '=')
41
- size--;
42
- if (size > 0 && src[size - 1] == '=')
43
- size--;
44
-
45
- return base64_decoded_size_fast(size);
46
- }
47
-
48
10
 
49
11
  extern const int8_t unbase64_table[256];
50
12
 
@@ -54,27 +16,36 @@ inline static int8_t unbase64(uint8_t x) {
54
16
  }
55
17
 
56
18
 
19
+ inline uint32_t ReadUint32BE(const unsigned char* p) {
20
+ return static_cast<uint32_t>(p[0] << 24U) |
21
+ static_cast<uint32_t>(p[1] << 16U) |
22
+ static_cast<uint32_t>(p[2] << 8U) |
23
+ static_cast<uint32_t>(p[3]);
24
+ }
25
+
26
+ #ifdef _MSC_VER
27
+ #pragma warning(push)
28
+ // MSVC C4003: not enough actual parameters for macro 'identifier'
29
+ #pragma warning(disable : 4003)
30
+ #endif
31
+
57
32
  template <typename TypeName>
58
33
  bool base64_decode_group_slow(char* const dst, const size_t dstlen,
59
34
  const TypeName* const src, const size_t srclen,
60
35
  size_t* const i, size_t* const k) {
61
36
  uint8_t hi;
62
37
  uint8_t lo;
63
- #define V(expr) \
64
- for (;;) { \
65
- const uint8_t c = src[*i]; \
66
- lo = unbase64(c); \
67
- *i += 1; \
68
- if (lo < 64) \
69
- break; /* Legal character. */ \
70
- if (c == '=' || *i >= srclen) \
71
- return false; /* Stop decoding. */ \
72
- } \
73
- expr; \
74
- if (*i >= srclen) \
75
- return false; \
76
- if (*k >= dstlen) \
77
- return false; \
38
+ #define V(expr) \
39
+ for (;;) { \
40
+ const uint8_t c = static_cast<uint8_t>(src[*i]); \
41
+ lo = unbase64(c); \
42
+ *i += 1; \
43
+ if (lo < 64) break; /* Legal character. */ \
44
+ if (c == '=' || *i >= srclen) return false; /* Stop decoding. */ \
45
+ } \
46
+ expr; \
47
+ if (*i >= srclen) return false; \
48
+ if (*k >= dstlen) return false; \
78
49
  hi = lo;
79
50
  V(/* Nothing. */);
80
51
  V(dst[(*k)++] = ((hi & 0x3F) << 2) | ((lo & 0x30) >> 4));
@@ -84,6 +55,9 @@ bool base64_decode_group_slow(char* const dst, const size_t dstlen,
84
55
  return true; // Continue decoding.
85
56
  }
86
57
 
58
+ #ifdef _MSC_VER
59
+ #pragma warning(pop)
60
+ #endif
87
61
 
88
62
  template <typename TypeName>
89
63
  size_t base64_decode_fast(char* const dst, const size_t dstlen,
@@ -95,11 +69,14 @@ size_t base64_decode_fast(char* const dst, const size_t dstlen,
95
69
  size_t i = 0;
96
70
  size_t k = 0;
97
71
  while (i < max_i && k < max_k) {
98
- const uint32_t v =
99
- unbase64(src[i + 0]) << 24 |
100
- unbase64(src[i + 1]) << 16 |
101
- unbase64(src[i + 2]) << 8 |
102
- unbase64(src[i + 3]);
72
+ const unsigned char txt[] = {
73
+ static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 0]))),
74
+ static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 1]))),
75
+ static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 2]))),
76
+ static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 3]))),
77
+ };
78
+
79
+ const uint32_t v = ReadUint32BE(txt);
103
80
  // If MSB is set, input contains whitespace or is not valid base64.
104
81
  if (v & 0x80808080) {
105
82
  if (!base64_decode_group_slow(dst, dstlen, src, srclen, &i, &k))
@@ -120,6 +97,21 @@ size_t base64_decode_fast(char* const dst, const size_t dstlen,
120
97
  }
121
98
 
122
99
 
100
+ template <typename TypeName>
101
+ size_t base64_decoded_size(const TypeName* src, size_t size) {
102
+ // 1-byte input cannot be decoded
103
+ if (size < 2)
104
+ return 0;
105
+
106
+ if (src[size - 1] == '=') {
107
+ size--;
108
+ if (src[size - 1] == '=')
109
+ size--;
110
+ }
111
+ return base64_decoded_size_fast(size);
112
+ }
113
+
114
+
123
115
  template <typename TypeName>
124
116
  size_t base64_decode(char* const dst, const size_t dstlen,
125
117
  const TypeName* const src, const size_t srclen) {
@@ -127,15 +119,17 @@ size_t base64_decode(char* const dst, const size_t dstlen,
127
119
  return base64_decode_fast(dst, dstlen, src, srclen, decoded_size);
128
120
  }
129
121
 
130
- static size_t base64_encode(const char* src,
122
+
123
+ inline size_t base64_encode(const char* src,
131
124
  size_t slen,
132
125
  char* dst,
133
- size_t dlen) {
126
+ size_t dlen,
127
+ Base64Mode mode) {
134
128
  // We know how much we'll write, just make sure that there's space.
135
- CHECK(dlen >= base64_encoded_size(slen) &&
129
+ CHECK(dlen >= base64_encoded_size(slen, mode) &&
136
130
  "not enough space provided for base64 encode");
137
131
 
138
- dlen = base64_encoded_size(slen);
132
+ dlen = base64_encoded_size(slen, mode);
139
133
 
140
134
  unsigned a;
141
135
  unsigned b;
@@ -144,9 +138,7 @@ static size_t base64_encode(const char* src,
144
138
  unsigned k;
145
139
  unsigned n;
146
140
 
147
- static const char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
148
- "abcdefghijklmnopqrstuvwxyz"
149
- "0123456789+/";
141
+ const char* table = base64_select_table(mode);
150
142
 
151
143
  i = 0;
152
144
  k = 0;
@@ -166,32 +158,32 @@ static size_t base64_encode(const char* src,
166
158
  k += 4;
167
159
  }
168
160
 
169
- if (n != slen) {
170
- switch (slen - n) {
171
- case 1:
172
- a = src[i + 0] & 0xff;
173
- dst[k + 0] = table[a >> 2];
174
- dst[k + 1] = table[(a & 3) << 4];
161
+ switch (slen - n) {
162
+ case 1:
163
+ a = src[i + 0] & 0xff;
164
+ dst[k + 0] = table[a >> 2];
165
+ dst[k + 1] = table[(a & 3) << 4];
166
+ if (mode == Base64Mode::NORMAL) {
175
167
  dst[k + 2] = '=';
176
168
  dst[k + 3] = '=';
177
- break;
178
-
179
- case 2:
180
- a = src[i + 0] & 0xff;
181
- b = src[i + 1] & 0xff;
182
- dst[k + 0] = table[a >> 2];
183
- dst[k + 1] = table[((a & 3) << 4) | (b >> 4)];
184
- dst[k + 2] = table[(b & 0x0f) << 2];
169
+ }
170
+ break;
171
+ case 2:
172
+ a = src[i + 0] & 0xff;
173
+ b = src[i + 1] & 0xff;
174
+ dst[k + 0] = table[a >> 2];
175
+ dst[k + 1] = table[((a & 3) << 4) | (b >> 4)];
176
+ dst[k + 2] = table[(b & 0x0f) << 2];
177
+ if (mode == Base64Mode::NORMAL)
185
178
  dst[k + 3] = '=';
186
- break;
187
- }
179
+ break;
188
180
  }
189
181
 
190
182
  return dlen;
191
183
  }
192
- } // namespace node
193
184
 
185
+ } // namespace node
194
186
 
195
187
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
196
188
 
197
- #endif // SRC_BASE64_H_
189
+ #endif // SRC_BASE64_INL_H_
@@ -0,0 +1,69 @@
1
+ #ifndef SRC_BASE64_H_
2
+ #define SRC_BASE64_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "util.h"
7
+
8
+ #include <cmath>
9
+ #include <cstddef>
10
+ #include <cstdint>
11
+
12
+ namespace node {
13
+ //// Base 64 ////
14
+
15
+ enum class Base64Mode {
16
+ NORMAL,
17
+ URL
18
+ };
19
+
20
+ static constexpr char base64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
21
+ "abcdefghijklmnopqrstuvwxyz"
22
+ "0123456789+/";
23
+
24
+ static constexpr char base64_table_url[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
25
+ "abcdefghijklmnopqrstuvwxyz"
26
+ "0123456789-_";
27
+
28
+ static inline const char* base64_select_table(Base64Mode mode) {
29
+ switch (mode) {
30
+ case Base64Mode::NORMAL: return base64_table;
31
+ case Base64Mode::URL: return base64_table_url;
32
+ default: UNREACHABLE();
33
+ }
34
+ }
35
+
36
+ static inline constexpr size_t base64_encoded_size(
37
+ size_t size,
38
+ Base64Mode mode = Base64Mode::NORMAL) {
39
+ return mode == Base64Mode::NORMAL ? ((size + 2) / 3 * 4)
40
+ : static_cast<size_t>(std::ceil(
41
+ static_cast<double>(size * 4) / 3));
42
+ }
43
+
44
+ // Doesn't check for padding at the end. Can be 1-2 bytes over.
45
+ static inline constexpr size_t base64_decoded_size_fast(size_t size) {
46
+ // 1-byte input cannot be decoded
47
+ return size > 1 ? (size / 4) * 3 + (size % 4 + 1) / 2 : 0;
48
+ }
49
+
50
+ inline uint32_t ReadUint32BE(const unsigned char* p);
51
+
52
+ template <typename TypeName>
53
+ size_t base64_decoded_size(const TypeName* src, size_t size);
54
+
55
+ template <typename TypeName>
56
+ size_t base64_decode(char* const dst, const size_t dstlen,
57
+ const TypeName* const src, const size_t srclen);
58
+
59
+ inline size_t base64_encode(const char* src,
60
+ size_t slen,
61
+ char* dst,
62
+ size_t dlen,
63
+ Base64Mode mode = Base64Mode::NORMAL);
64
+ } // namespace node
65
+
66
+
67
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
68
+
69
+ #endif // SRC_BASE64_H_
@@ -28,14 +28,7 @@
28
28
  #include "env-inl.h"
29
29
  #include "util.h"
30
30
 
31
- #if (__GNUC__ >= 8) && !defined(__clang__)
32
- #pragma GCC diagnostic push
33
- #pragma GCC diagnostic ignored "-Wcast-function-type"
34
- #endif
35
31
  #include "v8.h"
36
- #if (__GNUC__ >= 8) && !defined(__clang__)
37
- #pragma GCC diagnostic pop
38
- #endif
39
32
 
40
33
  namespace node {
41
34
 
@@ -90,7 +83,8 @@ v8::Local<v8::Object> BaseObject::object() const {
90
83
  v8::Local<v8::Object> BaseObject::object(v8::Isolate* isolate) const {
91
84
  v8::Local<v8::Object> handle = object();
92
85
 
93
- DCHECK_EQ(handle->CreationContext()->GetIsolate(), isolate);
86
+ DCHECK_EQ(handle->GetCreationContext().ToLocalChecked()->GetIsolate(),
87
+ isolate);
94
88
  DCHECK_EQ(env()->isolate(), isolate);
95
89
 
96
90
  return handle;
@@ -100,15 +94,16 @@ Environment* BaseObject::env() const {
100
94
  return env_;
101
95
  }
102
96
 
103
- BaseObject* BaseObject::FromJSObject(v8::Local<v8::Object> obj) {
104
- CHECK_GT(obj->InternalFieldCount(), 0);
97
+ BaseObject* BaseObject::FromJSObject(v8::Local<v8::Value> value) {
98
+ v8::Local<v8::Object> obj = value.As<v8::Object>();
99
+ DCHECK_GE(obj->InternalFieldCount(), BaseObject::kSlot);
105
100
  return static_cast<BaseObject*>(
106
101
  obj->GetAlignedPointerFromInternalField(BaseObject::kSlot));
107
102
  }
108
103
 
109
104
 
110
105
  template <typename T>
111
- T* BaseObject::FromJSObject(v8::Local<v8::Object> object) {
106
+ T* BaseObject::FromJSObject(v8::Local<v8::Value> object) {
112
107
  return static_cast<T*>(FromJSObject(object));
113
108
  }
114
109
 
@@ -145,16 +140,26 @@ void BaseObject::ClearWeak() {
145
140
  persistent_handle_.ClearWeak();
146
141
  }
147
142
 
143
+ bool BaseObject::IsWeakOrDetached() const {
144
+ if (persistent_handle_.IsWeak()) return true;
145
+
146
+ if (!has_pointer_data()) return false;
147
+ const PointerData* pd = const_cast<BaseObject*>(this)->pointer_data();
148
+ return pd->wants_weak_jsobj || pd->is_detached;
149
+ }
150
+
151
+ void BaseObject::LazilyInitializedJSTemplateConstructor(
152
+ const v8::FunctionCallbackInfo<v8::Value>& args) {
153
+ DCHECK(args.IsConstructCall());
154
+ DCHECK_GT(args.This()->InternalFieldCount(), 0);
155
+ args.This()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr);
156
+ }
148
157
 
149
158
  v8::Local<v8::FunctionTemplate>
150
159
  BaseObject::MakeLazilyInitializedJSTemplate(Environment* env) {
151
- auto constructor = [](const v8::FunctionCallbackInfo<v8::Value>& args) {
152
- DCHECK(args.IsConstructCall());
153
- DCHECK_GT(args.This()->InternalFieldCount(), 0);
154
- args.This()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr);
155
- };
156
-
157
- v8::Local<v8::FunctionTemplate> t = env->NewFunctionTemplate(constructor);
160
+ v8::Local<v8::FunctionTemplate> t =
161
+ env->NewFunctionTemplate(LazilyInitializedJSTemplateConstructor);
162
+ t->Inherit(BaseObject::GetConstructorTemplate(env));
158
163
  t->InstanceTemplate()->SetInternalFieldCount(
159
164
  BaseObject::kInternalFieldCount);
160
165
  return t;
@@ -198,7 +203,7 @@ void BaseObject::decrease_refcount() {
198
203
  unsigned int new_refcount = --metadata->strong_ptr_count;
199
204
  if (new_refcount == 0) {
200
205
  if (metadata->is_detached) {
201
- delete this;
206
+ OnGCCollect();
202
207
  } else if (metadata->wants_weak_jsobj && !persistent_handle_.IsEmpty()) {
203
208
  MakeWeak();
204
209
  }
@@ -216,20 +221,22 @@ BaseObject::PointerData*
216
221
  BaseObjectPtrImpl<T, kIsWeak>::pointer_data() const {
217
222
  if (kIsWeak) {
218
223
  return data_.pointer_data;
219
- } else {
220
- if (get_base_object() == nullptr) return nullptr;
221
- return get_base_object()->pointer_data();
222
224
  }
225
+ if (get_base_object() == nullptr) {
226
+ return nullptr;
227
+ }
228
+ return get_base_object()->pointer_data();
223
229
  }
224
230
 
225
231
  template <typename T, bool kIsWeak>
226
232
  BaseObject* BaseObjectPtrImpl<T, kIsWeak>::get_base_object() const {
227
233
  if (kIsWeak) {
228
- if (pointer_data() == nullptr) return nullptr;
234
+ if (pointer_data() == nullptr) {
235
+ return nullptr;
236
+ }
229
237
  return pointer_data()->self;
230
- } else {
231
- return data_.target;
232
238
  }
239
+ return data_.target;
233
240
  }
234
241
 
235
242
  template <typename T, bool kIsWeak>
@@ -334,6 +341,20 @@ BaseObjectPtrImpl<T, kIsWeak>::operator bool() const {
334
341
  return get() != nullptr;
335
342
  }
336
343
 
344
+ template <typename T, bool kIsWeak>
345
+ template <typename U, bool kW>
346
+ bool BaseObjectPtrImpl<T, kIsWeak>::operator ==(
347
+ const BaseObjectPtrImpl<U, kW>& other) const {
348
+ return get() == other.get();
349
+ }
350
+
351
+ template <typename T, bool kIsWeak>
352
+ template <typename U, bool kW>
353
+ bool BaseObjectPtrImpl<T, kIsWeak>::operator !=(
354
+ const BaseObjectPtrImpl<U, kW>& other) const {
355
+ return get() != other.get();
356
+ }
357
+
337
358
  template <typename T, typename... Args>
338
359
  BaseObjectPtr<T> MakeBaseObject(Args&&... args) {
339
360
  return BaseObjectPtr<T>(new T(std::forward<Args>(args)...));
@@ -24,9 +24,9 @@
24
24
 
25
25
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
26
26
 
27
+ #include <type_traits> // std::remove_reference
27
28
  #include "memory_tracker.h"
28
29
  #include "v8.h"
29
- #include <type_traits> // std::remove_reference
30
30
 
31
31
  namespace node {
32
32
 
@@ -34,6 +34,10 @@ class Environment;
34
34
  template <typename T, bool kIsWeak>
35
35
  class BaseObjectPtrImpl;
36
36
 
37
+ namespace worker {
38
+ class TransferData;
39
+ }
40
+
37
41
  class BaseObject : public MemoryRetainer {
38
42
  public:
39
43
  enum InternalFields { kSlot, kInternalFieldCount };
@@ -61,9 +65,11 @@ class BaseObject : public MemoryRetainer {
61
65
  // was also passed to the `BaseObject()` constructor initially.
62
66
  // This may return `nullptr` if the C++ object has not been constructed yet,
63
67
  // e.g. when the JS object used `MakeLazilyInitializedJSTemplate`.
64
- static inline BaseObject* FromJSObject(v8::Local<v8::Object> object);
68
+ static inline void LazilyInitializedJSTemplateConstructor(
69
+ const v8::FunctionCallbackInfo<v8::Value>& args);
70
+ static inline BaseObject* FromJSObject(v8::Local<v8::Value> object);
65
71
  template <typename T>
66
- static inline T* FromJSObject(v8::Local<v8::Object> object);
72
+ static inline T* FromJSObject(v8::Local<v8::Value> object);
67
73
 
68
74
  // Make the `v8::Global` a weak reference and, `delete` this object once
69
75
  // the JS object has been garbage collected and there are no (strong)
@@ -74,6 +80,11 @@ class BaseObject : public MemoryRetainer {
74
80
  // root and will not be touched by the garbage collector.
75
81
  inline void ClearWeak();
76
82
 
83
+ // Reports whether this BaseObject is using a weak reference or detached,
84
+ // i.e. whether is can be deleted by GC once no strong BaseObjectPtrs refer
85
+ // to it anymore.
86
+ inline bool IsWeakOrDetached() const;
87
+
77
88
  // Utility to create a FunctionTemplate with one internal field (used for
78
89
  // the `BaseObject*` pointer) and a constructor that initializes that field
79
90
  // to `nullptr`.
@@ -84,7 +95,7 @@ class BaseObject : public MemoryRetainer {
84
95
  template <int Field>
85
96
  static void InternalFieldGet(v8::Local<v8::String> property,
86
97
  const v8::PropertyCallbackInfo<v8::Value>& info);
87
- template <int Field, bool (v8::Value::* typecheck)() const>
98
+ template <int Field, bool (v8::Value::*typecheck)() const>
88
99
  static void InternalFieldSet(v8::Local<v8::String> property,
89
100
  v8::Local<v8::Value> value,
90
101
  const v8::PropertyCallbackInfo<void>& info);
@@ -92,24 +103,75 @@ class BaseObject : public MemoryRetainer {
92
103
  // This is a bit of a hack. See the override in async_wrap.cc for details.
93
104
  virtual bool IsDoneInitializing() const;
94
105
 
95
- // Can be used to avoid this object keepling itself alive as a GC root
106
+ // Can be used to avoid this object keeping itself alive as a GC root
96
107
  // indefinitely, for example when this object is owned and deleted by another
97
108
  // BaseObject once that is torn down. This can only be called when there is
98
109
  // a BaseObjectPtr to this object.
99
110
  inline void Detach();
100
111
 
101
- protected:
112
+ static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
113
+ Environment* env);
114
+
115
+ // Interface for transferring BaseObject instances using the .postMessage()
116
+ // method of MessagePorts (and, by extension, Workers).
117
+ // GetTransferMode() returns a transfer mode that indicates how to deal with
118
+ // the current object:
119
+ // - kUntransferable:
120
+ // No transfer is possible, either because this type of BaseObject does
121
+ // not know how to be transferred, or because it is not in a state in
122
+ // which it is possible to do so (e.g. because it has already been
123
+ // transferred).
124
+ // - kTransferable:
125
+ // This object can be transferred in a destructive fashion, i.e. will be
126
+ // rendered unusable on the sending side of the channel in the process
127
+ // of being transferred. (In C++ this would be referred to as movable but
128
+ // not copyable.) Objects of this type need to be listed in the
129
+ // `transferList` argument of the relevant postMessage() call in order to
130
+ // make sure that they are not accidentally destroyed on the sending side.
131
+ // TransferForMessaging() will be called to get a representation of the
132
+ // object that is used for subsequent deserialization.
133
+ // The NestedTransferables() method can be used to transfer other objects
134
+ // along with this one, if a situation requires it.
135
+ // - kCloneable:
136
+ // This object can be cloned without being modified.
137
+ // CloneForMessaging() will be called to get a representation of the
138
+ // object that is used for subsequent deserialization, unless the
139
+ // object is listed in transferList, in which case TransferForMessaging()
140
+ // is attempted first.
141
+ // After a successful clone, FinalizeTransferRead() is called on the receiving
142
+ // end, and can read deserialize JS data possibly serialized by a previous
143
+ // FinalizeTransferWrite() call.
144
+ enum class TransferMode {
145
+ kUntransferable,
146
+ kTransferable,
147
+ kCloneable
148
+ };
149
+ virtual TransferMode GetTransferMode() const;
150
+ virtual std::unique_ptr<worker::TransferData> TransferForMessaging();
151
+ virtual std::unique_ptr<worker::TransferData> CloneForMessaging() const;
152
+ virtual v8::Maybe<std::vector<BaseObjectPtrImpl<BaseObject, false>>>
153
+ NestedTransferables() const;
154
+ virtual v8::Maybe<bool> FinalizeTransferRead(
155
+ v8::Local<v8::Context> context, v8::ValueDeserializer* deserializer);
156
+
157
+ // Indicates whether this object is expected to use a strong reference during
158
+ // a clean process exit (due to an empty event loop).
159
+ virtual bool IsNotIndicativeOfMemoryLeakAtExit() const;
160
+
102
161
  virtual inline void OnGCCollect();
103
162
 
163
+ virtual inline bool is_snapshotable() const { return false; }
164
+
104
165
  private:
105
166
  v8::Local<v8::Object> WrappedObject() const override;
167
+ bool IsRootNode() const override;
106
168
  static void DeleteMe(void* data);
107
169
 
108
170
  // persistent_handle_ needs to be at a fixed offset from the start of the
109
171
  // class because it is used by src/node_postmortem_metadata.cc to calculate
110
172
  // offsets and generate debug symbols for BaseObject, which assumes that the
111
173
  // position of members in memory are predictable. For more information please
112
- // refer to `doc/guides/node-postmortem-support.md`
174
+ // refer to `doc/contributing/node-postmortem-support.md`
113
175
  friend int GenDebugSymbols();
114
176
  friend class CleanupHookCallback;
115
177
  template <typename T, bool kIsWeak>
@@ -131,7 +193,7 @@ class BaseObject : public MemoryRetainer {
131
193
  // Indicates whether MakeWeak() has been called.
132
194
  bool wants_weak_jsobj = false;
133
195
  // Indicates whether Detach() has been called. If that is the case, this
134
- // object will be destryoed once the strong pointer count drops to zero.
196
+ // object will be destroyed once the strong pointer count drops to zero.
135
197
  bool is_detached = false;
136
198
  // Reference to the original BaseObject. This is used by weak pointers.
137
199
  BaseObject* self = nullptr;
@@ -152,17 +214,15 @@ class BaseObject : public MemoryRetainer {
152
214
 
153
215
  // Global alias for FromJSObject() to avoid churn.
154
216
  template <typename T>
155
- inline T* Unwrap(v8::Local<v8::Object> obj) {
217
+ inline T* Unwrap(v8::Local<v8::Value> obj) {
156
218
  return BaseObject::FromJSObject<T>(obj);
157
219
  }
158
220
 
159
-
160
- #define ASSIGN_OR_RETURN_UNWRAP(ptr, obj, ...) \
161
- do { \
162
- *ptr = static_cast<typename std::remove_reference<decltype(*ptr)>::type>( \
163
- BaseObject::FromJSObject(obj)); \
164
- if (*ptr == nullptr) \
165
- return __VA_ARGS__; \
221
+ #define ASSIGN_OR_RETURN_UNWRAP(ptr, obj, ...) \
222
+ do { \
223
+ *ptr = static_cast<typename std::remove_reference<decltype(*ptr)>::type>( \
224
+ BaseObject::FromJSObject(obj)); \
225
+ if (*ptr == nullptr) return __VA_ARGS__; \
166
226
  } while (0)
167
227
 
168
228
  // Implementation of a generic strong or weak pointer to a BaseObject.
@@ -196,9 +256,14 @@ class BaseObjectPtrImpl final {
196
256
  inline T* operator->() const;
197
257
  inline operator bool() const;
198
258
 
259
+ template <typename U, bool kW>
260
+ inline bool operator ==(const BaseObjectPtrImpl<U, kW>& other) const;
261
+ template <typename U, bool kW>
262
+ inline bool operator !=(const BaseObjectPtrImpl<U, kW>& other) const;
263
+
199
264
  private:
200
265
  union {
201
- BaseObject* target; // Used for strong pointers.
266
+ BaseObject* target; // Used for strong pointers.
202
267
  BaseObject::PointerData* pointer_data; // Used for weak pointers.
203
268
  } data_;
204
269
 
@@ -10,8 +10,8 @@ namespace node {
10
10
  template <typename R, typename... Args>
11
11
  template <typename Fn>
12
12
  std::unique_ptr<typename CallbackQueue<R, Args...>::Callback>
13
- CallbackQueue<R, Args...>::CreateCallback(Fn&& fn, bool refed) {
14
- return std::make_unique<CallbackImpl<Fn>>(std::move(fn), refed);
13
+ CallbackQueue<R, Args...>::CreateCallback(Fn&& fn, CallbackFlags::Flags flags) {
14
+ return std::make_unique<CallbackImpl<Fn>>(std::move(fn), flags);
15
15
  }
16
16
 
17
17
  template <typename R, typename... Args>
@@ -22,8 +22,8 @@ CallbackQueue<R, Args...>::Shift() {
22
22
  head_ = ret->get_next();
23
23
  if (!head_)
24
24
  tail_ = nullptr; // The queue is now empty.
25
+ size_--;
25
26
  }
26
- size_--;
27
27
  return ret;
28
28
  }
29
29
 
@@ -57,12 +57,12 @@ size_t CallbackQueue<R, Args...>::size() const {
57
57
  }
58
58
 
59
59
  template <typename R, typename... Args>
60
- CallbackQueue<R, Args...>::Callback::Callback(bool refed)
61
- : refed_(refed) {}
60
+ CallbackQueue<R, Args...>::Callback::Callback(CallbackFlags::Flags flags)
61
+ : flags_(flags) {}
62
62
 
63
63
  template <typename R, typename... Args>
64
- bool CallbackQueue<R, Args...>::Callback::is_refed() const {
65
- return refed_;
64
+ CallbackFlags::Flags CallbackQueue<R, Args...>::Callback::flags() const {
65
+ return flags_;
66
66
  }
67
67
 
68
68
  template <typename R, typename... Args>
@@ -80,8 +80,8 @@ void CallbackQueue<R, Args...>::Callback::set_next(
80
80
  template <typename R, typename... Args>
81
81
  template <typename Fn>
82
82
  CallbackQueue<R, Args...>::CallbackImpl<Fn>::CallbackImpl(
83
- Fn&& callback, bool refed)
84
- : Callback(refed),
83
+ Fn&& callback, CallbackFlags::Flags flags)
84
+ : Callback(flags),
85
85
  callback_(std::move(callback)) {}
86
86
 
87
87
  template <typename R, typename... Args>