@encharm/cws 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/dist/bindings/cws_linux_108.node +0 -0
  2. package/dist/bindings/cws_linux_64.node +0 -0
  3. package/dist/bindings/cws_linux_72.node +0 -0
  4. package/dist/bindings/cws_linux_79.node +0 -0
  5. package/dist/bindings/cws_linux_83.node +0 -0
  6. package/dist/bindings/cws_linux_93.node +0 -0
  7. package/dist/bindings/cws_win32_64.node +0 -0
  8. package/dist/bindings/cws_win32_72.node +0 -0
  9. package/dist/bindings/cws_win32_79.node +0 -0
  10. package/dist/bindings/cws_win32_83.node +0 -0
  11. package/dist/bindings/cws_win32_93.node +0 -0
  12. package/package.json +1 -1
  13. package/src/Addon.h +24 -2
  14. package/src/HTTPSocket.cpp +1 -1
  15. package/src/headers/{13 → 18}/aliased_buffer.h +61 -9
  16. package/src/headers/18/aliased_struct-inl.h +54 -0
  17. package/src/headers/18/aliased_struct.h +63 -0
  18. package/src/headers/{12 → 18}/async_wrap-inl.h +0 -0
  19. package/src/headers/{12 → 18}/async_wrap.h +26 -2
  20. package/src/headers/{12/base64.h → 18/base64-inl.h} +78 -86
  21. package/src/headers/18/base64.h +69 -0
  22. package/src/headers/{12 → 18}/base_object-inl.h +46 -25
  23. package/src/headers/{12 → 18}/base_object.h +82 -17
  24. package/src/headers/{12 → 18}/callback_queue-inl.h +9 -9
  25. package/src/headers/{12 → 18}/callback_queue.h +13 -5
  26. package/src/headers/18/cares_wrap.h +523 -0
  27. package/src/headers/{12 → 18}/connect_wrap.h +0 -0
  28. package/src/headers/{12 → 18}/connection_wrap.h +0 -0
  29. package/src/headers/18/crypto/crypto_aes.h +89 -0
  30. package/src/headers/{13/node_crypto_bio.h → 18/crypto/crypto_bio.h} +3 -4
  31. package/src/headers/18/crypto/crypto_cipher.h +291 -0
  32. package/src/headers/{13/node_crypto_clienthello-inl.h → 18/crypto/crypto_clienthello-inl.h} +4 -5
  33. package/src/headers/{13/node_crypto_clienthello.h → 18/crypto/crypto_clienthello.h} +3 -4
  34. package/src/headers/{12/node_crypto_common.h → 18/crypto/crypto_common.h} +49 -36
  35. package/src/headers/18/crypto/crypto_context.h +147 -0
  36. package/src/headers/18/crypto/crypto_dh.h +156 -0
  37. package/src/headers/18/crypto/crypto_dsa.h +77 -0
  38. package/src/headers/18/crypto/crypto_ec.h +170 -0
  39. package/src/headers/{12/node_crypto_groups.h → 18/crypto/crypto_groups.h} +3 -3
  40. package/src/headers/18/crypto/crypto_hash.h +89 -0
  41. package/src/headers/18/crypto/crypto_hkdf.h +65 -0
  42. package/src/headers/18/crypto/crypto_hmac.h +94 -0
  43. package/src/headers/18/crypto/crypto_keygen.h +305 -0
  44. package/src/headers/18/crypto/crypto_keys.h +420 -0
  45. package/src/headers/18/crypto/crypto_pbkdf2.h +76 -0
  46. package/src/headers/18/crypto/crypto_random.h +130 -0
  47. package/src/headers/18/crypto/crypto_rsa.h +141 -0
  48. package/src/headers/18/crypto/crypto_scrypt.h +87 -0
  49. package/src/headers/18/crypto/crypto_sig.h +168 -0
  50. package/src/headers/18/crypto/crypto_spkac.h +21 -0
  51. package/src/headers/18/crypto/crypto_timing.h +20 -0
  52. package/src/headers/{13/tls_wrap.h → 18/crypto/crypto_tls.h} +137 -66
  53. package/src/headers/18/crypto/crypto_util.h +791 -0
  54. package/src/headers/18/crypto/crypto_x509.h +143 -0
  55. package/src/headers/{12 → 18}/debug_utils-inl.h +0 -0
  56. package/src/headers/{13 → 18}/debug_utils.h +7 -4
  57. package/src/headers/{12 → 18}/diagnosticfilename-inl.h +0 -0
  58. package/src/headers/{12 → 18}/env-inl.h +397 -304
  59. package/src/headers/{12 → 18}/env.h +397 -172
  60. package/src/headers/{12 → 18}/handle_wrap.h +7 -3
  61. package/src/headers/18/histogram-inl.h +107 -0
  62. package/src/headers/18/histogram.h +239 -0
  63. package/src/headers/{13 → 18}/inspector_agent.h +4 -7
  64. package/src/headers/{12 → 18}/inspector_io.h +0 -0
  65. package/src/headers/{13 → 18}/inspector_profiler.h +17 -5
  66. package/src/headers/{12 → 18}/inspector_socket.h +0 -0
  67. package/src/headers/{12 → 18}/inspector_socket_server.h +0 -0
  68. package/src/headers/18/js_native_api.h +571 -0
  69. package/src/headers/{13 → 18}/js_native_api_types.h +30 -7
  70. package/src/headers/{12 → 18}/js_native_api_v8.h +220 -83
  71. package/src/headers/{12 → 18}/js_native_api_v8_internals.h +6 -5
  72. package/src/headers/{12 → 18}/js_stream.h +0 -0
  73. package/src/headers/{12 → 18}/json_utils.h +0 -0
  74. package/src/headers/{13 → 18}/memory_tracker-inl.h +6 -5
  75. package/src/headers/{13 → 18}/memory_tracker.h +0 -7
  76. package/src/headers/{13 → 18}/module_wrap.h +24 -7
  77. package/src/headers/{13 → 18}/node.h +329 -68
  78. package/src/headers/18/node_api.h +288 -0
  79. package/src/headers/18/node_api_internals.h +38 -0
  80. package/src/headers/{12 → 18}/node_api_types.h +12 -9
  81. package/src/headers/{12 → 18}/node_binding.h +0 -0
  82. package/src/headers/18/node_blob.h +191 -0
  83. package/src/headers/18/node_bob-inl.h +37 -0
  84. package/src/headers/18/node_bob.h +111 -0
  85. package/src/headers/{13 → 18}/node_buffer.h +0 -0
  86. package/src/headers/{13 → 18}/node_constants.h +5 -1
  87. package/src/headers/{12 → 18}/node_context_data.h +5 -0
  88. package/src/headers/{12 → 18}/node_contextify.h +37 -2
  89. package/src/headers/{10/node_win32_perfctr_provider.h → 18/node_crypto.h} +30 -31
  90. package/src/headers/{12 → 18}/node_dir.h +0 -0
  91. package/src/headers/{12 → 18}/node_dtrace.h +0 -0
  92. package/src/headers/{12 → 18}/node_errors.h +90 -24
  93. package/src/headers/18/node_external_reference.h +145 -0
  94. package/src/headers/{13 → 18}/node_file-inl.h +38 -21
  95. package/src/headers/{12 → 18}/node_file.h +74 -13
  96. package/src/headers/{13 → 18}/node_http2.h +365 -269
  97. package/src/headers/{12 → 18}/node_http2_state.h +40 -50
  98. package/src/headers/{13 → 18}/node_http_common-inl.h +25 -5
  99. package/src/headers/{13 → 18}/node_http_common.h +24 -20
  100. package/src/headers/{13 → 18}/node_i18n.h +2 -1
  101. package/src/headers/{12 → 18}/node_internals.h +39 -41
  102. package/src/headers/{13 → 18}/node_main_instance.h +15 -18
  103. package/src/headers/{12 → 18}/node_mem-inl.h +0 -0
  104. package/src/headers/{12 → 18}/node_mem.h +1 -1
  105. package/src/headers/{13 → 18}/node_messaging.h +170 -23
  106. package/src/headers/{12 → 18}/node_metadata.h +17 -4
  107. package/src/headers/{12 → 18}/node_mutex.h +77 -1
  108. package/src/headers/{12 → 18}/node_native_module.h +11 -1
  109. package/src/headers/{13 → 18}/node_native_module_env.h +14 -8
  110. package/src/headers/{12 → 18}/node_object_wrap.h +0 -0
  111. package/src/headers/{13 → 18}/node_options-inl.h +51 -21
  112. package/src/headers/{13 → 18}/node_options.h +46 -14
  113. package/src/headers/18/node_perf.h +168 -0
  114. package/src/headers/{12 → 18}/node_perf_common.h +16 -22
  115. package/src/headers/{12 → 18}/node_platform.h +21 -16
  116. package/src/headers/18/node_process-inl.h +26 -0
  117. package/src/headers/18/node_process.h +97 -0
  118. package/src/headers/{13 → 18}/node_report.h +2 -2
  119. package/src/headers/{13 → 18}/node_revert.h +10 -0
  120. package/src/headers/{12 → 18}/node_root_certs.h +439 -651
  121. package/src/headers/18/node_snapshot_builder.h +43 -0
  122. package/src/headers/18/node_snapshotable.h +130 -0
  123. package/src/headers/{12 → 18}/node_sockaddr-inl.h +100 -4
  124. package/src/headers/18/node_sockaddr.h +405 -0
  125. package/src/headers/{12 → 18}/node_stat_watcher.h +7 -1
  126. package/src/headers/{12 → 18}/node_union_bytes.h +0 -0
  127. package/src/headers/{13 → 18}/node_url.h +18 -1
  128. package/src/headers/18/node_v8.h +41 -0
  129. package/src/headers/{12 → 18}/node_v8_platform-inl.h +10 -0
  130. package/src/headers/{13 → 18}/node_version.h +7 -7
  131. package/src/headers/{12 → 18}/node_wasi.h +0 -0
  132. package/src/headers/18/node_wasm_web_api.h +55 -0
  133. package/src/headers/{13 → 18}/node_watchdog.h +0 -0
  134. package/src/headers/{10 → 18}/node_win32_etw_provider-inl.h +7 -6
  135. package/src/headers/{10 → 18}/node_win32_etw_provider.h +0 -0
  136. package/src/headers/{13 → 18}/node_worker.h +24 -17
  137. package/src/headers/{12 → 18}/pipe_wrap.h +2 -0
  138. package/src/headers/{12 → 18}/req_wrap-inl.h +0 -0
  139. package/src/headers/{12 → 18}/req_wrap.h +1 -1
  140. package/src/headers/{12 → 18}/spawn_sync.h +0 -0
  141. package/src/headers/{13 → 18}/stream_base-inl.h +58 -22
  142. package/src/headers/{13 → 18}/stream_base.h +29 -3
  143. package/src/headers/{13 → 18}/stream_pipe.h +8 -3
  144. package/src/headers/{12 → 18}/stream_wrap.h +4 -1
  145. package/src/headers/{13 → 18}/string_bytes.h +0 -7
  146. package/src/headers/{12 → 18}/string_decoder-inl.h +0 -0
  147. package/src/headers/{10 → 18}/string_decoder.h +0 -0
  148. package/src/headers/{13 → 18}/string_search.h +2 -2
  149. package/src/headers/{12 → 18}/tcp_wrap.h +4 -0
  150. package/src/headers/{12 → 18}/threadpoolwork-inl.h +0 -0
  151. package/src/headers/18/timer_wrap-inl.h +32 -0
  152. package/src/headers/18/timer_wrap.h +85 -0
  153. package/src/headers/{13 → 18}/tracing/agent.h +1 -1
  154. package/src/headers/{12 → 18}/tracing/node_trace_buffer.h +0 -0
  155. package/src/headers/{12 → 18}/tracing/node_trace_writer.h +0 -0
  156. package/src/headers/{13 → 18}/tracing/trace_event.h +23 -13
  157. package/src/headers/{12 → 18}/tracing/trace_event_common.h +0 -0
  158. package/src/headers/{12 → 18}/tracing/traced_value.h +0 -0
  159. package/src/headers/{13 → 18}/tty_wrap.h +2 -1
  160. package/src/headers/{13 → 18}/udp_wrap.h +5 -0
  161. package/src/headers/{13 → 18}/util-inl.h +69 -15
  162. package/src/headers/{13 → 18}/util.h +93 -31
  163. package/src/headers/18/v8-fast-api-calls.h +939 -0
  164. package/src/headers/{12 → 18}/v8abbr.h +2 -2
  165. package/src/headers/10/aliased_buffer.h +0 -241
  166. package/src/headers/10/async_wrap-inl.h +0 -106
  167. package/src/headers/10/async_wrap.h +0 -218
  168. package/src/headers/10/base64.h +0 -197
  169. package/src/headers/10/base_object-inl.h +0 -132
  170. package/src/headers/10/base_object.h +0 -115
  171. package/src/headers/10/connect_wrap.h +0 -28
  172. package/src/headers/10/connection_wrap.h +0 -30
  173. package/src/headers/10/debug_utils.h +0 -128
  174. package/src/headers/10/env-inl.h +0 -906
  175. package/src/headers/10/env.h +0 -1046
  176. package/src/headers/10/handle_wrap.h +0 -114
  177. package/src/headers/10/inspector_agent.h +0 -137
  178. package/src/headers/10/inspector_io.h +0 -97
  179. package/src/headers/10/inspector_socket.h +0 -59
  180. package/src/headers/10/inspector_socket_server.h +0 -104
  181. package/src/headers/10/js_stream.h +0 -57
  182. package/src/headers/10/memory_tracker-inl.h +0 -318
  183. package/src/headers/10/memory_tracker.h +0 -246
  184. package/src/headers/10/module_wrap.h +0 -100
  185. package/src/headers/10/node.h +0 -863
  186. package/src/headers/10/node_api.h +0 -752
  187. package/src/headers/10/node_api_types.h +0 -171
  188. package/src/headers/10/node_buffer.h +0 -90
  189. package/src/headers/10/node_code_cache.h +0 -17
  190. package/src/headers/10/node_constants.h +0 -74
  191. package/src/headers/10/node_context_data.h +0 -39
  192. package/src/headers/10/node_contextify.h +0 -141
  193. package/src/headers/10/node_counters.h +0 -59
  194. package/src/headers/10/node_crypto.h +0 -699
  195. package/src/headers/10/node_crypto_bio.h +0 -177
  196. package/src/headers/10/node_crypto_clienthello-inl.h +0 -92
  197. package/src/headers/10/node_crypto_clienthello.h +0 -131
  198. package/src/headers/10/node_crypto_groups.h +0 -416
  199. package/src/headers/10/node_dtrace.h +0 -84
  200. package/src/headers/10/node_errors.h +0 -118
  201. package/src/headers/10/node_file.h +0 -373
  202. package/src/headers/10/node_http2.h +0 -1304
  203. package/src/headers/10/node_http2_state.h +0 -158
  204. package/src/headers/10/node_i18n.h +0 -69
  205. package/src/headers/10/node_internals.h +0 -952
  206. package/src/headers/10/node_javascript.h +0 -41
  207. package/src/headers/10/node_messaging.h +0 -219
  208. package/src/headers/10/node_mutex.h +0 -191
  209. package/src/headers/10/node_object_wrap.h +0 -130
  210. package/src/headers/10/node_options-inl.h +0 -444
  211. package/src/headers/10/node_options.h +0 -397
  212. package/src/headers/10/node_perf.h +0 -134
  213. package/src/headers/10/node_perf_common.h +0 -96
  214. package/src/headers/10/node_persistent.h +0 -30
  215. package/src/headers/10/node_platform.h +0 -170
  216. package/src/headers/10/node_revert.h +0 -75
  217. package/src/headers/10/node_root_certs.h +0 -3393
  218. package/src/headers/10/node_stat_watcher.h +0 -65
  219. package/src/headers/10/node_url.h +0 -193
  220. package/src/headers/10/node_version.h +0 -120
  221. package/src/headers/10/node_watchdog.h +0 -114
  222. package/src/headers/10/node_worker.h +0 -94
  223. package/src/headers/10/pipe_wrap.h +0 -76
  224. package/src/headers/10/req_wrap-inl.h +0 -166
  225. package/src/headers/10/req_wrap.h +0 -61
  226. package/src/headers/10/sharedarraybuffer_metadata.h +0 -67
  227. package/src/headers/10/spawn_sync.h +0 -240
  228. package/src/headers/10/stream_base-inl.h +0 -458
  229. package/src/headers/10/stream_base.h +0 -378
  230. package/src/headers/10/stream_pipe.h +0 -72
  231. package/src/headers/10/stream_wrap.h +0 -130
  232. package/src/headers/10/string_bytes.h +0 -126
  233. package/src/headers/10/string_decoder-inl.h +0 -38
  234. package/src/headers/10/string_search.h +0 -620
  235. package/src/headers/10/tcp_wrap.h +0 -99
  236. package/src/headers/10/tls_wrap.h +0 -195
  237. package/src/headers/10/tracing/agent.h +0 -178
  238. package/src/headers/10/tracing/node_trace_buffer.h +0 -83
  239. package/src/headers/10/tracing/node_trace_writer.h +0 -75
  240. package/src/headers/10/tracing/trace_event.h +0 -706
  241. package/src/headers/10/tracing/trace_event_common.h +0 -1102
  242. package/src/headers/10/tracing/traced_value.h +0 -68
  243. package/src/headers/10/tty_wrap.h +0 -63
  244. package/src/headers/10/udp_wrap.h +0 -102
  245. package/src/headers/10/util-inl.h +0 -459
  246. package/src/headers/10/util.h +0 -508
  247. package/src/headers/10/v8abbr.h +0 -121
  248. package/src/headers/12/aliased_buffer.h +0 -263
  249. package/src/headers/12/debug_utils.h +0 -181
  250. package/src/headers/12/histogram-inl.h +0 -83
  251. package/src/headers/12/histogram.h +0 -98
  252. package/src/headers/12/http_parser_adaptor.h +0 -24
  253. package/src/headers/12/inspector_agent.h +0 -147
  254. package/src/headers/12/inspector_profiler.h +0 -137
  255. package/src/headers/12/js_native_api.h +0 -541
  256. package/src/headers/12/js_native_api_types.h +0 -139
  257. package/src/headers/12/memory_tracker-inl.h +0 -339
  258. package/src/headers/12/memory_tracker.h +0 -283
  259. package/src/headers/12/module_wrap.h +0 -99
  260. package/src/headers/12/node.h +0 -887
  261. package/src/headers/12/node_api.h +0 -239
  262. package/src/headers/12/node_buffer.h +0 -92
  263. package/src/headers/12/node_constants.h +0 -80
  264. package/src/headers/12/node_crypto.h +0 -800
  265. package/src/headers/12/node_crypto_bio.h +0 -195
  266. package/src/headers/12/node_crypto_clienthello-inl.h +0 -91
  267. package/src/headers/12/node_crypto_clienthello.h +0 -132
  268. package/src/headers/12/node_file-inl.h +0 -289
  269. package/src/headers/12/node_http2.h +0 -1311
  270. package/src/headers/12/node_http_parser_impl.h +0 -994
  271. package/src/headers/12/node_i18n.h +0 -144
  272. package/src/headers/12/node_main_instance.h +0 -97
  273. package/src/headers/12/node_messaging.h +0 -227
  274. package/src/headers/12/node_native_module_env.h +0 -65
  275. package/src/headers/12/node_options-inl.h +0 -447
  276. package/src/headers/12/node_options.h +0 -479
  277. package/src/headers/12/node_perf.h +0 -181
  278. package/src/headers/12/node_process.h +0 -41
  279. package/src/headers/12/node_report.h +0 -47
  280. package/src/headers/12/node_revert.h +0 -78
  281. package/src/headers/12/node_sockaddr.h +0 -123
  282. package/src/headers/12/node_url.h +0 -188
  283. package/src/headers/12/node_version.h +0 -98
  284. package/src/headers/12/node_watchdog.h +0 -152
  285. package/src/headers/12/node_win32_etw_provider-inl.h +0 -287
  286. package/src/headers/12/node_win32_etw_provider.h +0 -99
  287. package/src/headers/12/node_worker.h +0 -142
  288. package/src/headers/12/sharedarraybuffer_metadata.h +0 -72
  289. package/src/headers/12/stream_base-inl.h +0 -323
  290. package/src/headers/12/stream_base.h +0 -431
  291. package/src/headers/12/stream_pipe.h +0 -72
  292. package/src/headers/12/string_bytes.h +0 -142
  293. package/src/headers/12/string_decoder.h +0 -50
  294. package/src/headers/12/string_search.h +0 -638
  295. package/src/headers/12/tls_wrap.h +0 -221
  296. package/src/headers/12/tracing/agent.h +0 -195
  297. package/src/headers/12/tracing/trace_event.h +0 -710
  298. package/src/headers/12/tty_wrap.h +0 -64
  299. package/src/headers/12/udp_wrap.h +0 -222
  300. package/src/headers/12/util-inl.h +0 -529
  301. package/src/headers/12/util.h +0 -765
  302. package/src/headers/13/async_wrap-inl.h +0 -94
  303. package/src/headers/13/async_wrap.h +0 -224
  304. package/src/headers/13/base64.h +0 -197
  305. package/src/headers/13/base_object-inl.h +0 -353
  306. package/src/headers/13/base_object.h +0 -229
  307. package/src/headers/13/connect_wrap.h +0 -26
  308. package/src/headers/13/connection_wrap.h +0 -30
  309. package/src/headers/13/debug_utils-inl.h +0 -223
  310. package/src/headers/13/diagnosticfilename-inl.h +0 -33
  311. package/src/headers/13/env-inl.h +0 -1293
  312. package/src/headers/13/env.h +0 -1469
  313. package/src/headers/13/handle_wrap.h +0 -117
  314. package/src/headers/13/histogram-inl.h +0 -83
  315. package/src/headers/13/histogram.h +0 -98
  316. package/src/headers/13/inspector_io.h +0 -78
  317. package/src/headers/13/inspector_socket.h +0 -60
  318. package/src/headers/13/inspector_socket_server.h +0 -110
  319. package/src/headers/13/js_native_api.h +0 -541
  320. package/src/headers/13/js_native_api_v8.h +0 -303
  321. package/src/headers/13/js_native_api_v8_internals.h +0 -38
  322. package/src/headers/13/js_stream.h +0 -52
  323. package/src/headers/13/json_utils.h +0 -160
  324. package/src/headers/13/node_api.h +0 -239
  325. package/src/headers/13/node_api_types.h +0 -44
  326. package/src/headers/13/node_binding.h +0 -99
  327. package/src/headers/13/node_context_data.h +0 -39
  328. package/src/headers/13/node_contextify.h +0 -161
  329. package/src/headers/13/node_crypto.h +0 -800
  330. package/src/headers/13/node_crypto_common.h +0 -138
  331. package/src/headers/13/node_crypto_groups.h +0 -415
  332. package/src/headers/13/node_dir.h +0 -52
  333. package/src/headers/13/node_dtrace.h +0 -86
  334. package/src/headers/13/node_errors.h +0 -210
  335. package/src/headers/13/node_file.h +0 -364
  336. package/src/headers/13/node_http2_state.h +0 -144
  337. package/src/headers/13/node_internals.h +0 -405
  338. package/src/headers/13/node_mem-inl.h +0 -112
  339. package/src/headers/13/node_mem.h +0 -41
  340. package/src/headers/13/node_metadata.h +0 -109
  341. package/src/headers/13/node_mutex.h +0 -247
  342. package/src/headers/13/node_native_module.h +0 -99
  343. package/src/headers/13/node_object_wrap.h +0 -132
  344. package/src/headers/13/node_perf.h +0 -181
  345. package/src/headers/13/node_perf_common.h +0 -97
  346. package/src/headers/13/node_platform.h +0 -190
  347. package/src/headers/13/node_process.h +0 -41
  348. package/src/headers/13/node_root_certs.h +0 -3424
  349. package/src/headers/13/node_sockaddr-inl.h +0 -170
  350. package/src/headers/13/node_sockaddr.h +0 -123
  351. package/src/headers/13/node_stat_watcher.h +0 -66
  352. package/src/headers/13/node_union_bytes.h +0 -103
  353. package/src/headers/13/node_v8_platform-inl.h +0 -184
  354. package/src/headers/13/node_wasi.h +0 -108
  355. package/src/headers/13/node_win32_etw_provider-inl.h +0 -287
  356. package/src/headers/13/node_win32_etw_provider.h +0 -99
  357. package/src/headers/13/pipe_wrap.h +0 -78
  358. package/src/headers/13/req_wrap-inl.h +0 -170
  359. package/src/headers/13/req_wrap.h +0 -77
  360. package/src/headers/13/spawn_sync.h +0 -242
  361. package/src/headers/13/stream_wrap.h +0 -130
  362. package/src/headers/13/string_decoder-inl.h +0 -37
  363. package/src/headers/13/string_decoder.h +0 -50
  364. package/src/headers/13/tcp_wrap.h +0 -101
  365. package/src/headers/13/threadpoolwork-inl.h +0 -57
  366. package/src/headers/13/tracing/node_trace_buffer.h +0 -83
  367. package/src/headers/13/tracing/node_trace_writer.h +0 -75
  368. package/src/headers/13/tracing/trace_event_common.h +0 -1109
  369. package/src/headers/13/tracing/traced_value.h +0 -70
  370. package/src/headers/13/v8abbr.h +0 -124
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,40 +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_WIN32_PERFCTR_PROVIDER_H_
23
- #define SRC_NODE_WIN32_PERFCTR_PROVIDER_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
- #if defined(_MSC_VER)
28
- # define INLINE __forceinline
29
- #else
30
- # define INLINE inline
31
- #endif
32
-
33
- namespace node {
34
-
35
- extern HANDLE NodeCounterProvider;
36
-
37
- INLINE bool NODE_COUNTER_ENABLED() { return NodeCounterProvider != nullptr; }
38
- void NODE_COUNT_HTTP_SERVER_REQUEST();
39
- void NODE_COUNT_HTTP_SERVER_RESPONSE();
40
- void NODE_COUNT_HTTP_CLIENT_REQUEST();
41
- void NODE_COUNT_HTTP_CLIENT_RESPONSE();
42
- void NODE_COUNT_SERVER_CONN_OPEN();
43
- void NODE_COUNT_SERVER_CONN_CLOSE();
44
- void NODE_COUNT_NET_BYTES_SENT(int bytes);
45
- void NODE_COUNT_NET_BYTES_RECV(int bytes);
46
- uint64_t NODE_COUNT_GET_GC_RAWTIME();
47
- void NODE_COUNT_GC_PERCENTTIME(unsigned int percent);
48
- void NODE_COUNT_PIPE_BYTES_SENT(int bytes);
49
- void NODE_COUNT_PIPE_BYTES_RECV(int bytes);
50
-
51
- void InitPerfCountersWin32();
52
- void TermPerfCountersWin32();
53
-
54
- } // 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"
55
54
 
56
55
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
57
56
 
58
- #endif // SRC_NODE_WIN32_PERFCTR_PROVIDER_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_