@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
@@ -5,7 +5,11 @@
5
5
 
6
6
  #include "env.h"
7
7
  #include "node_mutex.h"
8
- #include <list>
8
+ #include "v8.h"
9
+ #include <deque>
10
+ #include <string>
11
+ #include <unordered_map>
12
+ #include <set>
9
13
 
10
14
  namespace node {
11
15
  namespace worker {
@@ -15,6 +19,29 @@ class MessagePort;
15
19
 
16
20
  typedef MaybeStackBuffer<v8::Local<v8::Value>, 8> TransferList;
17
21
 
22
+ // Used to represent the in-flight structure of an object that is being
23
+ // transferred or cloned using postMessage().
24
+ class TransferData : public MemoryRetainer {
25
+ public:
26
+ // Deserialize this object on the receiving end after a .postMessage() call.
27
+ // - `context` may not be the same as `env->context()`. This method should
28
+ // not produce JS objects coming from Contexts other than `context`.
29
+ // - `self` is a unique_ptr for the object that this is being called on.
30
+ // - The return value is treated like a `Maybe`, i.e. if `nullptr` is
31
+ // returned, any further deserialization of the message is stopped and
32
+ // control is returned to the event loop or JS as soon as possible.
33
+ virtual BaseObjectPtr<BaseObject> Deserialize(
34
+ Environment* env,
35
+ v8::Local<v8::Context> context,
36
+ std::unique_ptr<TransferData> self) = 0;
37
+ // FinalizeTransferWrite() is the counterpart to
38
+ // BaseObject::FinalizeTransferRead(). It is called right after the transfer
39
+ // data was created, and defaults to doing nothing. After this function,
40
+ // this object should not hold any more Isolate-specific data.
41
+ virtual v8::Maybe<bool> FinalizeTransferWrite(
42
+ v8::Local<v8::Context> context, v8::ValueSerializer* serializer);
43
+ };
44
+
18
45
  // Represents a single communication message.
19
46
  class Message : public MemoryRetainer {
20
47
  public:
@@ -22,6 +49,7 @@ class Message : public MemoryRetainer {
22
49
  // V8 ValueSerializer API. If `payload` is empty, this message indicates
23
50
  // that the receiving message port should close itself.
24
51
  explicit Message(MallocedBuffer<char>&& payload = MallocedBuffer<char>());
52
+ ~Message() = default;
25
53
 
26
54
  Message(Message&& other) = default;
27
55
  Message& operator=(Message&& other) = default;
@@ -34,8 +62,10 @@ class Message : public MemoryRetainer {
34
62
 
35
63
  // Deserialize the contained JS value. May only be called once, and only
36
64
  // after Serialize() has been called (e.g. by another thread).
37
- v8::MaybeLocal<v8::Value> Deserialize(Environment* env,
38
- v8::Local<v8::Context> context);
65
+ v8::MaybeLocal<v8::Value> Deserialize(
66
+ Environment* env,
67
+ v8::Local<v8::Context> context,
68
+ v8::Local<v8::Value>* port_list = nullptr);
39
69
 
40
70
  // Serialize a JS value, and optionally transfer objects, into this message.
41
71
  // The Message object retains ownership of all transferred objects until
@@ -54,16 +84,20 @@ class Message : public MemoryRetainer {
54
84
  void AddSharedArrayBuffer(std::shared_ptr<v8::BackingStore> backing_store);
55
85
  // Internal method of Message that is called once serialization finishes
56
86
  // and that transfers ownership of `data` to this message.
57
- void AddMessagePort(std::unique_ptr<MessagePortData>&& data);
87
+ void AddTransferable(std::unique_ptr<TransferData>&& data);
58
88
  // Internal method of Message that is called when a new WebAssembly.Module
59
89
  // object is encountered in the incoming value's structure.
60
- uint32_t AddWASMModule(v8::WasmModuleObject::TransferrableModule&& mod);
90
+ uint32_t AddWASMModule(v8::CompiledWasmModule&& mod);
61
91
 
62
- // The MessagePorts that will be transferred, as recorded by Serialize().
92
+ // The host objects that will be transferred, as recorded by Serialize()
93
+ // (e.g. MessagePorts).
63
94
  // Used for warning user about posting the target MessagePort to itself,
64
95
  // which will as a side effect destroy the communication channel.
65
- const std::vector<std::unique_ptr<MessagePortData>>& message_ports() const {
66
- return message_ports_;
96
+ const std::vector<std::unique_ptr<TransferData>>& transferables() const {
97
+ return transferables_;
98
+ }
99
+ bool has_transferables() const {
100
+ return !transferables_.empty() || !array_buffers_.empty();
67
101
  }
68
102
 
69
103
  void MemoryInfo(MemoryTracker* tracker) const override;
@@ -73,17 +107,65 @@ class Message : public MemoryRetainer {
73
107
 
74
108
  private:
75
109
  MallocedBuffer<char> main_message_buf_;
110
+ // TODO(addaleax): Make this a std::variant to save storage size in the common
111
+ // case (which is that all of these vectors are empty) once that is available
112
+ // with C++17.
76
113
  std::vector<std::shared_ptr<v8::BackingStore>> array_buffers_;
77
114
  std::vector<std::shared_ptr<v8::BackingStore>> shared_array_buffers_;
78
- std::vector<std::unique_ptr<MessagePortData>> message_ports_;
79
- std::vector<v8::WasmModuleObject::TransferrableModule> wasm_modules_;
115
+ std::vector<std::unique_ptr<TransferData>> transferables_;
116
+ std::vector<v8::CompiledWasmModule> wasm_modules_;
80
117
 
81
118
  friend class MessagePort;
82
119
  };
83
120
 
121
+ class SiblingGroup final : public std::enable_shared_from_this<SiblingGroup> {
122
+ public:
123
+ // Named SiblingGroup, Used for one-to-many BroadcastChannels.
124
+ static std::shared_ptr<SiblingGroup> Get(const std::string& name);
125
+
126
+ // Anonymous SiblingGroup, Used for one-to-one MessagePort pairs.
127
+ SiblingGroup() = default;
128
+ explicit SiblingGroup(const std::string& name);
129
+ ~SiblingGroup();
130
+
131
+ // Dispatches the Message to the collection of associated
132
+ // ports. If there is more than one destination port and
133
+ // the Message contains transferables, Dispatch will fail.
134
+ // Returns Just(true) if successful and the message was
135
+ // dispatched to at least one destination. Returns Just(false)
136
+ // if there were no destinations. Returns Nothing<bool>()
137
+ // if there was an error. If error is not nullptr, it will
138
+ // be set to an error message or warning message as appropriate.
139
+ v8::Maybe<bool> Dispatch(
140
+ MessagePortData* source,
141
+ std::shared_ptr<Message> message,
142
+ std::string* error = nullptr);
143
+
144
+ void Entangle(MessagePortData* data);
145
+ void Entangle(std::initializer_list<MessagePortData*> data);
146
+ void Disentangle(MessagePortData* data);
147
+
148
+ const std::string& name() const { return name_; }
149
+
150
+ size_t size() const { return ports_.size(); }
151
+
152
+ private:
153
+ const std::string name_;
154
+ RwLock group_mutex_; // Protects ports_.
155
+ std::set<MessagePortData*> ports_;
156
+
157
+ static void CheckSiblingGroup(const std::string& name);
158
+
159
+ using Map =
160
+ std::unordered_map<std::string, std::weak_ptr<SiblingGroup>>;
161
+
162
+ static Mutex groups_mutex_;
163
+ static Map groups_;
164
+ };
165
+
84
166
  // This contains all data for a `MessagePort` instance that is not tied to
85
167
  // a specific Environment/Isolate/event loop, for easier transfer between those.
86
- class MessagePortData : public MemoryRetainer {
168
+ class MessagePortData : public TransferData {
87
169
  public:
88
170
  explicit MessagePortData(MessagePort* owner);
89
171
  ~MessagePortData() override;
@@ -95,7 +177,10 @@ class MessagePortData : public MemoryRetainer {
95
177
 
96
178
  // Add a message to the incoming queue and notify the receiver.
97
179
  // This may be called from any thread.
98
- void AddToIncomingQueue(Message&& message);
180
+ void AddToIncomingQueue(std::shared_ptr<Message> message);
181
+ v8::Maybe<bool> Dispatch(
182
+ std::shared_ptr<Message> message,
183
+ std::string* error = nullptr);
99
184
 
100
185
  // Turns `a` and `b` into siblings, i.e. connects the sending side of one
101
186
  // to the receiving side of the other. This is not thread-safe.
@@ -108,6 +193,10 @@ class MessagePortData : public MemoryRetainer {
108
193
  void Disentangle();
109
194
 
110
195
  void MemoryInfo(MemoryTracker* tracker) const override;
196
+ BaseObjectPtr<BaseObject> Deserialize(
197
+ Environment* env,
198
+ v8::Local<v8::Context> context,
199
+ std::unique_ptr<TransferData> self) override;
111
200
 
112
201
  SET_MEMORY_INFO_NAME(MessagePortData)
113
202
  SET_SELF_SIZE(MessagePortData)
@@ -116,15 +205,14 @@ class MessagePortData : public MemoryRetainer {
116
205
  // This mutex protects all fields below it, with the exception of
117
206
  // sibling_.
118
207
  mutable Mutex mutex_;
119
- std::list<Message> incoming_messages_;
208
+ // TODO(addaleax): Make this a std::variant<std::shared_ptr, std::unique_ptr>
209
+ // once that is available with C++17, because std::shared_ptr comes with
210
+ // overhead that is only necessary for BroadcastChannel.
211
+ std::deque<std::shared_ptr<Message>> incoming_messages_;
120
212
  MessagePort* owner_ = nullptr;
121
- // This mutex protects the sibling_ field and is shared between two entangled
122
- // MessagePorts. If both mutexes are acquired, this one needs to be
123
- // acquired first.
124
- std::shared_ptr<Mutex> sibling_mutex_ = std::make_shared<Mutex>();
125
- MessagePortData* sibling_ = nullptr;
126
-
213
+ std::shared_ptr<SiblingGroup> group_;
127
214
  friend class MessagePort;
215
+ friend class SiblingGroup;
128
216
  };
129
217
 
130
218
  // A message port that receives messages from other threads, including
@@ -147,12 +235,14 @@ class MessagePort : public HandleWrap {
147
235
  // `MessagePortData` object.
148
236
  static MessagePort* New(Environment* env,
149
237
  v8::Local<v8::Context> context,
150
- std::unique_ptr<MessagePortData> data = nullptr);
238
+ std::unique_ptr<MessagePortData> data = {},
239
+ std::shared_ptr<SiblingGroup> sibling_group = {});
151
240
 
152
241
  // Send a message, i.e. deliver it into the sibling's incoming queue.
153
242
  // If this port is closed, or if there is no sibling, this message is
154
243
  // serialized with transfers, then silently discarded.
155
244
  v8::Maybe<bool> PostMessage(Environment* env,
245
+ v8::Local<v8::Context> context,
156
246
  v8::Local<v8::Value> message,
157
247
  const TransferList& transfer);
158
248
 
@@ -167,6 +257,7 @@ class MessagePort : public HandleWrap {
167
257
  static void PostMessage(const v8::FunctionCallbackInfo<v8::Value>& args);
168
258
  static void Start(const v8::FunctionCallbackInfo<v8::Value>& args);
169
259
  static void Stop(const v8::FunctionCallbackInfo<v8::Value>& args);
260
+ static void CheckType(const v8::FunctionCallbackInfo<v8::Value>& args);
170
261
  static void Drain(const v8::FunctionCallbackInfo<v8::Value>& args);
171
262
  static void ReceiveMessage(const v8::FunctionCallbackInfo<v8::Value>& args);
172
263
 
@@ -195,16 +286,26 @@ class MessagePort : public HandleWrap {
195
286
  // NULL pointer to the C++ MessagePort object is also detached.
196
287
  inline bool IsDetached() const;
197
288
 
289
+ TransferMode GetTransferMode() const override;
290
+ std::unique_ptr<TransferData> TransferForMessaging() override;
291
+
198
292
  void MemoryInfo(MemoryTracker* tracker) const override;
199
293
  SET_MEMORY_INFO_NAME(MessagePort)
200
294
  SET_SELF_SIZE(MessagePort)
201
295
 
202
296
  private:
297
+ enum class MessageProcessingMode {
298
+ kNormalOperation,
299
+ kForceReadMessages
300
+ };
301
+
203
302
  void OnClose() override;
204
- void OnMessage();
303
+ void OnMessage(MessageProcessingMode mode);
205
304
  void TriggerAsync();
206
- v8::MaybeLocal<v8::Value> ReceiveMessage(v8::Local<v8::Context> context,
207
- bool only_if_receiving);
305
+ v8::MaybeLocal<v8::Value> ReceiveMessage(
306
+ v8::Local<v8::Context> context,
307
+ MessageProcessingMode mode,
308
+ v8::Local<v8::Value>* port_list = nullptr);
208
309
 
209
310
  std::unique_ptr<MessagePortData> data_ = nullptr;
210
311
  bool receiving_messages_ = false;
@@ -214,6 +315,52 @@ class MessagePort : public HandleWrap {
214
315
  friend class MessagePortData;
215
316
  };
216
317
 
318
+ // Provide a base class from which JS classes that should be transferable or
319
+ // cloneable by postMesssage() can inherit.
320
+ // See e.g. FileHandle in internal/fs/promises.js for an example.
321
+ class JSTransferable : public BaseObject {
322
+ public:
323
+ JSTransferable(Environment* env, v8::Local<v8::Object> obj);
324
+ static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
325
+
326
+ TransferMode GetTransferMode() const override;
327
+ std::unique_ptr<TransferData> TransferForMessaging() override;
328
+ std::unique_ptr<TransferData> CloneForMessaging() const override;
329
+ v8::Maybe<std::vector<BaseObjectPtr<BaseObject>>>
330
+ NestedTransferables() const override;
331
+ v8::Maybe<bool> FinalizeTransferRead(
332
+ v8::Local<v8::Context> context,
333
+ v8::ValueDeserializer* deserializer) override;
334
+
335
+ SET_NO_MEMORY_INFO()
336
+ SET_MEMORY_INFO_NAME(JSTransferable)
337
+ SET_SELF_SIZE(JSTransferable)
338
+
339
+ private:
340
+ std::unique_ptr<TransferData> TransferOrClone(TransferMode mode) const;
341
+
342
+ class Data : public TransferData {
343
+ public:
344
+ Data(std::string&& deserialize_info, v8::Global<v8::Value>&& data);
345
+
346
+ BaseObjectPtr<BaseObject> Deserialize(
347
+ Environment* env,
348
+ v8::Local<v8::Context> context,
349
+ std::unique_ptr<TransferData> self) override;
350
+ v8::Maybe<bool> FinalizeTransferWrite(
351
+ v8::Local<v8::Context> context,
352
+ v8::ValueSerializer* serializer) override;
353
+
354
+ SET_NO_MEMORY_INFO()
355
+ SET_MEMORY_INFO_NAME(JSTransferableTransferData)
356
+ SET_SELF_SIZE(Data)
357
+
358
+ private:
359
+ std::string deserialize_info_;
360
+ v8::Global<v8::Value> data_;
361
+ };
362
+ };
363
+
217
364
  v8::Local<v8::FunctionTemplate> GetMessagePortConstructorTemplate(
218
365
  Environment* env);
219
366
 
@@ -6,6 +6,13 @@
6
6
  #include <string>
7
7
  #include "node_version.h"
8
8
 
9
+ #if HAVE_OPENSSL
10
+ #include <openssl/crypto.h>
11
+ #if NODE_OPENSSL_HAS_QUIC
12
+ #include <openssl/quic.h>
13
+ #endif
14
+ #endif // HAVE_OPENSSL
15
+
9
16
  namespace node {
10
17
 
11
18
  // if this is a release build and no explicit base has been set
@@ -31,7 +38,6 @@ namespace node {
31
38
  V(nghttp2) \
32
39
  V(napi) \
33
40
  V(llhttp) \
34
- V(http_parser) \
35
41
 
36
42
  #if HAVE_OPENSSL
37
43
  #define NODE_VERSIONS_KEY_CRYPTO(V) V(openssl)
@@ -49,10 +55,19 @@ namespace node {
49
55
  #define NODE_VERSIONS_KEY_INTL(V)
50
56
  #endif // NODE_HAVE_I18N_SUPPORT
51
57
 
58
+ #ifdef OPENSSL_INFO_QUIC
59
+ #define NODE_VERSIONS_KEY_QUIC(V) \
60
+ V(ngtcp2) \
61
+ V(nghttp3)
62
+ #else
63
+ #define NODE_VERSIONS_KEY_QUIC(V)
64
+ #endif
65
+
52
66
  #define NODE_VERSIONS_KEYS(V) \
53
67
  NODE_VERSIONS_KEYS_BASE(V) \
54
68
  NODE_VERSIONS_KEY_CRYPTO(V) \
55
- NODE_VERSIONS_KEY_INTL(V)
69
+ NODE_VERSIONS_KEY_INTL(V) \
70
+ NODE_VERSIONS_KEY_QUIC(V)
56
71
 
57
72
  class Metadata {
58
73
  public:
@@ -102,8 +117,6 @@ class Metadata {
102
117
  // Per-process global
103
118
  namespace per_process {
104
119
  extern Metadata metadata;
105
- extern const char* const llhttp_version;
106
- extern const char* const http_parser_version;
107
120
  }
108
121
 
109
122
  } // namespace node
@@ -14,9 +14,11 @@ namespace node {
14
14
  template <typename Traits> class ConditionVariableBase;
15
15
  template <typename Traits> class MutexBase;
16
16
  struct LibuvMutexTraits;
17
+ struct LibuvRwlockTraits;
17
18
 
18
19
  using ConditionVariable = ConditionVariableBase<LibuvMutexTraits>;
19
20
  using Mutex = MutexBase<LibuvMutexTraits>;
21
+ using RwLock = MutexBase<LibuvRwlockTraits>;
20
22
 
21
23
  template <typename T, typename MutexT = Mutex>
22
24
  class ExclusiveAccess {
@@ -32,7 +34,7 @@ class ExclusiveAccess {
32
34
 
33
35
  class Scoped {
34
36
  public:
35
- // ExclusiveAccess will commonly be used in conjuction with std::shared_ptr
37
+ // ExclusiveAccess will commonly be used in conjunction with std::shared_ptr
36
38
  // and without this constructor it's too easy to forget to keep a reference
37
39
  // around to the shared_ptr while operating on the ExclusiveAccess object.
38
40
  explicit Scoped(const std::shared_ptr<ExclusiveAccess>& shared)
@@ -70,6 +72,8 @@ class MutexBase {
70
72
  inline ~MutexBase();
71
73
  inline void Lock();
72
74
  inline void Unlock();
75
+ inline void RdLock();
76
+ inline void RdUnlock();
73
77
 
74
78
  MutexBase(const MutexBase&) = delete;
75
79
  MutexBase& operator=(const MutexBase&) = delete;
@@ -92,6 +96,21 @@ class MutexBase {
92
96
  const MutexBase& mutex_;
93
97
  };
94
98
 
99
+ class ScopedReadLock {
100
+ public:
101
+ inline explicit ScopedReadLock(const MutexBase& mutex);
102
+ inline ~ScopedReadLock();
103
+
104
+ ScopedReadLock(const ScopedReadLock&) = delete;
105
+ ScopedReadLock& operator=(const ScopedReadLock&) = delete;
106
+
107
+ private:
108
+ template <typename> friend class ConditionVariableBase;
109
+ const MutexBase& mutex_;
110
+ };
111
+
112
+ using ScopedWriteLock = ScopedLock;
113
+
95
114
  class ScopedUnlock {
96
115
  public:
97
116
  inline explicit ScopedUnlock(const ScopedLock& scoped_lock);
@@ -167,6 +186,42 @@ struct LibuvMutexTraits {
167
186
  static inline void mutex_unlock(MutexT* mutex) {
168
187
  uv_mutex_unlock(mutex);
169
188
  }
189
+
190
+ static inline void mutex_rdlock(MutexT* mutex) {
191
+ uv_mutex_lock(mutex);
192
+ }
193
+
194
+ static inline void mutex_rdunlock(MutexT* mutex) {
195
+ uv_mutex_unlock(mutex);
196
+ }
197
+ };
198
+
199
+ struct LibuvRwlockTraits {
200
+ using MutexT = uv_rwlock_t;
201
+
202
+ static inline int mutex_init(MutexT* mutex) {
203
+ return uv_rwlock_init(mutex);
204
+ }
205
+
206
+ static inline void mutex_destroy(MutexT* mutex) {
207
+ uv_rwlock_destroy(mutex);
208
+ }
209
+
210
+ static inline void mutex_lock(MutexT* mutex) {
211
+ uv_rwlock_wrlock(mutex);
212
+ }
213
+
214
+ static inline void mutex_unlock(MutexT* mutex) {
215
+ uv_rwlock_wrunlock(mutex);
216
+ }
217
+
218
+ static inline void mutex_rdlock(MutexT* mutex) {
219
+ uv_rwlock_rdlock(mutex);
220
+ }
221
+
222
+ static inline void mutex_rdunlock(MutexT* mutex) {
223
+ uv_rwlock_rdunlock(mutex);
224
+ }
170
225
  };
171
226
 
172
227
  template <typename Traits>
@@ -214,6 +269,16 @@ void MutexBase<Traits>::Unlock() {
214
269
  Traits::mutex_unlock(&mutex_);
215
270
  }
216
271
 
272
+ template <typename Traits>
273
+ void MutexBase<Traits>::RdLock() {
274
+ Traits::mutex_rdlock(&mutex_);
275
+ }
276
+
277
+ template <typename Traits>
278
+ void MutexBase<Traits>::RdUnlock() {
279
+ Traits::mutex_rdunlock(&mutex_);
280
+ }
281
+
217
282
  template <typename Traits>
218
283
  MutexBase<Traits>::ScopedLock::ScopedLock(const MutexBase& mutex)
219
284
  : mutex_(mutex) {
@@ -229,6 +294,17 @@ MutexBase<Traits>::ScopedLock::~ScopedLock() {
229
294
  Traits::mutex_unlock(&mutex_.mutex_);
230
295
  }
231
296
 
297
+ template <typename Traits>
298
+ MutexBase<Traits>::ScopedReadLock::ScopedReadLock(const MutexBase& mutex)
299
+ : mutex_(mutex) {
300
+ Traits::mutex_rdlock(&mutex_.mutex_);
301
+ }
302
+
303
+ template <typename Traits>
304
+ MutexBase<Traits>::ScopedReadLock::~ScopedReadLock() {
305
+ Traits::mutex_rdunlock(&mutex_.mutex_);
306
+ }
307
+
232
308
  template <typename Traits>
233
309
  MutexBase<Traits>::ScopedUnlock::ScopedUnlock(const ScopedLock& scoped_lock)
234
310
  : mutex_(scoped_lock.mutex_) {
@@ -15,6 +15,7 @@
15
15
  class PerProcessTest;
16
16
 
17
17
  namespace node {
18
+ class SnapshotBuilder;
18
19
  namespace native_module {
19
20
 
20
21
  using NativeModuleRecordMap = std::map<std::string, UnionBytes>;
@@ -22,6 +23,11 @@ using NativeModuleCacheMap =
22
23
  std::unordered_map<std::string,
23
24
  std::unique_ptr<v8::ScriptCompiler::CachedData>>;
24
25
 
26
+ struct CodeCacheInfo {
27
+ std::string id;
28
+ std::vector<uint8_t> data;
29
+ };
30
+
25
31
  // The native (C++) side of the NativeModule in JS land, which
26
32
  // handles compilation and caching of builtin modules (NativeModule)
27
33
  // and bootstrappers, whose source are bundled into the binary
@@ -29,7 +35,7 @@ using NativeModuleCacheMap =
29
35
  // This class should not depend on any Environment, or depend on access to
30
36
  // the its own singleton - that should be encapsulated in NativeModuleEnv
31
37
  // instead.
32
- class NativeModuleLoader {
38
+ class NODE_EXTERN_PRIVATE NativeModuleLoader {
33
39
  public:
34
40
  NativeModuleLoader(const NativeModuleLoader&) = delete;
35
41
  NativeModuleLoader& operator=(const NativeModuleLoader&) = delete;
@@ -47,6 +53,8 @@ class NativeModuleLoader {
47
53
  UnionBytes GetConfig(); // Return data for config.gypi
48
54
 
49
55
  bool Exists(const char* id);
56
+ bool Add(const char* id, const UnionBytes& source);
57
+
50
58
  v8::Local<v8::Object> GetSourceObject(v8::Local<v8::Context> context);
51
59
  v8::Local<v8::String> GetConfigString(v8::Isolate* isolate);
52
60
  std::vector<std::string> GetModuleIds();
@@ -64,6 +72,8 @@ class NativeModuleLoader {
64
72
  bool CannotBeRequired(const char* id);
65
73
 
66
74
  NativeModuleCacheMap* code_cache();
75
+ const Mutex& code_cache_mutex() const { return code_cache_mutex_; }
76
+
67
77
  v8::ScriptCompiler::CachedData* GetCodeCache(const char* id) const;
68
78
  enum class Result { kWithCache, kWithoutCache };
69
79
  v8::MaybeLocal<v8::String> LoadBuiltinModuleSource(v8::Isolate* isolate,
@@ -3,17 +3,20 @@
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
+ #include <vector>
6
7
  #include "node_native_module.h"
7
8
 
8
9
  namespace node {
9
10
  class Environment;
10
-
11
+ class ExternalReferenceRegistry;
11
12
  namespace native_module {
12
13
 
13
- extern const bool has_code_cache;
14
-
14
+ // TODO(joyeecheung): since it's safer to make the code cache part of the
15
+ // embedded snapshot, there is no need to separate NativeModuleEnv and
16
+ // NativeModuleLoader. Merge the two.
15
17
  class NativeModuleEnv {
16
18
  public:
19
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
17
20
  static void Initialize(v8::Local<v8::Object> target,
18
21
  v8::Local<v8::Value> unused,
19
22
  v8::Local<v8::Context> context,
@@ -29,12 +32,11 @@ class NativeModuleEnv {
29
32
  // Returns config.gypi as a JSON string
30
33
  static v8::Local<v8::String> GetConfigString(v8::Isolate* isolate);
31
34
  static bool Exists(const char* id);
35
+ static bool Add(const char* id, const UnionBytes& source);
32
36
 
33
- // Loads data into NativeModuleLoader::.instance.code_cache_
34
- // Generated by mkcodecache as node_code_cache.cc when
35
- // the build is configured with --code-cache-path=.... They are noops
36
- // in node_code_cache_stub.cc
37
- static void InitializeCodeCache();
37
+ static bool CompileAllModules(v8::Local<v8::Context> context);
38
+ static void RefreshCodeCache(const std::vector<CodeCacheInfo>& in);
39
+ static void CopyCodeCache(std::vector<CodeCacheInfo>* out);
38
40
 
39
41
  private:
40
42
  static void RecordResult(const char* id,
@@ -54,6 +56,10 @@ class NativeModuleEnv {
54
56
  const v8::PropertyCallbackInfo<v8::Value>& info);
55
57
  // Compile a specific native module as a function
56
58
  static void CompileFunction(const v8::FunctionCallbackInfo<v8::Value>& args);
59
+ static void HasCachedBuiltins(
60
+ const v8::FunctionCallbackInfo<v8::Value>& args);
61
+
62
+ static bool has_code_cache_;
57
63
  };
58
64
 
59
65
  } // namespace native_module
File without changes