@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
@@ -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_