@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
@@ -1,765 +0,0 @@
1
- // Copyright Joyent, Inc. and other Node contributors.
2
- //
3
- // Permission is hereby granted, free of charge, to any person obtaining a
4
- // copy of this software and associated documentation files (the
5
- // "Software"), to deal in the Software without restriction, including
6
- // without limitation the rights to use, copy, modify, merge, publish,
7
- // distribute, sublicense, and/or sell copies of the Software, and to permit
8
- // persons to whom the Software is furnished to do so, subject to the
9
- // following conditions:
10
- //
11
- // The above copyright notice and this permission notice shall be included
12
- // in all copies or substantial portions of the Software.
13
- //
14
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
- // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17
- // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18
- // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19
- // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20
- // USE OR OTHER DEALINGS IN THE SOFTWARE.
21
-
22
- #ifndef SRC_UTIL_H_
23
- #define SRC_UTIL_H_
24
-
25
- #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
26
-
27
- #if (__GNUC__ >= 8) && !defined(__clang__)
28
- #pragma GCC diagnostic push
29
- #pragma GCC diagnostic ignored "-Wcast-function-type"
30
- #endif
31
- #include "v8.h"
32
- #if (__GNUC__ >= 8) && !defined(__clang__)
33
- #pragma GCC diagnostic pop
34
- #endif
35
-
36
- #include <cassert>
37
- #include <climits> // PATH_MAX
38
- #include <csignal>
39
- #include <cstddef>
40
- #include <cstdio>
41
- #include <cstdlib>
42
- #include <cstring>
43
-
44
- #include <functional> // std::function
45
- #include <limits>
46
- #include <set>
47
- #include <string>
48
- #include <array>
49
- #include <unordered_map>
50
- #include <utility>
51
-
52
- #ifdef __GNUC__
53
- #define MUST_USE_RESULT __attribute__((warn_unused_result))
54
- #else
55
- #define MUST_USE_RESULT
56
- #endif
57
-
58
- namespace node {
59
-
60
- // Maybe remove kPathSeparator when cpp17 is ready
61
- #ifdef _WIN32
62
- constexpr char kPathSeparator = '\\';
63
- /* MAX_PATH is in characters, not bytes. Make sure we have enough headroom. */
64
- #define PATH_MAX_BYTES (MAX_PATH * 4)
65
- #else
66
- constexpr char kPathSeparator = '/';
67
- #define PATH_MAX_BYTES (PATH_MAX)
68
- #endif
69
-
70
- // These should be used in our code as opposed to the native
71
- // versions as they abstract out some platform and or
72
- // compiler version specific functionality
73
- // malloc(0) and realloc(ptr, 0) have implementation-defined behavior in
74
- // that the standard allows them to either return a unique pointer or a
75
- // nullptr for zero-sized allocation requests. Normalize by always using
76
- // a nullptr.
77
- template <typename T>
78
- inline T* UncheckedRealloc(T* pointer, size_t n);
79
- template <typename T>
80
- inline T* UncheckedMalloc(size_t n);
81
- template <typename T>
82
- inline T* UncheckedCalloc(size_t n);
83
-
84
- // Same things, but aborts immediately instead of returning nullptr when
85
- // no memory is available.
86
- template <typename T>
87
- inline T* Realloc(T* pointer, size_t n);
88
- template <typename T>
89
- inline T* Malloc(size_t n);
90
- template <typename T>
91
- inline T* Calloc(size_t n);
92
-
93
- inline char* Malloc(size_t n);
94
- inline char* Calloc(size_t n);
95
- inline char* UncheckedMalloc(size_t n);
96
- inline char* UncheckedCalloc(size_t n);
97
-
98
- template <typename T>
99
- inline T MultiplyWithOverflowCheck(T a, T b);
100
-
101
- namespace per_process {
102
- // Tells whether the per-process V8::Initialize() is called and
103
- // if it is safe to call v8::Isolate::GetCurrent().
104
- extern bool v8_initialized;
105
- } // namespace per_process
106
-
107
- // Used by the allocation functions when allocation fails.
108
- // Thin wrapper around v8::Isolate::LowMemoryNotification() that checks
109
- // whether V8 is initialized.
110
- void LowMemoryNotification();
111
-
112
- // The reason that Assert() takes a struct argument instead of individual
113
- // const char*s is to ease instruction cache pressure in calls from CHECK.
114
- struct AssertionInfo {
115
- const char* file_line; // filename:line
116
- const char* message;
117
- const char* function;
118
- };
119
- [[noreturn]] void Assert(const AssertionInfo& info);
120
- [[noreturn]] void Abort();
121
- void DumpBacktrace(FILE* fp);
122
-
123
- // Windows 8+ does not like abort() in Release mode
124
- #ifdef _WIN32
125
- #define ABORT_NO_BACKTRACE() _exit(134)
126
- #else
127
- #define ABORT_NO_BACKTRACE() abort()
128
- #endif
129
-
130
- #define ABORT() node::Abort()
131
-
132
- #define ERROR_AND_ABORT(expr) \
133
- do { \
134
- /* Make sure that this struct does not end up in inline code, but */ \
135
- /* rather in a read-only data section when modifying this code. */ \
136
- static const node::AssertionInfo args = { \
137
- __FILE__ ":" STRINGIFY(__LINE__), #expr, PRETTY_FUNCTION_NAME \
138
- }; \
139
- node::Assert(args); \
140
- } while (0)
141
-
142
- #ifdef __GNUC__
143
- #define LIKELY(expr) __builtin_expect(!!(expr), 1)
144
- #define UNLIKELY(expr) __builtin_expect(!!(expr), 0)
145
- #define PRETTY_FUNCTION_NAME __PRETTY_FUNCTION__
146
- #else
147
- #define LIKELY(expr) expr
148
- #define UNLIKELY(expr) expr
149
- #define PRETTY_FUNCTION_NAME ""
150
- #endif
151
-
152
- #define STRINGIFY_(x) #x
153
- #define STRINGIFY(x) STRINGIFY_(x)
154
-
155
- #define CHECK(expr) \
156
- do { \
157
- if (UNLIKELY(!(expr))) { \
158
- ERROR_AND_ABORT(expr); \
159
- } \
160
- } while (0)
161
-
162
- #define CHECK_EQ(a, b) CHECK((a) == (b))
163
- #define CHECK_GE(a, b) CHECK((a) >= (b))
164
- #define CHECK_GT(a, b) CHECK((a) > (b))
165
- #define CHECK_LE(a, b) CHECK((a) <= (b))
166
- #define CHECK_LT(a, b) CHECK((a) < (b))
167
- #define CHECK_NE(a, b) CHECK((a) != (b))
168
- #define CHECK_NULL(val) CHECK((val) == nullptr)
169
- #define CHECK_NOT_NULL(val) CHECK((val) != nullptr)
170
- #define CHECK_IMPLIES(a, b) CHECK(!(a) || (b))
171
-
172
- #ifdef DEBUG
173
- #define DCHECK(expr) CHECK(expr)
174
- #define DCHECK_EQ(a, b) CHECK((a) == (b))
175
- #define DCHECK_GE(a, b) CHECK((a) >= (b))
176
- #define DCHECK_GT(a, b) CHECK((a) > (b))
177
- #define DCHECK_LE(a, b) CHECK((a) <= (b))
178
- #define DCHECK_LT(a, b) CHECK((a) < (b))
179
- #define DCHECK_NE(a, b) CHECK((a) != (b))
180
- #define DCHECK_NULL(val) CHECK((val) == nullptr)
181
- #define DCHECK_NOT_NULL(val) CHECK((val) != nullptr)
182
- #define DCHECK_IMPLIES(a, b) CHECK(!(a) || (b))
183
- #else
184
- #define DCHECK(expr)
185
- #define DCHECK_EQ(a, b)
186
- #define DCHECK_GE(a, b)
187
- #define DCHECK_GT(a, b)
188
- #define DCHECK_LE(a, b)
189
- #define DCHECK_LT(a, b)
190
- #define DCHECK_NE(a, b)
191
- #define DCHECK_NULL(val)
192
- #define DCHECK_NOT_NULL(val)
193
- #define DCHECK_IMPLIES(a, b)
194
- #endif
195
-
196
-
197
- #define UNREACHABLE(...) \
198
- ERROR_AND_ABORT("Unreachable code reached" __VA_OPT__(": ") __VA_ARGS__)
199
-
200
- // TAILQ-style intrusive list node.
201
- template <typename T>
202
- class ListNode;
203
-
204
- // TAILQ-style intrusive list head.
205
- template <typename T, ListNode<T> (T::*M)>
206
- class ListHead;
207
-
208
- template <typename T>
209
- class ListNode {
210
- public:
211
- inline ListNode();
212
- inline ~ListNode();
213
- inline void Remove();
214
- inline bool IsEmpty() const;
215
-
216
- ListNode(const ListNode&) = delete;
217
- ListNode& operator=(const ListNode&) = delete;
218
-
219
- private:
220
- template <typename U, ListNode<U> (U::*M)> friend class ListHead;
221
- friend int GenDebugSymbols();
222
- ListNode* prev_;
223
- ListNode* next_;
224
- };
225
-
226
- template <typename T, ListNode<T> (T::*M)>
227
- class ListHead {
228
- public:
229
- class Iterator {
230
- public:
231
- inline T* operator*() const;
232
- inline const Iterator& operator++();
233
- inline bool operator!=(const Iterator& that) const;
234
-
235
- private:
236
- friend class ListHead;
237
- inline explicit Iterator(ListNode<T>* node);
238
- ListNode<T>* node_;
239
- };
240
-
241
- inline ListHead() = default;
242
- inline ~ListHead();
243
- inline void PushBack(T* element);
244
- inline void PushFront(T* element);
245
- inline bool IsEmpty() const;
246
- inline T* PopFront();
247
- inline Iterator begin() const;
248
- inline Iterator end() const;
249
-
250
- ListHead(const ListHead&) = delete;
251
- ListHead& operator=(const ListHead&) = delete;
252
-
253
- private:
254
- friend int GenDebugSymbols();
255
- ListNode<T> head_;
256
- };
257
-
258
- // The helper is for doing safe downcasts from base types to derived types.
259
- template <typename Inner, typename Outer>
260
- class ContainerOfHelper {
261
- public:
262
- inline ContainerOfHelper(Inner Outer::*field, Inner* pointer);
263
- template <typename TypeName>
264
- inline operator TypeName*() const;
265
- private:
266
- Outer* const pointer_;
267
- };
268
-
269
- // Calculate the address of the outer (i.e. embedding) struct from
270
- // the interior pointer to a data member.
271
- template <typename Inner, typename Outer>
272
- constexpr ContainerOfHelper<Inner, Outer> ContainerOf(Inner Outer::*field,
273
- Inner* pointer);
274
-
275
- // Convenience wrapper around v8::String::NewFromOneByte().
276
- inline v8::Local<v8::String> OneByteString(v8::Isolate* isolate,
277
- const char* data,
278
- int length = -1);
279
-
280
- // For the people that compile with -funsigned-char.
281
- inline v8::Local<v8::String> OneByteString(v8::Isolate* isolate,
282
- const signed char* data,
283
- int length = -1);
284
-
285
- inline v8::Local<v8::String> OneByteString(v8::Isolate* isolate,
286
- const unsigned char* data,
287
- int length = -1);
288
-
289
- // Used to be a macro, hence the uppercase name.
290
- template <int N>
291
- inline v8::Local<v8::String> FIXED_ONE_BYTE_STRING(
292
- v8::Isolate* isolate,
293
- const char(&data)[N]) {
294
- return OneByteString(isolate, data, N - 1);
295
- }
296
-
297
- template <std::size_t N>
298
- inline v8::Local<v8::String> FIXED_ONE_BYTE_STRING(
299
- v8::Isolate* isolate,
300
- const std::array<char, N>& arr) {
301
- return OneByteString(isolate, arr.data(), N - 1);
302
- }
303
-
304
-
305
-
306
- // Swaps bytes in place. nbytes is the number of bytes to swap and must be a
307
- // multiple of the word size (checked by function).
308
- inline void SwapBytes16(char* data, size_t nbytes);
309
- inline void SwapBytes32(char* data, size_t nbytes);
310
- inline void SwapBytes64(char* data, size_t nbytes);
311
-
312
- // tolower() is locale-sensitive. Use ToLower() instead.
313
- inline char ToLower(char c);
314
- inline std::string ToLower(const std::string& in);
315
-
316
- // toupper() is locale-sensitive. Use ToUpper() instead.
317
- inline char ToUpper(char c);
318
- inline std::string ToUpper(const std::string& in);
319
-
320
- // strcasecmp() is locale-sensitive. Use StringEqualNoCase() instead.
321
- inline bool StringEqualNoCase(const char* a, const char* b);
322
-
323
- // strncasecmp() is locale-sensitive. Use StringEqualNoCaseN() instead.
324
- inline bool StringEqualNoCaseN(const char* a, const char* b, size_t length);
325
-
326
- // Allocates an array of member type T. For up to kStackStorageSize items,
327
- // the stack is used, otherwise malloc().
328
- template <typename T, size_t kStackStorageSize = 1024>
329
- class MaybeStackBuffer {
330
- public:
331
- const T* out() const {
332
- return buf_;
333
- }
334
-
335
- T* out() {
336
- return buf_;
337
- }
338
-
339
- // operator* for compatibility with `v8::String::(Utf8)Value`
340
- T* operator*() {
341
- return buf_;
342
- }
343
-
344
- const T* operator*() const {
345
- return buf_;
346
- }
347
-
348
- T& operator[](size_t index) {
349
- CHECK_LT(index, length());
350
- return buf_[index];
351
- }
352
-
353
- const T& operator[](size_t index) const {
354
- CHECK_LT(index, length());
355
- return buf_[index];
356
- }
357
-
358
- size_t length() const {
359
- return length_;
360
- }
361
-
362
- // Current maximum capacity of the buffer with which SetLength() can be used
363
- // without first calling AllocateSufficientStorage().
364
- size_t capacity() const {
365
- return IsAllocated() ? capacity_ :
366
- IsInvalidated() ? 0 : kStackStorageSize;
367
- }
368
-
369
- // Make sure enough space for `storage` entries is available.
370
- // This method can be called multiple times throughout the lifetime of the
371
- // buffer, but once this has been called Invalidate() cannot be used.
372
- // Content of the buffer in the range [0, length()) is preserved.
373
- void AllocateSufficientStorage(size_t storage) {
374
- CHECK(!IsInvalidated());
375
- if (storage > capacity()) {
376
- bool was_allocated = IsAllocated();
377
- T* allocated_ptr = was_allocated ? buf_ : nullptr;
378
- buf_ = Realloc(allocated_ptr, storage);
379
- capacity_ = storage;
380
- if (!was_allocated && length_ > 0)
381
- memcpy(buf_, buf_st_, length_ * sizeof(buf_[0]));
382
- }
383
-
384
- length_ = storage;
385
- }
386
-
387
- void SetLength(size_t length) {
388
- // capacity() returns how much memory is actually available.
389
- CHECK_LE(length, capacity());
390
- length_ = length;
391
- }
392
-
393
- void SetLengthAndZeroTerminate(size_t length) {
394
- // capacity() returns how much memory is actually available.
395
- CHECK_LE(length + 1, capacity());
396
- SetLength(length);
397
-
398
- // T() is 0 for integer types, nullptr for pointers, etc.
399
- buf_[length] = T();
400
- }
401
-
402
- // Make derefencing this object return nullptr.
403
- // This method can be called multiple times throughout the lifetime of the
404
- // buffer, but once this has been called AllocateSufficientStorage() cannot
405
- // be used.
406
- void Invalidate() {
407
- CHECK(!IsAllocated());
408
- length_ = 0;
409
- buf_ = nullptr;
410
- }
411
-
412
- // If the buffer is stored in the heap rather than on the stack.
413
- bool IsAllocated() const {
414
- return !IsInvalidated() && buf_ != buf_st_;
415
- }
416
-
417
- // If Invalidate() has been called.
418
- bool IsInvalidated() const {
419
- return buf_ == nullptr;
420
- }
421
-
422
- // Release ownership of the malloc'd buffer.
423
- // Note: This does not free the buffer.
424
- void Release() {
425
- CHECK(IsAllocated());
426
- buf_ = buf_st_;
427
- length_ = 0;
428
- capacity_ = 0;
429
- }
430
-
431
- MaybeStackBuffer() : length_(0), capacity_(0), buf_(buf_st_) {
432
- // Default to a zero-length, null-terminated buffer.
433
- buf_[0] = T();
434
- }
435
-
436
- explicit MaybeStackBuffer(size_t storage) : MaybeStackBuffer() {
437
- AllocateSufficientStorage(storage);
438
- }
439
-
440
- ~MaybeStackBuffer() {
441
- if (IsAllocated())
442
- free(buf_);
443
- }
444
-
445
- private:
446
- size_t length_;
447
- // capacity of the malloc'ed buf_
448
- size_t capacity_;
449
- T* buf_;
450
- T buf_st_[kStackStorageSize];
451
- };
452
-
453
- // Provides access to an ArrayBufferView's storage, either the original,
454
- // or for small data, a copy of it. This object's lifetime is bound to the
455
- // original ArrayBufferView's lifetime.
456
- template <typename T, size_t kStackStorageSize = 64>
457
- class ArrayBufferViewContents {
458
- public:
459
- ArrayBufferViewContents() = default;
460
-
461
- explicit inline ArrayBufferViewContents(v8::Local<v8::Value> value);
462
- explicit inline ArrayBufferViewContents(v8::Local<v8::Object> value);
463
- explicit inline ArrayBufferViewContents(v8::Local<v8::ArrayBufferView> abv);
464
- inline void Read(v8::Local<v8::ArrayBufferView> abv);
465
-
466
- inline const T* data() const { return data_; }
467
- inline size_t length() const { return length_; }
468
-
469
- private:
470
- T stack_storage_[kStackStorageSize];
471
- T* data_ = nullptr;
472
- size_t length_ = 0;
473
- };
474
-
475
- class Utf8Value : public MaybeStackBuffer<char> {
476
- public:
477
- explicit Utf8Value(v8::Isolate* isolate, v8::Local<v8::Value> value);
478
-
479
- inline std::string ToString() const { return std::string(out(), length()); }
480
- };
481
-
482
- class TwoByteValue : public MaybeStackBuffer<uint16_t> {
483
- public:
484
- explicit TwoByteValue(v8::Isolate* isolate, v8::Local<v8::Value> value);
485
- };
486
-
487
- class BufferValue : public MaybeStackBuffer<char> {
488
- public:
489
- explicit BufferValue(v8::Isolate* isolate, v8::Local<v8::Value> value);
490
-
491
- inline std::string ToString() const { return std::string(out(), length()); }
492
- };
493
-
494
- #define SPREAD_BUFFER_ARG(val, name) \
495
- CHECK((val)->IsArrayBufferView()); \
496
- v8::Local<v8::ArrayBufferView> name = (val).As<v8::ArrayBufferView>(); \
497
- v8::ArrayBuffer::Contents name##_c = name->Buffer()->GetContents(); \
498
- const size_t name##_offset = name->ByteOffset(); \
499
- const size_t name##_length = name->ByteLength(); \
500
- char* const name##_data = \
501
- static_cast<char*>(name##_c.Data()) + name##_offset; \
502
- if (name##_length > 0) \
503
- CHECK_NE(name##_data, nullptr);
504
-
505
- // Use this when a variable or parameter is unused in order to explicitly
506
- // silence a compiler warning about that.
507
- template <typename T> inline void USE(T&&) {}
508
-
509
- template <typename Fn>
510
- struct OnScopeLeaveImpl {
511
- Fn fn_;
512
- bool active_;
513
-
514
- explicit OnScopeLeaveImpl(Fn&& fn) : fn_(std::move(fn)), active_(true) {}
515
- ~OnScopeLeaveImpl() { if (active_) fn_(); }
516
-
517
- OnScopeLeaveImpl(const OnScopeLeaveImpl& other) = delete;
518
- OnScopeLeaveImpl& operator=(const OnScopeLeaveImpl& other) = delete;
519
- OnScopeLeaveImpl(OnScopeLeaveImpl&& other)
520
- : fn_(std::move(other.fn_)), active_(other.active_) {
521
- other.active_ = false;
522
- }
523
- OnScopeLeaveImpl& operator=(OnScopeLeaveImpl&& other) {
524
- if (this == &other) return *this;
525
- this->~OnScopeLeave();
526
- new (this)OnScopeLeaveImpl(std::move(other));
527
- return *this;
528
- }
529
- };
530
-
531
- // Run a function when exiting the current scope. Used like this:
532
- // auto on_scope_leave = OnScopeLeave([&] {
533
- // // ... run some code ...
534
- // });
535
- template <typename Fn>
536
- inline MUST_USE_RESULT OnScopeLeaveImpl<Fn> OnScopeLeave(Fn&& fn) {
537
- return OnScopeLeaveImpl<Fn>{std::move(fn)};
538
- }
539
-
540
- // Simple RAII wrapper for contiguous data that uses malloc()/free().
541
- template <typename T>
542
- struct MallocedBuffer {
543
- T* data;
544
- size_t size;
545
-
546
- T* release() {
547
- T* ret = data;
548
- data = nullptr;
549
- return ret;
550
- }
551
-
552
- void Truncate(size_t new_size) {
553
- CHECK(new_size <= size);
554
- size = new_size;
555
- }
556
-
557
- inline bool is_empty() const { return data == nullptr; }
558
-
559
- MallocedBuffer() : data(nullptr), size(0) {}
560
- explicit MallocedBuffer(size_t size) : data(Malloc<T>(size)), size(size) {}
561
- MallocedBuffer(T* data, size_t size) : data(data), size(size) {}
562
- MallocedBuffer(MallocedBuffer&& other) : data(other.data), size(other.size) {
563
- other.data = nullptr;
564
- }
565
- MallocedBuffer& operator=(MallocedBuffer&& other) {
566
- this->~MallocedBuffer();
567
- return *new(this) MallocedBuffer(std::move(other));
568
- }
569
- ~MallocedBuffer() {
570
- free(data);
571
- }
572
- MallocedBuffer(const MallocedBuffer&) = delete;
573
- MallocedBuffer& operator=(const MallocedBuffer&) = delete;
574
- };
575
-
576
- template <typename T>
577
- class NonCopyableMaybe {
578
- public:
579
- NonCopyableMaybe() : empty_(true) {}
580
- explicit NonCopyableMaybe(T&& value)
581
- : empty_(false),
582
- value_(std::move(value)) {}
583
-
584
- bool IsEmpty() const {
585
- return empty_;
586
- }
587
-
588
- T&& Release() {
589
- CHECK_EQ(empty_, false);
590
- empty_ = true;
591
- return std::move(value_);
592
- }
593
-
594
- private:
595
- bool empty_;
596
- T value_;
597
- };
598
-
599
- // Test whether some value can be called with ().
600
- template <typename T, typename = void>
601
- struct is_callable : std::is_function<T> { };
602
-
603
- template <typename T>
604
- struct is_callable<T, typename std::enable_if<
605
- std::is_same<decltype(void(&T::operator())), void>::value
606
- >::type> : std::true_type { };
607
-
608
- template <typename T, void (*function)(T*)>
609
- struct FunctionDeleter {
610
- void operator()(T* pointer) const { function(pointer); }
611
- typedef std::unique_ptr<T, FunctionDeleter> Pointer;
612
- };
613
-
614
- template <typename T, void (*function)(T*)>
615
- using DeleteFnPtr = typename FunctionDeleter<T, function>::Pointer;
616
-
617
- std::vector<std::string> SplitString(const std::string& in, char delim);
618
-
619
- inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
620
- const std::string& str,
621
- v8::Isolate* isolate = nullptr);
622
- template <typename T, typename test_for_number =
623
- typename std::enable_if<std::numeric_limits<T>::is_specialized, bool>::type>
624
- inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
625
- const T& number,
626
- v8::Isolate* isolate = nullptr);
627
- template <typename T>
628
- inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
629
- const std::vector<T>& vec,
630
- v8::Isolate* isolate = nullptr);
631
- template <typename T, typename U>
632
- inline v8::MaybeLocal<v8::Value> ToV8Value(v8::Local<v8::Context> context,
633
- const std::unordered_map<T, U>& map,
634
- v8::Isolate* isolate = nullptr);
635
-
636
- // These macros expects a `Isolate* isolate` and a `Local<Context> context`
637
- // to be in the scope.
638
- #define READONLY_PROPERTY(obj, name, value) \
639
- do { \
640
- obj->DefineOwnProperty( \
641
- context, FIXED_ONE_BYTE_STRING(isolate, name), value, v8::ReadOnly) \
642
- .Check(); \
643
- } while (0)
644
-
645
- #define READONLY_DONT_ENUM_PROPERTY(obj, name, var) \
646
- do { \
647
- obj->DefineOwnProperty( \
648
- context, \
649
- OneByteString(isolate, name), \
650
- var, \
651
- static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum)) \
652
- .Check(); \
653
- } while (0)
654
-
655
- #define READONLY_FALSE_PROPERTY(obj, name) \
656
- READONLY_PROPERTY(obj, name, v8::False(isolate))
657
-
658
- #define READONLY_TRUE_PROPERTY(obj, name) \
659
- READONLY_PROPERTY(obj, name, v8::True(isolate))
660
-
661
- #define READONLY_STRING_PROPERTY(obj, name, str) \
662
- READONLY_PROPERTY(obj, name, ToV8Value(context, str).ToLocalChecked())
663
-
664
- // Variation on NODE_DEFINE_CONSTANT that sets a String value.
665
- #define NODE_DEFINE_STRING_CONSTANT(target, name, constant) \
666
- do { \
667
- v8::Isolate* isolate = target->GetIsolate(); \
668
- v8::Local<v8::String> constant_name = \
669
- v8::String::NewFromUtf8(isolate, name, v8::NewStringType::kNormal) \
670
- .ToLocalChecked(); \
671
- v8::Local<v8::String> constant_value = \
672
- v8::String::NewFromUtf8(isolate, constant, v8::NewStringType::kNormal) \
673
- .ToLocalChecked(); \
674
- v8::PropertyAttribute constant_attributes = \
675
- static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontDelete); \
676
- target \
677
- ->DefineOwnProperty(isolate->GetCurrentContext(), \
678
- constant_name, \
679
- constant_value, \
680
- constant_attributes) \
681
- .Check(); \
682
- } while (0)
683
-
684
- enum Endianness {
685
- kLittleEndian, // _Not_ LITTLE_ENDIAN, clashes with endian.h.
686
- kBigEndian
687
- };
688
-
689
- inline enum Endianness GetEndianness() {
690
- // Constant-folded by the compiler.
691
- const union {
692
- uint8_t u8[2];
693
- uint16_t u16;
694
- } u = {{1, 0}};
695
- return u.u16 == 1 ? kLittleEndian : kBigEndian;
696
- }
697
-
698
- inline bool IsLittleEndian() {
699
- return GetEndianness() == kLittleEndian;
700
- }
701
-
702
- inline bool IsBigEndian() {
703
- return GetEndianness() == kBigEndian;
704
- }
705
-
706
- template <typename T, size_t N>
707
- constexpr size_t arraysize(const T (&)[N]) {
708
- return N;
709
- }
710
-
711
- // Round up a to the next highest multiple of b.
712
- template <typename T>
713
- constexpr T RoundUp(T a, T b) {
714
- return a % b != 0 ? a + b - (a % b) : a;
715
- }
716
-
717
- class SlicedArguments : public MaybeStackBuffer<v8::Local<v8::Value>> {
718
- public:
719
- inline explicit SlicedArguments(
720
- const v8::FunctionCallbackInfo<v8::Value>& args, size_t start = 0);
721
- };
722
-
723
- // Convert a v8::PersistentBase, e.g. v8::Global, to a Local, with an extra
724
- // optimization for strong persistent handles.
725
- class PersistentToLocal {
726
- public:
727
- // If persistent.IsWeak() == false, then do not call persistent.Reset()
728
- // while the returned Local<T> is still in scope, it will destroy the
729
- // reference to the object.
730
- template <class TypeName>
731
- static inline v8::Local<TypeName> Default(
732
- v8::Isolate* isolate,
733
- const v8::PersistentBase<TypeName>& persistent) {
734
- if (persistent.IsWeak()) {
735
- return PersistentToLocal::Weak(isolate, persistent);
736
- } else {
737
- return PersistentToLocal::Strong(persistent);
738
- }
739
- }
740
-
741
- // Unchecked conversion from a non-weak Persistent<T> to Local<T>,
742
- // use with care!
743
- //
744
- // Do not call persistent.Reset() while the returned Local<T> is still in
745
- // scope, it will destroy the reference to the object.
746
- template <class TypeName>
747
- static inline v8::Local<TypeName> Strong(
748
- const v8::PersistentBase<TypeName>& persistent) {
749
- return *reinterpret_cast<v8::Local<TypeName>*>(
750
- const_cast<v8::PersistentBase<TypeName>*>(&persistent));
751
- }
752
-
753
- template <class TypeName>
754
- static inline v8::Local<TypeName> Weak(
755
- v8::Isolate* isolate,
756
- const v8::PersistentBase<TypeName>& persistent) {
757
- return v8::Local<TypeName>::New(isolate, persistent);
758
- }
759
- };
760
-
761
- } // namespace node
762
-
763
- #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
764
-
765
- #endif // SRC_UTIL_H_