@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
File without changes
@@ -41,6 +41,9 @@
41
41
  #define RSA_PSS_SALTLEN_AUTO -2
42
42
  #endif
43
43
 
44
+ #if defined(NODE_OPENSSL_DEFAULT_CIPHER_LIST)
45
+ #define DEFAULT_CIPHER_LIST_CORE NODE_OPENSSL_DEFAULT_CIPHER_LIST
46
+ #else
44
47
  // TLSv1.3 suites start with TLS_, and are the OpenSSL defaults, see:
45
48
  // https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_ciphersuites.html
46
49
  #define DEFAULT_CIPHER_LIST_CORE \
@@ -68,7 +71,8 @@
68
71
  "!PSK:" \
69
72
  "!SRP:" \
70
73
  "!CAMELLIA"
71
- #endif
74
+ #endif // NODE_OPENSSL_DEFAULT_CIPHER_LIST
75
+ #endif // HAVE_OPENSSL
72
76
 
73
77
  namespace node {
74
78
 
@@ -25,11 +25,16 @@ namespace node {
25
25
  #define NODE_CONTEXT_TAG 35
26
26
  #endif
27
27
 
28
+ #ifndef NODE_BINDING_LIST
29
+ #define NODE_BINDING_LIST_INDEX 36
30
+ #endif
31
+
28
32
  enum ContextEmbedderIndex {
29
33
  kEnvironment = NODE_CONTEXT_EMBEDDER_DATA_INDEX,
30
34
  kSandboxObject = NODE_CONTEXT_SANDBOX_OBJECT_INDEX,
31
35
  kAllowWasmCodeGeneration = NODE_CONTEXT_ALLOW_WASM_CODE_GENERATION_INDEX,
32
36
  kContextTag = NODE_CONTEXT_TAG,
37
+ kBindingListIndex = NODE_BINDING_LIST_INDEX
33
38
  };
34
39
 
35
40
  } // namespace node
@@ -8,13 +8,37 @@
8
8
  #include "node_errors.h"
9
9
 
10
10
  namespace node {
11
+ class ExternalReferenceRegistry;
12
+
11
13
  namespace contextify {
12
14
 
15
+ class MicrotaskQueueWrap : public BaseObject {
16
+ public:
17
+ MicrotaskQueueWrap(Environment* env, v8::Local<v8::Object> obj);
18
+
19
+ const std::shared_ptr<v8::MicrotaskQueue>& microtask_queue() const;
20
+
21
+ static void Init(Environment* env, v8::Local<v8::Object> target);
22
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
23
+ static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
24
+
25
+ // This could have methods for running the microtask queue, if we ever decide
26
+ // to make that fully customizable from userland.
27
+
28
+ SET_NO_MEMORY_INFO()
29
+ SET_MEMORY_INFO_NAME(MicrotaskQueueWrap)
30
+ SET_SELF_SIZE(MicrotaskQueueWrap)
31
+
32
+ private:
33
+ std::shared_ptr<v8::MicrotaskQueue> microtask_queue_;
34
+ };
35
+
13
36
  struct ContextOptions {
14
37
  v8::Local<v8::String> name;
15
38
  v8::Local<v8::String> origin;
16
39
  v8::Local<v8::Boolean> allow_code_gen_strings;
17
40
  v8::Local<v8::Boolean> allow_code_gen_wasm;
41
+ BaseObjectPtr<MicrotaskQueueWrap> microtask_queue_wrap;
18
42
  };
19
43
 
20
44
  class ContextifyContext {
@@ -31,6 +55,7 @@ class ContextifyContext {
31
55
  v8::Local<v8::Object> sandbox_obj,
32
56
  const ContextOptions& options);
33
57
  static void Init(Environment* env, v8::Local<v8::Object> target);
58
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
34
59
 
35
60
  static ContextifyContext* ContextFromContextifiedSandbox(
36
61
  Environment* env,
@@ -49,8 +74,13 @@ class ContextifyContext {
49
74
  }
50
75
 
51
76
  inline v8::Local<v8::Object> sandbox() const {
52
- return v8::Local<v8::Object>::Cast(
53
- context()->GetEmbedderData(ContextEmbedderIndex::kSandboxObject));
77
+ return context()->GetEmbedderData(ContextEmbedderIndex::kSandboxObject)
78
+ .As<v8::Object>();
79
+ }
80
+
81
+ inline std::shared_ptr<v8::MicrotaskQueue> microtask_queue() const {
82
+ if (!microtask_queue_wrap_) return {};
83
+ return microtask_queue_wrap_->microtask_queue();
54
84
  }
55
85
 
56
86
 
@@ -102,6 +132,7 @@ class ContextifyContext {
102
132
  const v8::PropertyCallbackInfo<v8::Boolean>& args);
103
133
  Environment* const env_;
104
134
  v8::Global<v8::Context> context_;
135
+ BaseObjectPtr<MicrotaskQueueWrap> microtask_queue_wrap_;
105
136
  };
106
137
 
107
138
  class ContextifyScript : public BaseObject {
@@ -114,6 +145,7 @@ class ContextifyScript : public BaseObject {
114
145
  ~ContextifyScript() override;
115
146
 
116
147
  static void Init(Environment* env, v8::Local<v8::Object> target);
148
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
117
149
  static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
118
150
  static bool InstanceOf(Environment* env, const v8::Local<v8::Value>& args);
119
151
  static void CreateCachedData(
@@ -125,6 +157,7 @@ class ContextifyScript : public BaseObject {
125
157
  const bool display_errors,
126
158
  const bool break_on_sigint,
127
159
  const bool break_on_first_line,
160
+ std::shared_ptr<v8::MicrotaskQueue> microtask_queue,
128
161
  const v8::FunctionCallbackInfo<v8::Value>& args);
129
162
 
130
163
  inline uint32_t id() { return id_; }
@@ -146,6 +179,8 @@ class CompiledFnEntry final : public BaseObject {
146
179
  v8::Local<v8::ScriptOrModule> script);
147
180
  ~CompiledFnEntry();
148
181
 
182
+ bool IsNotIndicativeOfMemoryLeakAtExit() const override { return true; }
183
+
149
184
  private:
150
185
  uint32_t id_;
151
186
  v8::Global<v8::ScriptOrModule> script_;
@@ -19,23 +19,39 @@
19
19
  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20
20
  // USE OR OTHER DEALINGS IN THE SOFTWARE.
21
21
 
22
- #ifndef SRC_NODE_JAVASCRIPT_H_
23
- #define SRC_NODE_JAVASCRIPT_H_
22
+ #ifndef SRC_NODE_CRYPTO_H_
23
+ #define SRC_NODE_CRYPTO_H_
24
24
 
25
25
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
26
26
 
27
- #include "node_internals.h"
28
-
29
- namespace node {
30
-
31
- void DefineJavaScript(Environment* env, v8::Local<v8::Object> target);
32
- void DefineJavaScriptHash(Environment* env, v8::Local<v8::Object> target);
33
- v8::Local<v8::String> NodePerContextSource(v8::Isolate* isolate);
34
- v8::Local<v8::String> LoadersBootstrapperSource(Environment* env);
35
- v8::Local<v8::String> NodeBootstrapperSource(Environment* env);
36
-
37
- } // namespace node
27
+ // All of the crypto definitions previously contained in this header
28
+ // have been split across multiple headers in src/crypto. This header
29
+ // remains for convenience for any code that still imports it. New
30
+ // code should include the relevant src/crypto headers directly.
31
+ #include "crypto/crypto_aes.h"
32
+ #include "crypto/crypto_bio.h"
33
+ #include "crypto/crypto_cipher.h"
34
+ #include "crypto/crypto_context.h"
35
+ #include "crypto/crypto_dh.h"
36
+ #include "crypto/crypto_dsa.h"
37
+ #include "crypto/crypto_ec.h"
38
+ #include "crypto/crypto_groups.h"
39
+ #include "crypto/crypto_hash.h"
40
+ #include "crypto/crypto_hkdf.h"
41
+ #include "crypto/crypto_hmac.h"
42
+ #include "crypto/crypto_keygen.h"
43
+ #include "crypto/crypto_keys.h"
44
+ #include "crypto/crypto_pbkdf2.h"
45
+ #include "crypto/crypto_random.h"
46
+ #include "crypto/crypto_rsa.h"
47
+ #include "crypto/crypto_scrypt.h"
48
+ #include "crypto/crypto_sig.h"
49
+ #include "crypto/crypto_spkac.h"
50
+ #include "crypto/crypto_tls.h"
51
+ #include "crypto/crypto_timing.h"
52
+ #include "crypto/crypto_util.h"
53
+ #include "crypto/crypto_x509.h"
38
54
 
39
55
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
40
56
 
41
- #endif // SRC_NODE_JAVASCRIPT_H_
57
+ #endif // SRC_NODE_CRYPTO_H_
File without changes
File without changes
@@ -3,6 +3,7 @@
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
+ #include "debug_utils-inl.h"
6
7
  #include "env.h"
7
8
  #include "v8.h"
8
9
 
@@ -31,18 +32,46 @@ void OnFatalError(const char* location, const char* message);
31
32
  V(ERR_BUFFER_CONTEXT_NOT_AVAILABLE, Error) \
32
33
  V(ERR_BUFFER_OUT_OF_BOUNDS, RangeError) \
33
34
  V(ERR_BUFFER_TOO_LARGE, Error) \
35
+ V(ERR_CLOSED_MESSAGE_PORT, Error) \
34
36
  V(ERR_CONSTRUCT_CALL_REQUIRED, TypeError) \
35
37
  V(ERR_CONSTRUCT_CALL_INVALID, TypeError) \
38
+ V(ERR_CRYPTO_INITIALIZATION_FAILED, Error) \
39
+ V(ERR_CRYPTO_INVALID_AUTH_TAG, TypeError) \
40
+ V(ERR_CRYPTO_INVALID_COUNTER, TypeError) \
41
+ V(ERR_CRYPTO_INVALID_CURVE, TypeError) \
42
+ V(ERR_CRYPTO_INVALID_DIGEST, TypeError) \
43
+ V(ERR_CRYPTO_INVALID_IV, TypeError) \
44
+ V(ERR_CRYPTO_INVALID_JWK, TypeError) \
45
+ V(ERR_CRYPTO_INVALID_KEYLEN, RangeError) \
46
+ V(ERR_CRYPTO_INVALID_KEYPAIR, RangeError) \
47
+ V(ERR_CRYPTO_INVALID_KEYTYPE, RangeError) \
48
+ V(ERR_CRYPTO_INVALID_MESSAGELEN, RangeError) \
49
+ V(ERR_CRYPTO_INVALID_SCRYPT_PARAMS, RangeError) \
50
+ V(ERR_CRYPTO_INVALID_STATE, Error) \
51
+ V(ERR_CRYPTO_INVALID_TAG_LENGTH, RangeError) \
52
+ V(ERR_CRYPTO_JWK_UNSUPPORTED_CURVE, Error) \
53
+ V(ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE, Error) \
54
+ V(ERR_CRYPTO_OPERATION_FAILED, Error) \
55
+ V(ERR_CRYPTO_TIMING_SAFE_EQUAL_LENGTH, RangeError) \
36
56
  V(ERR_CRYPTO_UNKNOWN_CIPHER, Error) \
37
57
  V(ERR_CRYPTO_UNKNOWN_DH_GROUP, Error) \
58
+ V(ERR_CRYPTO_UNSUPPORTED_OPERATION, Error) \
59
+ V(ERR_CRYPTO_JOB_INIT_FAILED, Error) \
60
+ V(ERR_DLOPEN_DISABLED, Error) \
61
+ V(ERR_DLOPEN_FAILED, Error) \
38
62
  V(ERR_EXECUTION_ENVIRONMENT_NOT_AVAILABLE, Error) \
63
+ V(ERR_INVALID_ADDRESS, Error) \
39
64
  V(ERR_INVALID_ARG_VALUE, TypeError) \
40
65
  V(ERR_OSSL_EVP_INVALID_DIGEST, Error) \
41
66
  V(ERR_INVALID_ARG_TYPE, TypeError) \
67
+ V(ERR_INVALID_OBJECT_DEFINE_PROPERTY, TypeError) \
68
+ V(ERR_INVALID_MODULE, Error) \
69
+ V(ERR_INVALID_THIS, TypeError) \
42
70
  V(ERR_INVALID_TRANSFER_OBJECT, TypeError) \
43
71
  V(ERR_MEMORY_ALLOCATION_FAILED, Error) \
72
+ V(ERR_MESSAGE_TARGET_CONTEXT_UNAVAILABLE, Error) \
44
73
  V(ERR_MISSING_ARGS, TypeError) \
45
- V(ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST, TypeError) \
74
+ V(ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST, TypeError) \
46
75
  V(ERR_MISSING_PASSPHRASE, TypeError) \
47
76
  V(ERR_MISSING_PLATFORM_FOR_WORKER, Error) \
48
77
  V(ERR_NON_CONTEXT_AWARE_DISABLED, Error) \
@@ -51,32 +80,42 @@ void OnFatalError(const char* location, const char* message);
51
80
  V(ERR_SCRIPT_EXECUTION_TIMEOUT, Error) \
52
81
  V(ERR_STRING_TOO_LONG, Error) \
53
82
  V(ERR_TLS_INVALID_PROTOCOL_METHOD, TypeError) \
54
- V(ERR_TRANSFERRING_EXTERNALIZED_SHAREDARRAYBUFFER, TypeError) \
55
83
  V(ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED, Error) \
56
84
  V(ERR_VM_MODULE_CACHED_DATA_REJECTED, Error) \
85
+ V(ERR_VM_MODULE_LINK_FAILURE, Error) \
57
86
  V(ERR_WASI_NOT_STARTED, Error) \
58
87
  V(ERR_WORKER_INIT_FAILED, Error) \
59
88
  V(ERR_PROTO_ACCESS, Error)
60
89
 
61
- #define V(code, type) \
62
- inline v8::Local<v8::Value> code(v8::Isolate* isolate, \
63
- const char* message) { \
64
- v8::Local<v8::String> js_code = OneByteString(isolate, #code); \
65
- v8::Local<v8::String> js_msg = OneByteString(isolate, message); \
66
- v8::Local<v8::Object> e = \
67
- v8::Exception::type(js_msg)->ToObject( \
68
- isolate->GetCurrentContext()).ToLocalChecked(); \
69
- e->Set(isolate->GetCurrentContext(), OneByteString(isolate, "code"), \
70
- js_code).Check(); \
71
- return e; \
72
- } \
73
- inline void THROW_ ## code(v8::Isolate* isolate, const char* message) { \
74
- isolate->ThrowException(code(isolate, message)); \
75
- } \
76
- inline void THROW_ ## code(Environment* env, const char* message) { \
77
- THROW_ ## code(env->isolate(), message); \
90
+ #define V(code, type) \
91
+ template <typename... Args> \
92
+ inline v8::Local<v8::Value> code( \
93
+ v8::Isolate* isolate, const char* format, Args&&... args) { \
94
+ std::string message = SPrintF(format, std::forward<Args>(args)...); \
95
+ v8::Local<v8::String> js_code = OneByteString(isolate, #code); \
96
+ v8::Local<v8::String> js_msg = \
97
+ OneByteString(isolate, message.c_str(), message.length()); \
98
+ v8::Local<v8::Object> e = v8::Exception::type(js_msg) \
99
+ ->ToObject(isolate->GetCurrentContext()) \
100
+ .ToLocalChecked(); \
101
+ e->Set(isolate->GetCurrentContext(), \
102
+ OneByteString(isolate, "code"), \
103
+ js_code) \
104
+ .Check(); \
105
+ return e; \
106
+ } \
107
+ template <typename... Args> \
108
+ inline void THROW_##code( \
109
+ v8::Isolate* isolate, const char* format, Args&&... args) { \
110
+ isolate->ThrowException( \
111
+ code(isolate, format, std::forward<Args>(args)...)); \
112
+ } \
113
+ template <typename... Args> \
114
+ inline void THROW_##code( \
115
+ Environment* env, const char* format, Args&&... args) { \
116
+ THROW_##code(env->isolate(), format, std::forward<Args>(args)...); \
78
117
  }
79
- ERRORS_WITH_CODE(V)
118
+ ERRORS_WITH_CODE(V)
80
119
  #undef V
81
120
 
82
121
  // Errors with predefined static messages
@@ -84,17 +123,46 @@ void OnFatalError(const char* location, const char* message);
84
123
  #define PREDEFINED_ERROR_MESSAGES(V) \
85
124
  V(ERR_BUFFER_CONTEXT_NOT_AVAILABLE, \
86
125
  "Buffer is not available for the current Context") \
126
+ V(ERR_CLOSED_MESSAGE_PORT, "Cannot send data on closed MessagePort") \
87
127
  V(ERR_CONSTRUCT_CALL_INVALID, "Constructor cannot be called") \
88
128
  V(ERR_CONSTRUCT_CALL_REQUIRED, "Cannot call constructor without `new`") \
129
+ V(ERR_CRYPTO_INITIALIZATION_FAILED, "Initialization failed") \
130
+ V(ERR_CRYPTO_INVALID_AUTH_TAG, "Invalid authentication tag") \
131
+ V(ERR_CRYPTO_INVALID_COUNTER, "Invalid counter") \
132
+ V(ERR_CRYPTO_INVALID_CURVE, "Invalid EC curve name") \
133
+ V(ERR_CRYPTO_INVALID_DIGEST, "Invalid digest") \
134
+ V(ERR_CRYPTO_INVALID_IV, "Invalid initialization vector") \
135
+ V(ERR_CRYPTO_INVALID_JWK, "Invalid JWK format") \
136
+ V(ERR_CRYPTO_INVALID_KEYLEN, "Invalid key length") \
137
+ V(ERR_CRYPTO_INVALID_KEYPAIR, "Invalid key pair") \
138
+ V(ERR_CRYPTO_INVALID_KEYTYPE, "Invalid key type") \
139
+ V(ERR_CRYPTO_INVALID_MESSAGELEN, "Invalid message length") \
140
+ V(ERR_CRYPTO_INVALID_SCRYPT_PARAMS, "Invalid scrypt params") \
141
+ V(ERR_CRYPTO_INVALID_STATE, "Invalid state") \
142
+ V(ERR_CRYPTO_INVALID_TAG_LENGTH, "Invalid taglength") \
143
+ V(ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE, "Unsupported JWK Key Type.") \
144
+ V(ERR_CRYPTO_OPERATION_FAILED, "Operation failed") \
145
+ V(ERR_CRYPTO_TIMING_SAFE_EQUAL_LENGTH, \
146
+ "Input buffers must have the same byte length") \
89
147
  V(ERR_CRYPTO_UNKNOWN_CIPHER, "Unknown cipher") \
90
148
  V(ERR_CRYPTO_UNKNOWN_DH_GROUP, "Unknown DH group") \
149
+ V(ERR_CRYPTO_UNSUPPORTED_OPERATION, "Unsupported crypto operation") \
150
+ V(ERR_CRYPTO_JOB_INIT_FAILED, "Failed to initialize crypto job config") \
151
+ V(ERR_DLOPEN_FAILED, "DLOpen failed") \
91
152
  V(ERR_EXECUTION_ENVIRONMENT_NOT_AVAILABLE, \
92
153
  "Context not associated with Node.js environment") \
154
+ V(ERR_INVALID_ADDRESS, "Invalid socket address") \
155
+ V(ERR_INVALID_MODULE, "No such module") \
156
+ V(ERR_INVALID_THIS, "Value of \"this\" is the wrong type") \
93
157
  V(ERR_INVALID_TRANSFER_OBJECT, "Found invalid object in transferList") \
94
158
  V(ERR_MEMORY_ALLOCATION_FAILED, "Failed to allocate memory") \
95
159
  V(ERR_OSSL_EVP_INVALID_DIGEST, "Invalid digest used") \
96
- V(ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST, \
97
- "MessagePort was found in message but not listed in transferList") \
160
+ V(ERR_MESSAGE_TARGET_CONTEXT_UNAVAILABLE, \
161
+ "A message object could not be deserialized successfully in the target " \
162
+ "vm.Context") \
163
+ V(ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST, \
164
+ "Object that needs transfer was found in message but not listed " \
165
+ "in transferList") \
98
166
  V(ERR_MISSING_PLATFORM_FOR_WORKER, \
99
167
  "The V8 platform used by this instance of Node does not support " \
100
168
  "creating Workers") \
@@ -102,8 +170,6 @@ void OnFatalError(const char* location, const char* message);
102
170
  "Loading non context-aware native modules has been disabled") \
103
171
  V(ERR_SCRIPT_EXECUTION_INTERRUPTED, \
104
172
  "Script execution was interrupted by `SIGINT`") \
105
- V(ERR_TRANSFERRING_EXTERNALIZED_SHAREDARRAYBUFFER, \
106
- "Cannot serialize externalized SharedArrayBuffer") \
107
173
  V(ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED, "Failed to set PSK identity hint") \
108
174
  V(ERR_WASI_NOT_STARTED, "wasi.start() has not been called") \
109
175
  V(ERR_WORKER_INIT_FAILED, "Worker initialization failure") \
@@ -0,0 +1,145 @@
1
+ #ifndef SRC_NODE_EXTERNAL_REFERENCE_H_
2
+ #define SRC_NODE_EXTERNAL_REFERENCE_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include <cinttypes>
7
+ #include <vector>
8
+ #include "v8-fast-api-calls.h"
9
+ #include "v8.h"
10
+
11
+ namespace node {
12
+
13
+ using CFunctionCallback = void (*)(v8::Local<v8::Value> receiver);
14
+
15
+ // This class manages the external references from the V8 heap
16
+ // to the C++ addresses in Node.js.
17
+ class ExternalReferenceRegistry {
18
+ public:
19
+ ExternalReferenceRegistry();
20
+
21
+ #define ALLOWED_EXTERNAL_REFERENCE_TYPES(V) \
22
+ V(CFunctionCallback) \
23
+ V(const v8::CFunctionInfo*) \
24
+ V(v8::FunctionCallback) \
25
+ V(v8::AccessorGetterCallback) \
26
+ V(v8::AccessorSetterCallback) \
27
+ V(v8::AccessorNameGetterCallback) \
28
+ V(v8::AccessorNameSetterCallback) \
29
+ V(v8::GenericNamedPropertyDefinerCallback) \
30
+ V(v8::GenericNamedPropertyDeleterCallback) \
31
+ V(v8::GenericNamedPropertyEnumeratorCallback) \
32
+ V(v8::GenericNamedPropertyQueryCallback) \
33
+ V(v8::GenericNamedPropertySetterCallback)
34
+
35
+ #define V(ExternalReferenceType) \
36
+ void Register(ExternalReferenceType addr) { RegisterT(addr); }
37
+ ALLOWED_EXTERNAL_REFERENCE_TYPES(V)
38
+ #undef V
39
+
40
+ // This can be called only once.
41
+ const std::vector<intptr_t>& external_references();
42
+
43
+ bool is_empty() { return external_references_.empty(); }
44
+
45
+ private:
46
+ template <typename T>
47
+ void RegisterT(T* address) {
48
+ external_references_.push_back(reinterpret_cast<intptr_t>(address));
49
+ }
50
+ bool is_finalized_ = false;
51
+ std::vector<intptr_t> external_references_;
52
+ };
53
+
54
+ #define EXTERNAL_REFERENCE_BINDING_LIST_BASE(V) \
55
+ V(async_wrap) \
56
+ V(binding) \
57
+ V(blob) \
58
+ V(buffer) \
59
+ V(contextify) \
60
+ V(credentials) \
61
+ V(env_var) \
62
+ V(errors) \
63
+ V(fs) \
64
+ V(fs_dir) \
65
+ V(fs_event_wrap) \
66
+ V(handle_wrap) \
67
+ V(heap_utils) \
68
+ V(messaging) \
69
+ V(mksnapshot) \
70
+ V(native_module) \
71
+ V(options) \
72
+ V(os) \
73
+ V(performance) \
74
+ V(process_methods) \
75
+ V(process_object) \
76
+ V(report) \
77
+ V(task_queue) \
78
+ V(tcp_wrap) \
79
+ V(tty_wrap) \
80
+ V(url) \
81
+ V(util) \
82
+ V(pipe_wrap) \
83
+ V(serdes) \
84
+ V(string_decoder) \
85
+ V(stream_wrap) \
86
+ V(signal_wrap) \
87
+ V(trace_events) \
88
+ V(timers) \
89
+ V(types) \
90
+ V(uv) \
91
+ V(v8) \
92
+ V(zlib) \
93
+ V(wasm_web_api) \
94
+ V(worker)
95
+
96
+ #if NODE_HAVE_I18N_SUPPORT
97
+ #define EXTERNAL_REFERENCE_BINDING_LIST_I18N(V) V(icu)
98
+ #else
99
+ #define EXTERNAL_REFERENCE_BINDING_LIST_I18N(V)
100
+ #endif // NODE_HAVE_I18N_SUPPORT
101
+
102
+ #if HAVE_INSPECTOR
103
+ #define EXTERNAL_REFERENCE_BINDING_LIST_INSPECTOR(V) \
104
+ V(inspector) \
105
+ V(profiler)
106
+ #else
107
+ #define EXTERNAL_REFERENCE_BINDING_LIST_INSPECTOR(V)
108
+ #endif // HAVE_INSPECTOR
109
+
110
+ #if HAVE_DTRACE || HAVE_ETW
111
+ #define EXTERNAL_REFERENCE_BINDING_LIST_DTRACE(V) V(dtrace)
112
+ #else
113
+ #define EXTERNAL_REFERENCE_BINDING_LIST_DTRACE(V)
114
+ #endif
115
+
116
+ #if HAVE_OPENSSL
117
+ #define EXTERNAL_REFERENCE_BINDING_LIST_CRYPTO(V) V(crypto) V(tls_wrap)
118
+ #else
119
+ #define EXTERNAL_REFERENCE_BINDING_LIST_CRYPTO(V)
120
+ #endif // HAVE_OPENSSL
121
+
122
+ #define EXTERNAL_REFERENCE_BINDING_LIST(V) \
123
+ EXTERNAL_REFERENCE_BINDING_LIST_BASE(V) \
124
+ EXTERNAL_REFERENCE_BINDING_LIST_INSPECTOR(V) \
125
+ EXTERNAL_REFERENCE_BINDING_LIST_I18N(V) \
126
+ EXTERNAL_REFERENCE_BINDING_LIST_DTRACE(V) \
127
+ EXTERNAL_REFERENCE_BINDING_LIST_CRYPTO(V)
128
+
129
+ } // namespace node
130
+
131
+ // Declare all the external reference registration functions here,
132
+ // and define them later with #NODE_MODULE_EXTERNAL_REFERENCE(modname, func);
133
+ #define V(modname) \
134
+ void _register_external_reference_##modname( \
135
+ node::ExternalReferenceRegistry* registry);
136
+ EXTERNAL_REFERENCE_BINDING_LIST(V)
137
+ #undef V
138
+
139
+ #define NODE_MODULE_EXTERNAL_REFERENCE(modname, func) \
140
+ void _register_external_reference_##modname( \
141
+ node::ExternalReferenceRegistry* registry) { \
142
+ func(registry); \
143
+ }
144
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
145
+ #endif // SRC_NODE_EXTERNAL_REFERENCE_H_
@@ -28,7 +28,7 @@ void FSContinuationData::MaybeSetFirstPath(const std::string& path) {
28
28
  }
29
29
 
30
30
  std::string FSContinuationData::PopPath() {
31
- CHECK_GT(paths_.size(), 0);
31
+ CHECK(!paths_.empty());
32
32
  std::string path = std::move(paths_.back());
33
33
  paths_.pop_back();
34
34
  return path;
@@ -39,11 +39,13 @@ void FSContinuationData::Done(int result) {
39
39
  done_cb_(req_);
40
40
  }
41
41
 
42
- FSReqBase::FSReqBase(Environment* env,
43
- v8::Local<v8::Object> req,
44
- AsyncWrap::ProviderType type,
45
- bool use_bigint)
46
- : ReqWrap(env, req, type), use_bigint_(use_bigint) {
42
+ FSReqBase::FSReqBase(BindingData* binding_data,
43
+ v8::Local<v8::Object> req,
44
+ AsyncWrap::ProviderType type,
45
+ bool use_bigint)
46
+ : ReqWrap(binding_data->env(), req, type),
47
+ use_bigint_(use_bigint),
48
+ binding_data_(binding_data) {
47
49
  }
48
50
 
49
51
  void FSReqBase::Init(const char* syscall,
@@ -72,9 +74,13 @@ FSReqBase::Init(const char* syscall, size_t len, enum encoding encoding) {
72
74
  return buffer_;
73
75
  }
74
76
 
75
- FSReqCallback::FSReqCallback(Environment* env,
76
- v8::Local<v8::Object> req, bool use_bigint)
77
- : FSReqBase(env, req, AsyncWrap::PROVIDER_FSREQCALLBACK, use_bigint) {}
77
+ FSReqCallback::FSReqCallback(BindingData* binding_data,
78
+ v8::Local<v8::Object> req,
79
+ bool use_bigint)
80
+ : FSReqBase(binding_data,
81
+ req,
82
+ AsyncWrap::PROVIDER_FSREQCALLBACK,
83
+ use_bigint) {}
78
84
 
79
85
  template <typename NativeT, typename V8T>
80
86
  void FillStatsArray(AliasedBufferBase<NativeT, V8T>* fields,
@@ -112,18 +118,18 @@ void FillStatsArray(AliasedBufferBase<NativeT, V8T>* fields,
112
118
  #undef SET_FIELD_WITH_STAT
113
119
  }
114
120
 
115
- v8::Local<v8::Value> FillGlobalStatsArray(Environment* env,
121
+ v8::Local<v8::Value> FillGlobalStatsArray(BindingData* binding_data,
116
122
  const bool use_bigint,
117
123
  const uv_stat_t* s,
118
124
  const bool second) {
119
125
  const ptrdiff_t offset =
120
126
  second ? static_cast<ptrdiff_t>(FsStatsOffset::kFsStatsFieldsNumber) : 0;
121
127
  if (use_bigint) {
122
- auto* const arr = env->fs_stats_field_bigint_array();
128
+ auto* const arr = &binding_data->stats_field_bigint_array;
123
129
  FillStatsArray(arr, s, offset);
124
130
  return arr->GetJSArray();
125
131
  } else {
126
- auto* const arr = env->fs_stats_field_array();
132
+ auto* const arr = &binding_data->stats_field_array;
127
133
  FillStatsArray(arr, s, offset);
128
134
  return arr->GetJSArray();
129
135
  }
@@ -131,7 +137,9 @@ v8::Local<v8::Value> FillGlobalStatsArray(Environment* env,
131
137
 
132
138
  template <typename AliasedBufferT>
133
139
  FSReqPromise<AliasedBufferT>*
134
- FSReqPromise<AliasedBufferT>::New(Environment* env, bool use_bigint) {
140
+ FSReqPromise<AliasedBufferT>::New(BindingData* binding_data,
141
+ bool use_bigint) {
142
+ Environment* env = binding_data->env();
135
143
  v8::Local<v8::Object> obj;
136
144
  if (!env->fsreqpromise_constructor_template()
137
145
  ->NewInstance(env->context())
@@ -143,7 +151,7 @@ FSReqPromise<AliasedBufferT>::New(Environment* env, bool use_bigint) {
143
151
  obj->Set(env->context(), env->promise_string(), resolver).IsNothing()) {
144
152
  return nullptr;
145
153
  }
146
- return new FSReqPromise(env, obj, use_bigint);
154
+ return new FSReqPromise(binding_data, obj, use_bigint);
147
155
  }
148
156
 
149
157
  template <typename AliasedBufferT>
@@ -154,12 +162,15 @@ FSReqPromise<AliasedBufferT>::~FSReqPromise() {
154
162
 
155
163
  template <typename AliasedBufferT>
156
164
  FSReqPromise<AliasedBufferT>::FSReqPromise(
157
- Environment* env,
165
+ BindingData* binding_data,
158
166
  v8::Local<v8::Object> obj,
159
167
  bool use_bigint)
160
- : FSReqBase(env, obj, AsyncWrap::PROVIDER_FSREQPROMISE, use_bigint),
168
+ : FSReqBase(binding_data,
169
+ obj,
170
+ AsyncWrap::PROVIDER_FSREQPROMISE,
171
+ use_bigint),
161
172
  stats_field_array_(
162
- env->isolate(),
173
+ env()->isolate(),
163
174
  static_cast<size_t>(FsStatsOffset::kFsStatsFieldsNumber)) {}
164
175
 
165
176
  template <typename AliasedBufferT>
@@ -208,15 +219,21 @@ void FSReqPromise<AliasedBufferT>::MemoryInfo(MemoryTracker* tracker) const {
208
219
  tracker->TrackField("stats_field_array", stats_field_array_);
209
220
  }
210
221
 
211
- FSReqBase* GetReqWrap(Environment* env, v8::Local<v8::Value> value,
222
+ FSReqBase* GetReqWrap(const v8::FunctionCallbackInfo<v8::Value>& args,
223
+ int index,
212
224
  bool use_bigint) {
225
+ v8::Local<v8::Value> value = args[index];
213
226
  if (value->IsObject()) {
214
227
  return Unwrap<FSReqBase>(value.As<v8::Object>());
215
- } else if (value->StrictEquals(env->fs_use_promises_symbol())) {
228
+ }
229
+
230
+ BindingData* binding_data = Environment::GetBindingData<BindingData>(args);
231
+ Environment* env = binding_data->env();
232
+ if (value->StrictEquals(env->fs_use_promises_symbol())) {
216
233
  if (use_bigint) {
217
- return FSReqPromise<AliasedBigUint64Array>::New(env, use_bigint);
234
+ return FSReqPromise<AliasedBigUint64Array>::New(binding_data, use_bigint);
218
235
  } else {
219
- return FSReqPromise<AliasedFloat64Array>::New(env, use_bigint);
236
+ return FSReqPromise<AliasedFloat64Array>::New(binding_data, use_bigint);
220
237
  }
221
238
  }
222
239
  return nullptr;