@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
@@ -5,6 +5,8 @@
5
5
 
6
6
  #include "aliased_buffer.h"
7
7
 
8
+ struct nghttp2_rcbuf;
9
+
8
10
  namespace node {
9
11
  namespace http2 {
10
12
 
@@ -56,13 +58,6 @@ namespace http2 {
56
58
  IDX_OPTIONS_FLAGS
57
59
  };
58
60
 
59
- enum Http2PaddingBufferFields {
60
- PADDING_BUF_FRAME_LENGTH,
61
- PADDING_BUF_MAX_PAYLOAD_LENGTH,
62
- PADDING_BUF_RETURN_VALUE,
63
- PADDING_BUF_FIELD_COUNT
64
- };
65
-
66
61
  enum Http2StreamStatisticsIndex {
67
62
  IDX_STREAM_STATS_ID,
68
63
  IDX_STREAM_STATS_TIMETOFIRSTBYTE,
@@ -86,58 +81,54 @@ namespace http2 {
86
81
  IDX_SESSION_STATS_COUNT
87
82
  };
88
83
 
89
- class Http2State {
84
+ class Http2State : public BaseObject {
90
85
  public:
91
- explicit Http2State(v8::Isolate* isolate) :
92
- root_buffer(
93
- isolate,
94
- sizeof(http2_state_internal)),
95
- session_state_buffer(
96
- isolate,
97
- offsetof(http2_state_internal, session_state_buffer),
98
- IDX_SESSION_STATE_COUNT,
99
- root_buffer),
100
- stream_state_buffer(
101
- isolate,
102
- offsetof(http2_state_internal, stream_state_buffer),
103
- IDX_STREAM_STATE_COUNT,
104
- root_buffer),
105
- stream_stats_buffer(
106
- isolate,
107
- offsetof(http2_state_internal, stream_stats_buffer),
108
- IDX_STREAM_STATS_COUNT,
109
- root_buffer),
110
- session_stats_buffer(
111
- isolate,
112
- offsetof(http2_state_internal, session_stats_buffer),
113
- IDX_SESSION_STATS_COUNT,
114
- root_buffer),
115
- padding_buffer(
116
- isolate,
117
- offsetof(http2_state_internal, padding_buffer),
118
- PADDING_BUF_FIELD_COUNT,
119
- root_buffer),
120
- options_buffer(
121
- isolate,
122
- offsetof(http2_state_internal, options_buffer),
123
- IDX_OPTIONS_FLAGS + 1,
124
- root_buffer),
125
- settings_buffer(
126
- isolate,
127
- offsetof(http2_state_internal, settings_buffer),
128
- IDX_SETTINGS_COUNT + 1,
129
- root_buffer) {
130
- }
86
+ Http2State(Environment* env, v8::Local<v8::Object> obj)
87
+ : BaseObject(env, obj),
88
+ root_buffer(env->isolate(), sizeof(http2_state_internal)),
89
+ session_state_buffer(
90
+ env->isolate(),
91
+ offsetof(http2_state_internal, session_state_buffer),
92
+ IDX_SESSION_STATE_COUNT,
93
+ root_buffer),
94
+ stream_state_buffer(
95
+ env->isolate(),
96
+ offsetof(http2_state_internal, stream_state_buffer),
97
+ IDX_STREAM_STATE_COUNT,
98
+ root_buffer),
99
+ stream_stats_buffer(
100
+ env->isolate(),
101
+ offsetof(http2_state_internal, stream_stats_buffer),
102
+ IDX_STREAM_STATS_COUNT,
103
+ root_buffer),
104
+ session_stats_buffer(
105
+ env->isolate(),
106
+ offsetof(http2_state_internal, session_stats_buffer),
107
+ IDX_SESSION_STATS_COUNT,
108
+ root_buffer),
109
+ options_buffer(env->isolate(),
110
+ offsetof(http2_state_internal, options_buffer),
111
+ IDX_OPTIONS_FLAGS + 1,
112
+ root_buffer),
113
+ settings_buffer(env->isolate(),
114
+ offsetof(http2_state_internal, settings_buffer),
115
+ IDX_SETTINGS_COUNT + 1,
116
+ root_buffer) {}
131
117
 
132
118
  AliasedUint8Array root_buffer;
133
119
  AliasedFloat64Array session_state_buffer;
134
120
  AliasedFloat64Array stream_state_buffer;
135
121
  AliasedFloat64Array stream_stats_buffer;
136
122
  AliasedFloat64Array session_stats_buffer;
137
- AliasedUint32Array padding_buffer;
138
123
  AliasedUint32Array options_buffer;
139
124
  AliasedUint32Array settings_buffer;
140
125
 
126
+ void MemoryInfo(MemoryTracker* tracker) const override;
127
+ SET_SELF_SIZE(Http2State)
128
+ SET_MEMORY_INFO_NAME(Http2State)
129
+
130
+ static constexpr FastStringKey type_name { "http2" };
131
+
141
132
  private:
142
133
  struct http2_state_internal {
143
134
  // doubles first so that they are always sizeof(double)-aligned
@@ -145,7 +136,6 @@ class Http2State {
145
136
  double stream_state_buffer[IDX_STREAM_STATE_COUNT];
146
137
  double stream_stats_buffer[IDX_STREAM_STATS_COUNT];
147
138
  double session_stats_buffer[IDX_SESSION_STATS_COUNT];
148
- uint32_t padding_buffer[PADDING_BUF_FIELD_COUNT];
149
139
  uint32_t options_buffer[IDX_OPTIONS_FLAGS + 1];
150
140
  uint32_t settings_buffer[IDX_SETTINGS_COUNT + 1];
151
141
  };
@@ -31,8 +31,7 @@ NgHeaders<T>::NgHeaders(Environment* env, v8::Local<v8::Array> headers) {
31
31
  count_ * sizeof(nv_t) +
32
32
  header_string_len);
33
33
 
34
- char* start = reinterpret_cast<char*>(
35
- RoundUp(reinterpret_cast<uintptr_t>(*buf_), alignof(nv_t)));
34
+ char* start = AlignUp(buf_.out(), alignof(nv_t));
36
35
  char* header_contents = start + (count_ * sizeof(nv_t));
37
36
  nv_t* const nva = reinterpret_cast<nv_t*>(start);
38
37
 
@@ -56,13 +55,14 @@ NgHeaders<T>::NgHeaders(Environment* env, v8::Local<v8::Array> headers) {
56
55
  return;
57
56
  }
58
57
 
59
- nva[n].flags = T::kNoneFlag;
60
58
  nva[n].name = reinterpret_cast<uint8_t*>(p);
61
59
  nva[n].namelen = strlen(p);
62
60
  p += nva[n].namelen + 1;
63
61
  nva[n].value = reinterpret_cast<uint8_t*>(p);
64
62
  nva[n].valuelen = strlen(p);
65
63
  p += nva[n].valuelen + 1;
64
+ nva[n].flags = *p;
65
+ p++;
66
66
  }
67
67
  }
68
68
 
@@ -76,6 +76,14 @@ size_t GetServerMaxHeaderPairs(size_t max_header_pairs) {
76
76
  return std::max(max_header_pairs, min_header_pairs);
77
77
  }
78
78
 
79
+ template <typename allocator_t>
80
+ std::string NgHeaderBase<allocator_t>::ToString() const {
81
+ std::string ret = name();
82
+ ret += " = ";
83
+ ret += value();
84
+ return ret;
85
+ }
86
+
79
87
  template <typename T>
80
88
  bool NgHeader<T>::IsZeroLength(
81
89
  NgHeader<T>::rcbuf_t* name,
@@ -123,7 +131,8 @@ NgHeader<T>::NgHeader(
123
131
 
124
132
  template <typename T>
125
133
  NgHeader<T>::NgHeader(NgHeader<T>&& other) noexcept
126
- : name_(std::move(other.name_)),
134
+ : env_(other.env_),
135
+ name_(std::move(other.name_)),
127
136
  value_(std::move(other.value_)),
128
137
  token_(other.token_),
129
138
  flags_(other.flags_) {
@@ -132,6 +141,12 @@ NgHeader<T>::NgHeader(NgHeader<T>&& other) noexcept
132
141
  other.env_ = nullptr;
133
142
  }
134
143
 
144
+ template <typename T>
145
+ void NgHeader<T>::MemoryInfo(MemoryTracker* tracker) const {
146
+ tracker->TrackField("name", name_);
147
+ tracker->TrackField("value", value_);
148
+ }
149
+
135
150
  template <typename T>
136
151
  v8::MaybeLocal<v8::String> NgHeader<T>::GetName(
137
152
  NgHeader<T>::allocator_t* allocator) const {
@@ -143,7 +158,7 @@ v8::MaybeLocal<v8::String> NgHeader<T>::GetName(
143
158
  // If header_name is not nullptr, then it is a known header with
144
159
  // a statically defined name. We can safely internalize it here.
145
160
  if (header_name != nullptr) {
146
- auto& static_str_map = env_->isolate_data()->http_static_strs;
161
+ auto& static_str_map = env_->isolate_data()->static_str_map;
147
162
  v8::Eternal<v8::String> eternal = static_str_map[header_name];
148
163
  if (eternal.IsEmpty()) {
149
164
  v8::Local<v8::String> str = OneByteString(env_->isolate(), header_name);
@@ -176,6 +191,11 @@ size_t NgHeader<T>::length() const {
176
191
  return name_.len() + value_.len();
177
192
  }
178
193
 
194
+ template <typename T>
195
+ uint8_t NgHeader<T>::flags() const {
196
+ return flags_;
197
+ }
198
+
179
199
  } // namespace node
180
200
 
181
201
  #endif // SRC_NODE_HTTP_COMMON_INL_H_
@@ -196,7 +196,7 @@ enum http_status_codes {
196
196
  // Unlike the HTTP/1 implementation, the HTTP/2 implementation is not limited
197
197
  // to a fixed number of known supported HTTP methods. These constants, therefore
198
198
  // are provided strictly as a convenience to users and are exposed via the
199
- // require('http2').constants object.
199
+ // require('node:http2').constants object.
200
200
  #define HTTP_KNOWN_METHODS(V) \
201
201
  V(ACL, "ACL") \
202
202
  V(BASELINE_CONTROL, "BASELINE-CONTROL") \
@@ -270,7 +270,7 @@ class NgHeaders {
270
270
  MaybeStackBuffer<char, 3000> buf_;
271
271
  };
272
272
 
273
- // The ng libraries (nghttp2 and nghttp3) each use nearly identical
273
+ // The ng libraries use nearly identical
274
274
  // reference counted structures for retaining header name and value
275
275
  // information in memory until the application is done with it.
276
276
  // The NgRcBufPointer is an intelligent pointer capable of working
@@ -409,7 +409,7 @@ class NgRcBufPointer : public MemoryRetainer {
409
409
  NgRcBufPointer<T> ptr) {
410
410
  Environment* env = allocator->env();
411
411
  if (ptr.IsStatic()) {
412
- auto& static_str_map = env->isolate_data()->http_static_strs;
412
+ auto& static_str_map = env->isolate_data()->static_str_map;
413
413
  const char* header_name = reinterpret_cast<const char*>(ptr.data());
414
414
  v8::Eternal<v8::String>& eternal = static_str_map[header_name];
415
415
  if (eternal.IsEmpty()) {
@@ -453,6 +453,17 @@ class NgRcBufPointer : public MemoryRetainer {
453
453
  bool internalizable_ = false;
454
454
  };
455
455
 
456
+ template <typename allocator_t>
457
+ struct NgHeaderBase : public MemoryRetainer {
458
+ virtual v8::MaybeLocal<v8::String> GetName(allocator_t* allocator) const = 0;
459
+ virtual v8::MaybeLocal<v8::String> GetValue(allocator_t* allocator) const = 0;
460
+ virtual std::string name() const = 0;
461
+ virtual std::string value() const = 0;
462
+ virtual size_t length() const = 0;
463
+ virtual uint8_t flags() const = 0;
464
+ virtual std::string ToString() const;
465
+ };
466
+
456
467
  // The ng libraries use nearly identical structs to represent
457
468
  // received http headers. The NgHeader class wraps those in a
458
469
  // consistent way and allows converting the name and value to
@@ -461,7 +472,7 @@ class NgRcBufPointer : public MemoryRetainer {
461
472
  // memory tracking, and implementation of static utility functions.
462
473
  // See Http2HeaderTraits in node_http2.h for an example.
463
474
  template <typename T>
464
- class NgHeader : public MemoryRetainer {
475
+ class NgHeader final : public NgHeaderBase<typename T::allocator_t> {
465
476
  public:
466
477
  typedef typename T::rcbufferpointer_t rcbufferpointer_t;
467
478
  typedef typename T::rcbufferpointer_t::rcbuf_t rcbuf_t;
@@ -487,28 +498,21 @@ class NgHeader : public MemoryRetainer {
487
498
  // object to the v8 string. Once the v8 string is garbage collected,
488
499
  // the reference counter will be decremented.
489
500
 
490
- inline v8::MaybeLocal<v8::String> GetName(allocator_t* allocator) const;
491
- inline v8::MaybeLocal<v8::String> GetValue(allocator_t* allocator) const;
501
+ inline v8::MaybeLocal<v8::String> GetName(
502
+ allocator_t* allocator) const override;
503
+ inline v8::MaybeLocal<v8::String> GetValue(
504
+ allocator_t* allocator) const override;
492
505
 
493
- inline std::string name() const;
494
- inline std::string value() const;
495
- inline size_t length() const;
506
+ inline std::string name() const override;
507
+ inline std::string value() const override;
508
+ inline size_t length() const override;
509
+ inline uint8_t flags() const override;
496
510
 
497
- void MemoryInfo(MemoryTracker* tracker) const override {
498
- tracker->TrackField("name", name_);
499
- tracker->TrackField("value", value_);
500
- }
511
+ void MemoryInfo(MemoryTracker* tracker) const override;
501
512
 
502
513
  SET_MEMORY_INFO_NAME(NgHeader)
503
514
  SET_SELF_SIZE(NgHeader)
504
515
 
505
- std::string ToString() const {
506
- std::string ret = name();
507
- ret += " = ";
508
- ret += value();
509
- return ret;
510
- }
511
-
512
516
  private:
513
517
  Environment* env_;
514
518
  rcbufferpointer_t name_;
@@ -36,11 +36,12 @@
36
36
  #include <string>
37
37
 
38
38
  namespace node {
39
-
40
39
  namespace i18n {
41
40
 
42
41
  bool InitializeICUDirectory(const std::string& path);
43
42
 
43
+ void SetDefaultTimeZone(const char* tzid);
44
+
44
45
  enum idna_mode {
45
46
  // Default mode for maximum compatibility.
46
47
  IDNA_DEFAULT,
@@ -39,11 +39,6 @@
39
39
  #include <string>
40
40
  #include <vector>
41
41
 
42
- // Custom constants used by both node_constants.cc and node_zlib.cc
43
- #define Z_MIN_WINDOWBITS 8
44
- #define Z_MAX_WINDOWBITS 15
45
- #define Z_DEFAULT_WINDOWBITS 15
46
-
47
42
  struct sockaddr;
48
43
 
49
44
  namespace node {
@@ -55,7 +50,6 @@ class NativeModuleLoader;
55
50
  namespace per_process {
56
51
  extern Mutex env_var_mutex;
57
52
  extern uint64_t node_start_time;
58
- extern bool v8_is_profiling;
59
53
  } // namespace per_process
60
54
 
61
55
  // Forward declaration
@@ -64,7 +58,7 @@ class Environment;
64
58
  // Convert a struct sockaddr to a { address: '1.2.3.4', port: 1234 } JS object.
65
59
  // Sets address and port properties on the info object and returns it.
66
60
  // If |info| is omitted, a new object is returned.
67
- v8::Local<v8::Object> AddressToJS(
61
+ v8::MaybeLocal<v8::Object> AddressToJS(
68
62
  Environment* env,
69
63
  const sockaddr* addr,
70
64
  v8::Local<v8::Object> info = v8::Local<v8::Object>());
@@ -91,22 +85,15 @@ void PrintCaughtException(v8::Isolate* isolate,
91
85
  const v8::TryCatch& try_catch);
92
86
 
93
87
  void ResetStdio(); // Safe to call more than once and from signal handlers.
94
- void SignalExit(int signo);
95
88
  #ifdef __POSIX__
96
- void RegisterSignalHandler(int signal,
97
- void (*handler)(int signal),
98
- bool reset_handler = false);
89
+ void SignalExit(int signal, siginfo_t* info, void* ucontext);
99
90
  #endif
100
91
 
101
92
  std::string GetProcessTitle(const char* default_title);
102
93
  std::string GetHumanReadableProcessName();
103
94
 
104
- void InitializeContextRuntime(v8::Local<v8::Context>);
105
- bool InitializePrimordials(v8::Local<v8::Context> context);
106
-
107
- namespace task_queue {
108
- void PromiseRejectCallback(v8::PromiseRejectMessage message);
109
- } // namespace task_queue
95
+ v8::Maybe<bool> InitializeContextRuntime(v8::Local<v8::Context> context);
96
+ v8::Maybe<bool> InitializePrimordials(v8::Local<v8::Context> context);
110
97
 
111
98
  class NodeArrayBufferAllocator : public ArrayBufferAllocator {
112
99
  public:
@@ -115,7 +102,7 @@ class NodeArrayBufferAllocator : public ArrayBufferAllocator {
115
102
  void* Allocate(size_t size) override; // Defined in src/node.cc
116
103
  void* AllocateUninitialized(size_t size) override;
117
104
  void Free(void* data, size_t size) override;
118
- virtual void* Reallocate(void* data, size_t old_size, size_t size);
105
+ void* Reallocate(void* data, size_t old_size, size_t size) override;
119
106
  virtual void RegisterPointer(void* data, size_t size) {
120
107
  total_mem_usage_.fetch_add(size, std::memory_order_relaxed);
121
108
  }
@@ -163,8 +150,7 @@ v8::MaybeLocal<v8::Object> New(Environment* env,
163
150
  // ArrayBuffer::Allocator().
164
151
  v8::MaybeLocal<v8::Object> New(Environment* env,
165
152
  char* data,
166
- size_t length,
167
- bool uses_malloc);
153
+ size_t length);
168
154
  // Creates a Buffer instance over an existing ArrayBuffer.
169
155
  v8::MaybeLocal<v8::Uint8Array> New(Environment* env,
170
156
  v8::Local<v8::ArrayBuffer> ab,
@@ -186,7 +172,7 @@ static v8::MaybeLocal<v8::Object> New(Environment* env,
186
172
  const size_t len_in_bytes = buf->length() * sizeof(buf->out()[0]);
187
173
 
188
174
  if (buf->IsAllocated())
189
- ret = New(env, src, len_in_bytes, true);
175
+ ret = New(env, src, len_in_bytes);
190
176
  else if (!buf->IsInvalidated())
191
177
  ret = Copy(env, src, len_in_bytes);
192
178
 
@@ -209,6 +195,12 @@ v8::MaybeLocal<v8::Value> InternalMakeCallback(
209
195
  v8::Local<v8::Value> argv[],
210
196
  async_context asyncContext);
211
197
 
198
+ v8::MaybeLocal<v8::Value> MakeSyncCallback(v8::Isolate* isolate,
199
+ v8::Local<v8::Object> recv,
200
+ v8::Local<v8::Function> callback,
201
+ int argc,
202
+ v8::Local<v8::Value> argv[]);
203
+
212
204
  class InternalCallbackScope {
213
205
  public:
214
206
  enum Flags {
@@ -291,7 +283,7 @@ class ThreadPoolWork {
291
283
 
292
284
  #if defined(__POSIX__) && !defined(__ANDROID__) && !defined(__CloudABI__)
293
285
  #define NODE_IMPLEMENTS_POSIX_CREDENTIALS 1
294
- #endif // __POSIX__ && !defined(__ANDROID__) && !defined(__CloudABI__)
286
+ #endif // defined(__POSIX__) && !defined(__ANDROID__) && !defined(__CloudABI__)
295
287
 
296
288
  namespace credentials {
297
289
  bool SafeGetenv(const char* key, std::string* text, Environment* env = nullptr);
@@ -301,8 +293,10 @@ void DefineZlibConstants(v8::Local<v8::Object> target);
301
293
  v8::Isolate* NewIsolate(v8::Isolate::CreateParams* params,
302
294
  uv_loop_t* event_loop,
303
295
  MultiIsolatePlatform* platform);
296
+ // This overload automatically picks the right 'main_script_id' if no callback
297
+ // was provided by the embedder.
304
298
  v8::MaybeLocal<v8::Value> StartExecution(Environment* env,
305
- const char* main_script_id);
299
+ StartExecutionCallback cb = nullptr);
306
300
  v8::MaybeLocal<v8::Object> GetPerContextExports(v8::Local<v8::Context> context);
307
301
  v8::MaybeLocal<v8::Value> ExecuteBootstrapper(
308
302
  Environment* env,
@@ -317,8 +311,23 @@ struct InitializationResult {
317
311
  std::vector<std::string> exec_args;
318
312
  bool early_return = false;
319
313
  };
320
- InitializationResult InitializeOncePerProcess(int argc, char** argv);
321
- void TearDownOncePerProcess();
314
+
315
+ enum InitializationSettingsFlags : uint64_t {
316
+ kDefaultInitialization = 1 << 0,
317
+ kInitializeV8 = 1 << 1,
318
+ kRunPlatformInit = 1 << 2,
319
+ kInitOpenSSL = 1 << 3
320
+ };
321
+
322
+ // TODO(codebytere): eventually document and expose to embedders.
323
+ InitializationResult NODE_EXTERN_PRIVATE InitializeOncePerProcess(int argc,
324
+ char** argv);
325
+ InitializationResult NODE_EXTERN_PRIVATE InitializeOncePerProcess(
326
+ int argc,
327
+ char** argv,
328
+ InitializationSettingsFlags flags,
329
+ ProcessFlags::Flags process_flags = ProcessFlags::kNoFlags);
330
+ void NODE_EXTERN_PRIVATE TearDownOncePerProcess();
322
331
  void SetIsolateErrorHandlers(v8::Isolate* isolate, const IsolateSettings& s);
323
332
  void SetIsolateMiscHandlers(v8::Isolate* isolate, const IsolateSettings& s);
324
333
  void SetIsolateCreateParamsForNode(v8::Isolate::CreateParams* params);
@@ -370,22 +379,9 @@ class DiagnosticFilename {
370
379
  std::string filename_;
371
380
  };
372
381
 
373
- class TraceEventScope {
374
- public:
375
- TraceEventScope(const char* category,
376
- const char* name,
377
- void* id) : category_(category), name_(name), id_(id) {
378
- TRACE_EVENT_NESTABLE_ASYNC_BEGIN0(category_, name_, id_);
379
- }
380
- ~TraceEventScope() {
381
- TRACE_EVENT_NESTABLE_ASYNC_END0(category_, name_, id_);
382
- }
383
-
384
- private:
385
- const char* category_;
386
- const char* name_;
387
- void* id_;
388
- };
382
+ namespace heap {
383
+ v8::Maybe<void> WriteSnapshot(Environment* env, const char* filename);
384
+ }
389
385
 
390
386
  namespace heap {
391
387
 
@@ -401,6 +397,8 @@ namespace fs {
401
397
  std::string Basename(const std::string& str, const std::string& extension);
402
398
  } // namespace fs
403
399
 
400
+ node_module napi_module_to_node_module(const napi_module* mod);
401
+
404
402
  } // namespace node
405
403
 
406
404
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
@@ -13,6 +13,10 @@
13
13
 
14
14
  namespace node {
15
15
 
16
+ class ExternalReferenceRegistry;
17
+ struct EnvSerializeInfo;
18
+ struct SnapshotData;
19
+
16
20
  // TODO(joyeecheung): align this with the Worker/WorkerThreadData class.
17
21
  // We may be able to create an abstract class to reuse some of the routines.
18
22
  class NodeMainInstance {
@@ -45,30 +49,22 @@ class NodeMainInstance {
45
49
  void Dispose();
46
50
 
47
51
  // Create a main instance that owns the isolate
48
- NodeMainInstance(
49
- v8::Isolate::CreateParams* params,
50
- uv_loop_t* event_loop,
51
- MultiIsolatePlatform* platform,
52
- const std::vector<std::string>& args,
53
- const std::vector<std::string>& exec_args,
54
- const std::vector<size_t>* per_isolate_data_indexes = nullptr);
52
+ NodeMainInstance(const SnapshotData* snapshot_data,
53
+ uv_loop_t* event_loop,
54
+ MultiIsolatePlatform* platform,
55
+ const std::vector<std::string>& args,
56
+ const std::vector<std::string>& exec_args);
55
57
  ~NodeMainInstance();
56
58
 
57
59
  // Start running the Node.js instances, return the exit code when finished.
58
60
  int Run();
61
+ void Run(int* exit_code, Environment* env);
59
62
 
60
63
  IsolateData* isolate_data() { return isolate_data_.get(); }
61
64
 
62
- // TODO(joyeecheung): align this with the CreateEnvironment exposed in node.h
63
- // and the environment creation routine in workers somehow.
64
- std::unique_ptr<Environment> CreateMainEnvironment(int* exit_code);
65
-
66
- // If nullptr is returned, the binary is not built with embedded
67
- // snapshot.
68
- static const std::vector<size_t>* GetIsolateDataIndexes();
69
- static v8::StartupData* GetEmbeddedSnapshotBlob();
65
+ DeleteFnPtr<Environment, FreeEnvironment> CreateMainEnvironment(
66
+ int* exit_code);
70
67
 
71
- static const size_t kNodeContextIndex = 0;
72
68
  NodeMainInstance(const NodeMainInstance&) = delete;
73
69
  NodeMainInstance& operator=(const NodeMainInstance&) = delete;
74
70
  NodeMainInstance(NodeMainInstance&&) = delete;
@@ -81,14 +77,15 @@ class NodeMainInstance {
81
77
  const std::vector<std::string>& args,
82
78
  const std::vector<std::string>& exec_args);
83
79
 
80
+ static std::unique_ptr<ExternalReferenceRegistry> registry_;
84
81
  std::vector<std::string> args_;
85
82
  std::vector<std::string> exec_args_;
86
83
  std::unique_ptr<ArrayBufferAllocator> array_buffer_allocator_;
87
84
  v8::Isolate* isolate_;
88
85
  MultiIsolatePlatform* platform_;
89
86
  std::unique_ptr<IsolateData> isolate_data_;
90
- bool owns_isolate_ = false;
91
- bool deserialize_mode_ = false;
87
+ std::unique_ptr<v8::Isolate::CreateParams> isolate_params_;
88
+ const SnapshotData* snapshot_data_ = nullptr;
92
89
  };
93
90
 
94
91
  } // namespace node
File without changes
@@ -8,7 +8,7 @@
8
8
  namespace node {
9
9
  namespace mem {
10
10
 
11
- // Both ngtcp2 and nghttp2 allow custom allocators that
11
+ // nghttp2 allows custom allocators that
12
12
  // follow exactly the same structure and behavior, but
13
13
  // use different struct names. To allow for code re-use,
14
14
  // the NgLibMemoryManager template class can be used for both.