@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
@@ -0,0 +1,288 @@
1
+ #ifndef SRC_NODE_API_H_
2
+ #define SRC_NODE_API_H_
3
+
4
+ #ifdef BUILDING_NODE_EXTENSION
5
+ #ifdef _WIN32
6
+ // Building native module against node
7
+ #define NAPI_EXTERN __declspec(dllimport)
8
+ #elif defined(__wasm32__)
9
+ #define NAPI_EXTERN __attribute__((__import_module__("napi")))
10
+ #endif
11
+ #endif
12
+ #include "js_native_api.h"
13
+ #include "node_api_types.h"
14
+
15
+ struct uv_loop_s; // Forward declaration.
16
+
17
+ #ifdef _WIN32
18
+ #define NAPI_MODULE_EXPORT __declspec(dllexport)
19
+ #else
20
+ #define NAPI_MODULE_EXPORT __attribute__((visibility("default")))
21
+ #endif
22
+
23
+ #if defined(__GNUC__)
24
+ #define NAPI_NO_RETURN __attribute__((noreturn))
25
+ #elif defined(_WIN32)
26
+ #define NAPI_NO_RETURN __declspec(noreturn)
27
+ #else
28
+ #define NAPI_NO_RETURN
29
+ #endif
30
+
31
+ typedef napi_value(NAPI_CDECL* napi_addon_register_func)(napi_env env,
32
+ napi_value exports);
33
+
34
+ typedef struct napi_module {
35
+ int nm_version;
36
+ unsigned int nm_flags;
37
+ const char* nm_filename;
38
+ napi_addon_register_func nm_register_func;
39
+ const char* nm_modname;
40
+ void* nm_priv;
41
+ void* reserved[4];
42
+ } napi_module;
43
+
44
+ #define NAPI_MODULE_VERSION 1
45
+
46
+ #if defined(_MSC_VER)
47
+ #if defined(__cplusplus)
48
+ #define NAPI_C_CTOR(fn) \
49
+ static void NAPI_CDECL fn(void); \
50
+ namespace { \
51
+ struct fn##_ { \
52
+ fn##_() { fn(); } \
53
+ } fn##_v_; \
54
+ } \
55
+ static void NAPI_CDECL fn(void)
56
+ #else // !defined(__cplusplus)
57
+ #pragma section(".CRT$XCU", read)
58
+ // The NAPI_C_CTOR macro defines a function fn that is called during CRT
59
+ // initialization.
60
+ // C does not support dynamic initialization of static variables and this code
61
+ // simulates C++ behavior. Exporting the function pointer prevents it from being
62
+ // optimized. See for details:
63
+ // https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-initialization?view=msvc-170
64
+ #define NAPI_C_CTOR(fn) \
65
+ static void NAPI_CDECL fn(void); \
66
+ __declspec(dllexport, allocate(".CRT$XCU")) void(NAPI_CDECL * fn##_)(void) = \
67
+ fn; \
68
+ static void NAPI_CDECL fn(void)
69
+ #endif // defined(__cplusplus)
70
+ #else
71
+ #define NAPI_C_CTOR(fn) \
72
+ static void fn(void) __attribute__((constructor)); \
73
+ static void fn(void)
74
+ #endif
75
+
76
+ #define NAPI_MODULE_X(modname, regfunc, priv, flags) \
77
+ EXTERN_C_START \
78
+ static napi_module _module = { \
79
+ NAPI_MODULE_VERSION, \
80
+ flags, \
81
+ __FILE__, \
82
+ regfunc, \
83
+ #modname, \
84
+ priv, \
85
+ {0}, \
86
+ }; \
87
+ NAPI_C_CTOR(_register_##modname) { napi_module_register(&_module); } \
88
+ EXTERN_C_END
89
+
90
+ #define NAPI_MODULE_INITIALIZER_X(base, version) \
91
+ NAPI_MODULE_INITIALIZER_X_HELPER(base, version)
92
+ #define NAPI_MODULE_INITIALIZER_X_HELPER(base, version) base##version
93
+
94
+ #ifdef __wasm32__
95
+ #define NAPI_WASM_INITIALIZER \
96
+ NAPI_MODULE_INITIALIZER_X(napi_register_wasm_v, NAPI_MODULE_VERSION)
97
+ #define NAPI_MODULE(modname, regfunc) \
98
+ EXTERN_C_START \
99
+ NAPI_MODULE_EXPORT napi_value NAPI_WASM_INITIALIZER(napi_env env, \
100
+ napi_value exports) { \
101
+ return regfunc(env, exports); \
102
+ } \
103
+ EXTERN_C_END
104
+ #else
105
+ #define NAPI_MODULE(modname, regfunc) \
106
+ NAPI_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage)
107
+ #endif
108
+
109
+ #define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v
110
+
111
+ #define NAPI_MODULE_INITIALIZER \
112
+ NAPI_MODULE_INITIALIZER_X(NAPI_MODULE_INITIALIZER_BASE, NAPI_MODULE_VERSION)
113
+
114
+ #define NAPI_MODULE_INIT() \
115
+ EXTERN_C_START \
116
+ NAPI_MODULE_EXPORT napi_value NAPI_MODULE_INITIALIZER(napi_env env, \
117
+ napi_value exports); \
118
+ EXTERN_C_END \
119
+ NAPI_MODULE(NODE_GYP_MODULE_NAME, NAPI_MODULE_INITIALIZER) \
120
+ napi_value NAPI_MODULE_INITIALIZER(napi_env env, napi_value exports)
121
+
122
+ EXTERN_C_START
123
+
124
+ NAPI_EXTERN void NAPI_CDECL napi_module_register(napi_module* mod);
125
+
126
+ NAPI_EXTERN NAPI_NO_RETURN void NAPI_CDECL
127
+ napi_fatal_error(const char* location,
128
+ size_t location_len,
129
+ const char* message,
130
+ size_t message_len);
131
+
132
+ // Methods for custom handling of async operations
133
+ NAPI_EXTERN napi_status NAPI_CDECL
134
+ napi_async_init(napi_env env,
135
+ napi_value async_resource,
136
+ napi_value async_resource_name,
137
+ napi_async_context* result);
138
+
139
+ NAPI_EXTERN napi_status NAPI_CDECL
140
+ napi_async_destroy(napi_env env, napi_async_context async_context);
141
+
142
+ NAPI_EXTERN napi_status NAPI_CDECL
143
+ napi_make_callback(napi_env env,
144
+ napi_async_context async_context,
145
+ napi_value recv,
146
+ napi_value func,
147
+ size_t argc,
148
+ const napi_value* argv,
149
+ napi_value* result);
150
+
151
+ // Methods to provide node::Buffer functionality with napi types
152
+ NAPI_EXTERN napi_status NAPI_CDECL napi_create_buffer(napi_env env,
153
+ size_t length,
154
+ void** data,
155
+ napi_value* result);
156
+ NAPI_EXTERN napi_status NAPI_CDECL
157
+ napi_create_external_buffer(napi_env env,
158
+ size_t length,
159
+ void* data,
160
+ napi_finalize finalize_cb,
161
+ void* finalize_hint,
162
+ napi_value* result);
163
+ NAPI_EXTERN napi_status NAPI_CDECL napi_create_buffer_copy(napi_env env,
164
+ size_t length,
165
+ const void* data,
166
+ void** result_data,
167
+ napi_value* result);
168
+ NAPI_EXTERN napi_status NAPI_CDECL napi_is_buffer(napi_env env,
169
+ napi_value value,
170
+ bool* result);
171
+ NAPI_EXTERN napi_status NAPI_CDECL napi_get_buffer_info(napi_env env,
172
+ napi_value value,
173
+ void** data,
174
+ size_t* length);
175
+
176
+ // Methods to manage simple async operations
177
+ NAPI_EXTERN napi_status NAPI_CDECL
178
+ napi_create_async_work(napi_env env,
179
+ napi_value async_resource,
180
+ napi_value async_resource_name,
181
+ napi_async_execute_callback execute,
182
+ napi_async_complete_callback complete,
183
+ void* data,
184
+ napi_async_work* result);
185
+ NAPI_EXTERN napi_status NAPI_CDECL napi_delete_async_work(napi_env env,
186
+ napi_async_work work);
187
+ NAPI_EXTERN napi_status NAPI_CDECL napi_queue_async_work(napi_env env,
188
+ napi_async_work work);
189
+ NAPI_EXTERN napi_status NAPI_CDECL napi_cancel_async_work(napi_env env,
190
+ napi_async_work work);
191
+
192
+ // version management
193
+ NAPI_EXTERN napi_status NAPI_CDECL
194
+ napi_get_node_version(napi_env env, const napi_node_version** version);
195
+
196
+ #if NAPI_VERSION >= 2
197
+
198
+ // Return the current libuv event loop for a given environment
199
+ NAPI_EXTERN napi_status NAPI_CDECL
200
+ napi_get_uv_event_loop(napi_env env, struct uv_loop_s** loop);
201
+
202
+ #endif // NAPI_VERSION >= 2
203
+
204
+ #if NAPI_VERSION >= 3
205
+
206
+ NAPI_EXTERN napi_status NAPI_CDECL napi_fatal_exception(napi_env env,
207
+ napi_value err);
208
+
209
+ NAPI_EXTERN napi_status NAPI_CDECL napi_add_env_cleanup_hook(
210
+ napi_env env, void(NAPI_CDECL* fun)(void* arg), void* arg);
211
+
212
+ NAPI_EXTERN napi_status NAPI_CDECL napi_remove_env_cleanup_hook(
213
+ napi_env env, void(NAPI_CDECL* fun)(void* arg), void* arg);
214
+
215
+ NAPI_EXTERN napi_status NAPI_CDECL
216
+ napi_open_callback_scope(napi_env env,
217
+ napi_value resource_object,
218
+ napi_async_context context,
219
+ napi_callback_scope* result);
220
+
221
+ NAPI_EXTERN napi_status NAPI_CDECL
222
+ napi_close_callback_scope(napi_env env, napi_callback_scope scope);
223
+
224
+ #endif // NAPI_VERSION >= 3
225
+
226
+ #if NAPI_VERSION >= 4
227
+
228
+ #ifndef __wasm32__
229
+ // Calling into JS from other threads
230
+ NAPI_EXTERN napi_status NAPI_CDECL
231
+ napi_create_threadsafe_function(napi_env env,
232
+ napi_value func,
233
+ napi_value async_resource,
234
+ napi_value async_resource_name,
235
+ size_t max_queue_size,
236
+ size_t initial_thread_count,
237
+ void* thread_finalize_data,
238
+ napi_finalize thread_finalize_cb,
239
+ void* context,
240
+ napi_threadsafe_function_call_js call_js_cb,
241
+ napi_threadsafe_function* result);
242
+
243
+ NAPI_EXTERN napi_status NAPI_CDECL napi_get_threadsafe_function_context(
244
+ napi_threadsafe_function func, void** result);
245
+
246
+ NAPI_EXTERN napi_status NAPI_CDECL
247
+ napi_call_threadsafe_function(napi_threadsafe_function func,
248
+ void* data,
249
+ napi_threadsafe_function_call_mode is_blocking);
250
+
251
+ NAPI_EXTERN napi_status NAPI_CDECL
252
+ napi_acquire_threadsafe_function(napi_threadsafe_function func);
253
+
254
+ NAPI_EXTERN napi_status NAPI_CDECL napi_release_threadsafe_function(
255
+ napi_threadsafe_function func, napi_threadsafe_function_release_mode mode);
256
+
257
+ NAPI_EXTERN napi_status NAPI_CDECL
258
+ napi_unref_threadsafe_function(napi_env env, napi_threadsafe_function func);
259
+
260
+ NAPI_EXTERN napi_status NAPI_CDECL
261
+ napi_ref_threadsafe_function(napi_env env, napi_threadsafe_function func);
262
+ #endif // __wasm32__
263
+
264
+ #endif // NAPI_VERSION >= 4
265
+
266
+ #if NAPI_VERSION >= 8
267
+
268
+ NAPI_EXTERN napi_status NAPI_CDECL
269
+ napi_add_async_cleanup_hook(napi_env env,
270
+ napi_async_cleanup_hook hook,
271
+ void* arg,
272
+ napi_async_cleanup_hook_handle* remove_handle);
273
+
274
+ NAPI_EXTERN napi_status NAPI_CDECL
275
+ napi_remove_async_cleanup_hook(napi_async_cleanup_hook_handle remove_handle);
276
+
277
+ #endif // NAPI_VERSION >= 8
278
+
279
+ #ifdef NAPI_EXPERIMENTAL
280
+
281
+ NAPI_EXTERN napi_status NAPI_CDECL
282
+ node_api_get_module_file_name(napi_env env, const char** result);
283
+
284
+ #endif // NAPI_EXPERIMENTAL
285
+
286
+ EXTERN_C_END
287
+
288
+ #endif // SRC_NODE_API_H_
@@ -0,0 +1,38 @@
1
+ #ifndef SRC_NODE_API_INTERNALS_H_
2
+ #define SRC_NODE_API_INTERNALS_H_
3
+
4
+ #include "v8.h"
5
+ #define NAPI_EXPERIMENTAL
6
+ #include "env-inl.h"
7
+ #include "js_native_api_v8.h"
8
+ #include "node_api.h"
9
+ #include "util-inl.h"
10
+
11
+ struct node_napi_env__ : public napi_env__ {
12
+ node_napi_env__(v8::Local<v8::Context> context,
13
+ const std::string& module_filename);
14
+ ~node_napi_env__();
15
+
16
+ bool can_call_into_js() const override;
17
+ v8::Maybe<bool> mark_arraybuffer_as_untransferable(
18
+ v8::Local<v8::ArrayBuffer> ab) const override;
19
+ void CallFinalizer(napi_finalize cb, void* data, void* hint) override;
20
+ template <bool enforceUncaughtExceptionPolicy>
21
+ void CallFinalizer(napi_finalize cb, void* data, void* hint);
22
+
23
+ void trigger_fatal_exception(v8::Local<v8::Value> local_err);
24
+ template <bool enforceUncaughtExceptionPolicy, typename T>
25
+ void CallbackIntoModule(T&& call);
26
+
27
+ inline node::Environment* node_env() const {
28
+ return node::Environment::GetCurrent(context());
29
+ }
30
+ inline const char* GetFilename() const { return filename.c_str(); }
31
+
32
+ std::string filename;
33
+ bool destructing = false;
34
+ };
35
+
36
+ using node_napi_env = node_napi_env__*;
37
+
38
+ #endif // SRC_NODE_API_INTERNALS_H_
@@ -22,16 +22,13 @@ typedef enum {
22
22
  } napi_threadsafe_function_call_mode;
23
23
  #endif // NAPI_VERSION >= 4
24
24
 
25
- typedef void (*napi_async_execute_callback)(napi_env env,
26
- void* data);
27
- typedef void (*napi_async_complete_callback)(napi_env env,
28
- napi_status status,
29
- void* data);
25
+ typedef void(NAPI_CDECL* napi_async_execute_callback)(napi_env env, void* data);
26
+ typedef void(NAPI_CDECL* napi_async_complete_callback)(napi_env env,
27
+ napi_status status,
28
+ void* data);
30
29
  #if NAPI_VERSION >= 4
31
- typedef void (*napi_threadsafe_function_call_js)(napi_env env,
32
- napi_value js_callback,
33
- void* context,
34
- void* data);
30
+ typedef void(NAPI_CDECL* napi_threadsafe_function_call_js)(
31
+ napi_env env, napi_value js_callback, void* context, void* data);
35
32
  #endif // NAPI_VERSION >= 4
36
33
 
37
34
  typedef struct {
@@ -41,4 +38,10 @@ typedef struct {
41
38
  const char* release;
42
39
  } napi_node_version;
43
40
 
41
+ #if NAPI_VERSION >= 8
42
+ typedef struct napi_async_cleanup_hook_handle__* napi_async_cleanup_hook_handle;
43
+ typedef void(NAPI_CDECL* napi_async_cleanup_hook)(
44
+ napi_async_cleanup_hook_handle handle, void* data);
45
+ #endif // NAPI_VERSION >= 8
46
+
44
47
  #endif // SRC_NODE_API_TYPES_H_
File without changes
@@ -0,0 +1,191 @@
1
+ #ifndef SRC_NODE_BLOB_H_
2
+ #define SRC_NODE_BLOB_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "async_wrap.h"
7
+ #include "base_object.h"
8
+ #include "env.h"
9
+ #include "memory_tracker.h"
10
+ #include "node_internals.h"
11
+ #include "node_snapshotable.h"
12
+ #include "node_worker.h"
13
+ #include "v8.h"
14
+
15
+ #include <string>
16
+ #include <unordered_map>
17
+ #include <vector>
18
+
19
+ namespace node {
20
+
21
+ struct BlobEntry {
22
+ std::shared_ptr<v8::BackingStore> store;
23
+ size_t length;
24
+ size_t offset;
25
+ };
26
+
27
+ class Blob : public BaseObject {
28
+ public:
29
+ static void RegisterExternalReferences(
30
+ ExternalReferenceRegistry* registry);
31
+
32
+ static void Initialize(
33
+ v8::Local<v8::Object> target,
34
+ v8::Local<v8::Value> unused,
35
+ v8::Local<v8::Context> context,
36
+ void* priv);
37
+
38
+ static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
39
+ static void ToArrayBuffer(const v8::FunctionCallbackInfo<v8::Value>& args);
40
+ static void ToSlice(const v8::FunctionCallbackInfo<v8::Value>& args);
41
+ static void StoreDataObject(const v8::FunctionCallbackInfo<v8::Value>& args);
42
+ static void GetDataObject(const v8::FunctionCallbackInfo<v8::Value>& args);
43
+ static void RevokeDataObject(const v8::FunctionCallbackInfo<v8::Value>& args);
44
+
45
+ static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
46
+ Environment* env);
47
+
48
+ static BaseObjectPtr<Blob> Create(
49
+ Environment* env,
50
+ const std::vector<BlobEntry> store,
51
+ size_t length);
52
+
53
+ static bool HasInstance(Environment* env, v8::Local<v8::Value> object);
54
+
55
+ const std::vector<BlobEntry> entries() const {
56
+ return store_;
57
+ }
58
+
59
+ void MemoryInfo(MemoryTracker* tracker) const override;
60
+ SET_MEMORY_INFO_NAME(Blob)
61
+ SET_SELF_SIZE(Blob)
62
+
63
+ // Copies the contents of the Blob into an ArrayBuffer.
64
+ v8::MaybeLocal<v8::Value> GetArrayBuffer(Environment* env);
65
+
66
+ BaseObjectPtr<Blob> Slice(Environment* env, size_t start, size_t end);
67
+
68
+ inline size_t length() const { return length_; }
69
+
70
+ class BlobTransferData : public worker::TransferData {
71
+ public:
72
+ explicit BlobTransferData(
73
+ const std::vector<BlobEntry>& store,
74
+ size_t length)
75
+ : store_(store),
76
+ length_(length) {}
77
+
78
+ BaseObjectPtr<BaseObject> Deserialize(
79
+ Environment* env,
80
+ v8::Local<v8::Context> context,
81
+ std::unique_ptr<worker::TransferData> self) override;
82
+
83
+ SET_MEMORY_INFO_NAME(BlobTransferData)
84
+ SET_SELF_SIZE(BlobTransferData)
85
+ SET_NO_MEMORY_INFO()
86
+
87
+ private:
88
+ std::vector<BlobEntry> store_;
89
+ size_t length_ = 0;
90
+ };
91
+
92
+ BaseObject::TransferMode GetTransferMode() const override;
93
+ std::unique_ptr<worker::TransferData> CloneForMessaging() const override;
94
+
95
+ Blob(
96
+ Environment* env,
97
+ v8::Local<v8::Object> obj,
98
+ const std::vector<BlobEntry>& store,
99
+ size_t length);
100
+
101
+ private:
102
+ std::vector<BlobEntry> store_;
103
+ size_t length_ = 0;
104
+ };
105
+
106
+ class FixedSizeBlobCopyJob : public AsyncWrap, public ThreadPoolWork {
107
+ public:
108
+ enum class Mode {
109
+ SYNC,
110
+ ASYNC
111
+ };
112
+
113
+ static void RegisterExternalReferences(
114
+ ExternalReferenceRegistry* registry);
115
+ static void Initialize(Environment* env, v8::Local<v8::Object> target);
116
+ static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
117
+ static void Run(const v8::FunctionCallbackInfo<v8::Value>& args);
118
+
119
+ bool IsNotIndicativeOfMemoryLeakAtExit() const override {
120
+ return true;
121
+ }
122
+
123
+ void DoThreadPoolWork() override;
124
+ void AfterThreadPoolWork(int status) override;
125
+
126
+ Mode mode() const { return mode_; }
127
+
128
+ void MemoryInfo(MemoryTracker* tracker) const override;
129
+ SET_MEMORY_INFO_NAME(FixedSizeBlobCopyJob)
130
+ SET_SELF_SIZE(FixedSizeBlobCopyJob)
131
+
132
+ private:
133
+ FixedSizeBlobCopyJob(
134
+ Environment* env,
135
+ v8::Local<v8::Object> object,
136
+ Blob* blob,
137
+ Mode mode = Mode::ASYNC);
138
+
139
+ Mode mode_;
140
+ std::vector<BlobEntry> source_;
141
+ std::shared_ptr<v8::BackingStore> destination_;
142
+ size_t length_ = 0;
143
+ };
144
+
145
+ class BlobBindingData : public SnapshotableObject {
146
+ public:
147
+ explicit BlobBindingData(Environment* env, v8::Local<v8::Object> wrap);
148
+
149
+ SERIALIZABLE_OBJECT_METHODS()
150
+
151
+ static constexpr FastStringKey type_name{"node::BlobBindingData"};
152
+ static constexpr EmbedderObjectType type_int =
153
+ EmbedderObjectType::k_blob_binding_data;
154
+
155
+ void MemoryInfo(MemoryTracker* tracker) const override;
156
+ SET_SELF_SIZE(BlobBindingData)
157
+ SET_MEMORY_INFO_NAME(BlobBindingData)
158
+
159
+ struct StoredDataObject : public MemoryRetainer {
160
+ BaseObjectPtr<Blob> blob;
161
+ size_t length;
162
+ std::string type;
163
+
164
+ StoredDataObject() = default;
165
+
166
+ StoredDataObject(
167
+ const BaseObjectPtr<Blob>& blob_,
168
+ size_t length_,
169
+ const std::string& type_);
170
+
171
+ void MemoryInfo(MemoryTracker* tracker) const override;
172
+ SET_SELF_SIZE(StoredDataObject)
173
+ SET_MEMORY_INFO_NAME(StoredDataObject)
174
+ };
175
+
176
+ void store_data_object(
177
+ const std::string& uuid,
178
+ const StoredDataObject& object);
179
+
180
+ void revoke_data_object(const std::string& uuid);
181
+
182
+ StoredDataObject get_data_object(const std::string& uuid);
183
+
184
+ private:
185
+ std::unordered_map<std::string, StoredDataObject> data_objects_;
186
+ };
187
+
188
+ } // namespace node
189
+
190
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
191
+ #endif // SRC_NODE_BLOB_H_
@@ -0,0 +1,37 @@
1
+ #ifndef SRC_NODE_BOB_INL_H_
2
+ #define SRC_NODE_BOB_INL_H_
3
+
4
+ #include "node_bob.h"
5
+
6
+ #include <functional>
7
+
8
+ namespace node {
9
+ namespace bob {
10
+
11
+ template <typename T>
12
+ int SourceImpl<T>::Pull(
13
+ Next<T> next,
14
+ int options,
15
+ T* data,
16
+ size_t count,
17
+ size_t max_count_hint) {
18
+
19
+ int status;
20
+ if (eos_) {
21
+ status = bob::Status::STATUS_EOS;
22
+ std::move(next)(status, nullptr, 0, [](size_t len) {});
23
+ return status;
24
+ }
25
+
26
+ status = DoPull(std::move(next), options, data, count, max_count_hint);
27
+
28
+ if (status == bob::Status::STATUS_END)
29
+ eos_ = true;
30
+
31
+ return status;
32
+ }
33
+
34
+ } // namespace bob
35
+ } // namespace node
36
+
37
+ #endif // SRC_NODE_BOB_INL_H_
@@ -0,0 +1,111 @@
1
+ #ifndef SRC_NODE_BOB_H_
2
+ #define SRC_NODE_BOB_H_
3
+
4
+ #include <functional>
5
+
6
+ namespace node {
7
+ namespace bob {
8
+
9
+ constexpr size_t kMaxCountHint = 16;
10
+
11
+ // Negative status codes indicate error conditions.
12
+ enum Status : int {
13
+ // Indicates that an attempt was made to pull after end.
14
+ STATUS_EOS = -1,
15
+
16
+ // Indicates the end of the stream. No additional
17
+ // data will be available and the consumer should stop
18
+ // pulling.
19
+ STATUS_END = 0,
20
+
21
+ // Indicates that there is additional data available
22
+ // and the consumer may continue to pull.
23
+ STATUS_CONTINUE = 1,
24
+
25
+ // Indicates that there is no additional data available
26
+ // but the stream has not ended. The consumer should not
27
+ // continue to pull but may resume pulling later when
28
+ // data is available.
29
+ STATUS_BLOCK = 2,
30
+
31
+ // Indicates that there is no additional data available
32
+ // but the stream has not ended and the source will call
33
+ // next again later when data is available. STATUS_WAIT
34
+ // must not be used with the OPTIONS_SYNC option.
35
+ STATUS_WAIT = 3,
36
+ };
37
+
38
+ enum Options : int {
39
+ OPTIONS_NONE = 0,
40
+
41
+ // Indicates that the consumer is requesting the end
42
+ // of the stream.
43
+ OPTIONS_END = 1,
44
+
45
+ // Indicates that the consumer requires the source to
46
+ // invoke Next synchronously. If the source is
47
+ // unable to provide data immediately but the
48
+ // stream has not yet ended, it should call Next
49
+ // using STATUS_BLOCK. When not set, the source
50
+ // may call Next asynchronously.
51
+ OPTIONS_SYNC = 2
52
+ };
53
+
54
+ // There are Sources and there are Consumers.
55
+ //
56
+ // Consumers get data by calling Source::Pull,
57
+ // optionally passing along a status and allocated
58
+ // buffer space for the source to fill, and a Next
59
+ // function the Source will call when data is
60
+ // available.
61
+ //
62
+ // The source calls Next to deliver the data. It can
63
+ // choose to either use the allocated buffer space
64
+ // provided by the consumer or it can allocate its own
65
+ // buffers and push those instead. If it allocates
66
+ // its own, it can send a Done function that the
67
+ // Sink will call when it is done consuming the data.
68
+ using Done = std::function<void(size_t)>;
69
+ template <typename T>
70
+ using Next = std::function<void(int, const T*, size_t count, Done done)>;
71
+
72
+ template <typename T>
73
+ class Source {
74
+ public:
75
+ virtual int Pull(
76
+ Next<T> next,
77
+ int options,
78
+ T* data,
79
+ size_t count,
80
+ size_t max_count_hint = kMaxCountHint) = 0;
81
+ };
82
+
83
+
84
+ template <typename T>
85
+ class SourceImpl : public Source<T> {
86
+ public:
87
+ int Pull(
88
+ Next<T> next,
89
+ int options,
90
+ T* data,
91
+ size_t count,
92
+ size_t max_count_hint = kMaxCountHint) override;
93
+
94
+ bool is_eos() const { return eos_; }
95
+
96
+ protected:
97
+ virtual int DoPull(
98
+ Next<T> next,
99
+ int options,
100
+ T* data,
101
+ size_t count,
102
+ size_t max_count_hint) = 0;
103
+
104
+ private:
105
+ bool eos_ = false;
106
+ };
107
+
108
+ } // namespace bob
109
+ } // namespace node
110
+
111
+ #endif // SRC_NODE_BOB_H_