@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
@@ -38,6 +38,7 @@ namespace node {
38
38
  V(ELDHISTOGRAM) \
39
39
  V(FILEHANDLE) \
40
40
  V(FILEHANDLECLOSEREQ) \
41
+ V(FIXEDSIZEBLOBCOPY) \
41
42
  V(FSEVENTWRAP) \
42
43
  V(FSREQCALLBACK) \
43
44
  V(FSREQPROMISE) \
@@ -51,6 +52,7 @@ namespace node {
51
52
  V(HTTPINCOMINGMESSAGE) \
52
53
  V(HTTPCLIENTREQUEST) \
53
54
  V(JSSTREAM) \
55
+ V(JSUDPWRAP) \
54
56
  V(MESSAGEPORT) \
55
57
  V(PIPECONNECTWRAP) \
56
58
  V(PIPESERVERWRAP) \
@@ -76,11 +78,20 @@ namespace node {
76
78
 
77
79
  #if HAVE_OPENSSL
78
80
  #define NODE_ASYNC_CRYPTO_PROVIDER_TYPES(V) \
81
+ V(CHECKPRIMEREQUEST) \
79
82
  V(PBKDF2REQUEST) \
80
83
  V(KEYPAIRGENREQUEST) \
84
+ V(KEYGENREQUEST) \
85
+ V(KEYEXPORTREQUEST) \
86
+ V(CIPHERREQUEST) \
87
+ V(DERIVEBITSREQUEST) \
88
+ V(HASHREQUEST) \
81
89
  V(RANDOMBYTESREQUEST) \
90
+ V(RANDOMPRIMEREQUEST) \
82
91
  V(SCRYPTREQUEST) \
83
- V(TLSWRAP)
92
+ V(SIGNREQUEST) \
93
+ V(TLSWRAP) \
94
+ V(VERIFYREQUEST)
84
95
  #else
85
96
  #define NODE_ASYNC_CRYPTO_PROVIDER_TYPES(V)
86
97
  #endif // HAVE_OPENSSL
@@ -99,6 +110,7 @@ namespace node {
99
110
 
100
111
  class Environment;
101
112
  class DestroyParam;
113
+ class ExternalReferenceRegistry;
102
114
 
103
115
  class AsyncWrap : public BaseObject {
104
116
  public:
@@ -128,6 +140,7 @@ class AsyncWrap : public BaseObject {
128
140
  static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
129
141
  Environment* env);
130
142
 
143
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
131
144
  static void Initialize(v8::Local<v8::Object> target,
132
145
  v8::Local<v8::Value> unused,
133
146
  v8::Local<v8::Context> context,
@@ -136,10 +149,16 @@ class AsyncWrap : public BaseObject {
136
149
  static void GetAsyncId(const v8::FunctionCallbackInfo<v8::Value>& args);
137
150
  static void PushAsyncContext(const v8::FunctionCallbackInfo<v8::Value>& args);
138
151
  static void PopAsyncContext(const v8::FunctionCallbackInfo<v8::Value>& args);
152
+ static void ExecutionAsyncResource(
153
+ const v8::FunctionCallbackInfo<v8::Value>& args);
154
+ static void ClearAsyncIdStack(
155
+ const v8::FunctionCallbackInfo<v8::Value>& args);
139
156
  static void AsyncReset(const v8::FunctionCallbackInfo<v8::Value>& args);
140
157
  static void GetProviderType(const v8::FunctionCallbackInfo<v8::Value>& args);
141
158
  static void QueueDestroyAsyncId(
142
159
  const v8::FunctionCallbackInfo<v8::Value>& args);
160
+ static void SetCallbackTrampoline(
161
+ const v8::FunctionCallbackInfo<v8::Value>& args);
143
162
 
144
163
  static void EmitAsyncInit(Environment* env,
145
164
  v8::Local<v8::Object> object,
@@ -208,11 +227,16 @@ class AsyncWrap : public BaseObject {
208
227
  ProviderType provider,
209
228
  double execution_async_id,
210
229
  bool silent);
230
+ AsyncWrap(Environment* env,
231
+ v8::Local<v8::Object> promise,
232
+ ProviderType provider,
233
+ double execution_async_id,
234
+ double trigger_async_id);
211
235
  ProviderType provider_type_ = PROVIDER_NONE;
212
236
  bool init_hook_ran_ = false;
213
237
  // Because the values may be Reset(), cannot be made const.
214
238
  double async_id_ = kInvalidAsyncId;
215
- double trigger_async_id_;
239
+ double trigger_async_id_ = kInvalidAsyncId;
216
240
  };
217
241
 
218
242
  } // namespace node
@@ -1,50 +1,12 @@
1
- #ifndef SRC_BASE64_H_
2
- #define SRC_BASE64_H_
1
+ #ifndef SRC_BASE64_INL_H_
2
+ #define SRC_BASE64_INL_H_
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
+ #include "base64.h"
6
7
  #include "util.h"
7
8
 
8
- #include <cstddef>
9
- #include <cstdint>
10
-
11
9
  namespace node {
12
- //// Base 64 ////
13
- static inline constexpr size_t base64_encoded_size(size_t size) {
14
- return ((size + 2 - ((size + 2) % 3)) / 3 * 4);
15
- }
16
-
17
- // Doesn't check for padding at the end. Can be 1-2 bytes over.
18
- static inline size_t base64_decoded_size_fast(size_t size) {
19
- size_t remainder = size % 4;
20
-
21
- size = (size / 4) * 3;
22
- if (remainder) {
23
- if (size == 0 && remainder == 1) {
24
- // special case: 1-byte input cannot be decoded
25
- size = 0;
26
- } else {
27
- // non-padded input, add 1 or 2 extra bytes
28
- size += 1 + (remainder == 3);
29
- }
30
- }
31
-
32
- return size;
33
- }
34
-
35
- template <typename TypeName>
36
- size_t base64_decoded_size(const TypeName* src, size_t size) {
37
- if (size == 0)
38
- return 0;
39
-
40
- if (src[size - 1] == '=')
41
- size--;
42
- if (size > 0 && src[size - 1] == '=')
43
- size--;
44
-
45
- return base64_decoded_size_fast(size);
46
- }
47
-
48
10
 
49
11
  extern const int8_t unbase64_table[256];
50
12
 
@@ -54,27 +16,36 @@ inline static int8_t unbase64(uint8_t x) {
54
16
  }
55
17
 
56
18
 
19
+ inline uint32_t ReadUint32BE(const unsigned char* p) {
20
+ return static_cast<uint32_t>(p[0] << 24U) |
21
+ static_cast<uint32_t>(p[1] << 16U) |
22
+ static_cast<uint32_t>(p[2] << 8U) |
23
+ static_cast<uint32_t>(p[3]);
24
+ }
25
+
26
+ #ifdef _MSC_VER
27
+ #pragma warning(push)
28
+ // MSVC C4003: not enough actual parameters for macro 'identifier'
29
+ #pragma warning(disable : 4003)
30
+ #endif
31
+
57
32
  template <typename TypeName>
58
33
  bool base64_decode_group_slow(char* const dst, const size_t dstlen,
59
34
  const TypeName* const src, const size_t srclen,
60
35
  size_t* const i, size_t* const k) {
61
36
  uint8_t hi;
62
37
  uint8_t lo;
63
- #define V(expr) \
64
- for (;;) { \
65
- const uint8_t c = src[*i]; \
66
- lo = unbase64(c); \
67
- *i += 1; \
68
- if (lo < 64) \
69
- break; /* Legal character. */ \
70
- if (c == '=' || *i >= srclen) \
71
- return false; /* Stop decoding. */ \
72
- } \
73
- expr; \
74
- if (*i >= srclen) \
75
- return false; \
76
- if (*k >= dstlen) \
77
- return false; \
38
+ #define V(expr) \
39
+ for (;;) { \
40
+ const uint8_t c = static_cast<uint8_t>(src[*i]); \
41
+ lo = unbase64(c); \
42
+ *i += 1; \
43
+ if (lo < 64) break; /* Legal character. */ \
44
+ if (c == '=' || *i >= srclen) return false; /* Stop decoding. */ \
45
+ } \
46
+ expr; \
47
+ if (*i >= srclen) return false; \
48
+ if (*k >= dstlen) return false; \
78
49
  hi = lo;
79
50
  V(/* Nothing. */);
80
51
  V(dst[(*k)++] = ((hi & 0x3F) << 2) | ((lo & 0x30) >> 4));
@@ -84,6 +55,9 @@ bool base64_decode_group_slow(char* const dst, const size_t dstlen,
84
55
  return true; // Continue decoding.
85
56
  }
86
57
 
58
+ #ifdef _MSC_VER
59
+ #pragma warning(pop)
60
+ #endif
87
61
 
88
62
  template <typename TypeName>
89
63
  size_t base64_decode_fast(char* const dst, const size_t dstlen,
@@ -95,11 +69,14 @@ size_t base64_decode_fast(char* const dst, const size_t dstlen,
95
69
  size_t i = 0;
96
70
  size_t k = 0;
97
71
  while (i < max_i && k < max_k) {
98
- const uint32_t v =
99
- unbase64(src[i + 0]) << 24 |
100
- unbase64(src[i + 1]) << 16 |
101
- unbase64(src[i + 2]) << 8 |
102
- unbase64(src[i + 3]);
72
+ const unsigned char txt[] = {
73
+ static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 0]))),
74
+ static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 1]))),
75
+ static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 2]))),
76
+ static_cast<unsigned char>(unbase64(static_cast<uint8_t>(src[i + 3]))),
77
+ };
78
+
79
+ const uint32_t v = ReadUint32BE(txt);
103
80
  // If MSB is set, input contains whitespace or is not valid base64.
104
81
  if (v & 0x80808080) {
105
82
  if (!base64_decode_group_slow(dst, dstlen, src, srclen, &i, &k))
@@ -120,6 +97,21 @@ size_t base64_decode_fast(char* const dst, const size_t dstlen,
120
97
  }
121
98
 
122
99
 
100
+ template <typename TypeName>
101
+ size_t base64_decoded_size(const TypeName* src, size_t size) {
102
+ // 1-byte input cannot be decoded
103
+ if (size < 2)
104
+ return 0;
105
+
106
+ if (src[size - 1] == '=') {
107
+ size--;
108
+ if (src[size - 1] == '=')
109
+ size--;
110
+ }
111
+ return base64_decoded_size_fast(size);
112
+ }
113
+
114
+
123
115
  template <typename TypeName>
124
116
  size_t base64_decode(char* const dst, const size_t dstlen,
125
117
  const TypeName* const src, const size_t srclen) {
@@ -127,15 +119,17 @@ size_t base64_decode(char* const dst, const size_t dstlen,
127
119
  return base64_decode_fast(dst, dstlen, src, srclen, decoded_size);
128
120
  }
129
121
 
130
- static size_t base64_encode(const char* src,
122
+
123
+ inline size_t base64_encode(const char* src,
131
124
  size_t slen,
132
125
  char* dst,
133
- size_t dlen) {
126
+ size_t dlen,
127
+ Base64Mode mode) {
134
128
  // We know how much we'll write, just make sure that there's space.
135
- CHECK(dlen >= base64_encoded_size(slen) &&
129
+ CHECK(dlen >= base64_encoded_size(slen, mode) &&
136
130
  "not enough space provided for base64 encode");
137
131
 
138
- dlen = base64_encoded_size(slen);
132
+ dlen = base64_encoded_size(slen, mode);
139
133
 
140
134
  unsigned a;
141
135
  unsigned b;
@@ -144,9 +138,7 @@ static size_t base64_encode(const char* src,
144
138
  unsigned k;
145
139
  unsigned n;
146
140
 
147
- static const char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
148
- "abcdefghijklmnopqrstuvwxyz"
149
- "0123456789+/";
141
+ const char* table = base64_select_table(mode);
150
142
 
151
143
  i = 0;
152
144
  k = 0;
@@ -166,32 +158,32 @@ static size_t base64_encode(const char* src,
166
158
  k += 4;
167
159
  }
168
160
 
169
- if (n != slen) {
170
- switch (slen - n) {
171
- case 1:
172
- a = src[i + 0] & 0xff;
173
- dst[k + 0] = table[a >> 2];
174
- dst[k + 1] = table[(a & 3) << 4];
161
+ switch (slen - n) {
162
+ case 1:
163
+ a = src[i + 0] & 0xff;
164
+ dst[k + 0] = table[a >> 2];
165
+ dst[k + 1] = table[(a & 3) << 4];
166
+ if (mode == Base64Mode::NORMAL) {
175
167
  dst[k + 2] = '=';
176
168
  dst[k + 3] = '=';
177
- break;
178
-
179
- case 2:
180
- a = src[i + 0] & 0xff;
181
- b = src[i + 1] & 0xff;
182
- dst[k + 0] = table[a >> 2];
183
- dst[k + 1] = table[((a & 3) << 4) | (b >> 4)];
184
- dst[k + 2] = table[(b & 0x0f) << 2];
169
+ }
170
+ break;
171
+ case 2:
172
+ a = src[i + 0] & 0xff;
173
+ b = src[i + 1] & 0xff;
174
+ dst[k + 0] = table[a >> 2];
175
+ dst[k + 1] = table[((a & 3) << 4) | (b >> 4)];
176
+ dst[k + 2] = table[(b & 0x0f) << 2];
177
+ if (mode == Base64Mode::NORMAL)
185
178
  dst[k + 3] = '=';
186
- break;
187
- }
179
+ break;
188
180
  }
189
181
 
190
182
  return dlen;
191
183
  }
192
- } // namespace node
193
184
 
185
+ } // namespace node
194
186
 
195
187
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
196
188
 
197
- #endif // SRC_BASE64_H_
189
+ #endif // SRC_BASE64_INL_H_
@@ -0,0 +1,69 @@
1
+ #ifndef SRC_BASE64_H_
2
+ #define SRC_BASE64_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "util.h"
7
+
8
+ #include <cmath>
9
+ #include <cstddef>
10
+ #include <cstdint>
11
+
12
+ namespace node {
13
+ //// Base 64 ////
14
+
15
+ enum class Base64Mode {
16
+ NORMAL,
17
+ URL
18
+ };
19
+
20
+ static constexpr char base64_table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
21
+ "abcdefghijklmnopqrstuvwxyz"
22
+ "0123456789+/";
23
+
24
+ static constexpr char base64_table_url[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
25
+ "abcdefghijklmnopqrstuvwxyz"
26
+ "0123456789-_";
27
+
28
+ static inline const char* base64_select_table(Base64Mode mode) {
29
+ switch (mode) {
30
+ case Base64Mode::NORMAL: return base64_table;
31
+ case Base64Mode::URL: return base64_table_url;
32
+ default: UNREACHABLE();
33
+ }
34
+ }
35
+
36
+ static inline constexpr size_t base64_encoded_size(
37
+ size_t size,
38
+ Base64Mode mode = Base64Mode::NORMAL) {
39
+ return mode == Base64Mode::NORMAL ? ((size + 2) / 3 * 4)
40
+ : static_cast<size_t>(std::ceil(
41
+ static_cast<double>(size * 4) / 3));
42
+ }
43
+
44
+ // Doesn't check for padding at the end. Can be 1-2 bytes over.
45
+ static inline constexpr size_t base64_decoded_size_fast(size_t size) {
46
+ // 1-byte input cannot be decoded
47
+ return size > 1 ? (size / 4) * 3 + (size % 4 + 1) / 2 : 0;
48
+ }
49
+
50
+ inline uint32_t ReadUint32BE(const unsigned char* p);
51
+
52
+ template <typename TypeName>
53
+ size_t base64_decoded_size(const TypeName* src, size_t size);
54
+
55
+ template <typename TypeName>
56
+ size_t base64_decode(char* const dst, const size_t dstlen,
57
+ const TypeName* const src, const size_t srclen);
58
+
59
+ inline size_t base64_encode(const char* src,
60
+ size_t slen,
61
+ char* dst,
62
+ size_t dlen,
63
+ Base64Mode mode = Base64Mode::NORMAL);
64
+ } // namespace node
65
+
66
+
67
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
68
+
69
+ #endif // SRC_BASE64_H_
@@ -28,14 +28,7 @@
28
28
  #include "env-inl.h"
29
29
  #include "util.h"
30
30
 
31
- #if (__GNUC__ >= 8) && !defined(__clang__)
32
- #pragma GCC diagnostic push
33
- #pragma GCC diagnostic ignored "-Wcast-function-type"
34
- #endif
35
31
  #include "v8.h"
36
- #if (__GNUC__ >= 8) && !defined(__clang__)
37
- #pragma GCC diagnostic pop
38
- #endif
39
32
 
40
33
  namespace node {
41
34
 
@@ -90,7 +83,8 @@ v8::Local<v8::Object> BaseObject::object() const {
90
83
  v8::Local<v8::Object> BaseObject::object(v8::Isolate* isolate) const {
91
84
  v8::Local<v8::Object> handle = object();
92
85
 
93
- DCHECK_EQ(handle->CreationContext()->GetIsolate(), isolate);
86
+ DCHECK_EQ(handle->GetCreationContext().ToLocalChecked()->GetIsolate(),
87
+ isolate);
94
88
  DCHECK_EQ(env()->isolate(), isolate);
95
89
 
96
90
  return handle;
@@ -100,15 +94,16 @@ Environment* BaseObject::env() const {
100
94
  return env_;
101
95
  }
102
96
 
103
- BaseObject* BaseObject::FromJSObject(v8::Local<v8::Object> obj) {
104
- CHECK_GT(obj->InternalFieldCount(), 0);
97
+ BaseObject* BaseObject::FromJSObject(v8::Local<v8::Value> value) {
98
+ v8::Local<v8::Object> obj = value.As<v8::Object>();
99
+ DCHECK_GE(obj->InternalFieldCount(), BaseObject::kSlot);
105
100
  return static_cast<BaseObject*>(
106
101
  obj->GetAlignedPointerFromInternalField(BaseObject::kSlot));
107
102
  }
108
103
 
109
104
 
110
105
  template <typename T>
111
- T* BaseObject::FromJSObject(v8::Local<v8::Object> object) {
106
+ T* BaseObject::FromJSObject(v8::Local<v8::Value> object) {
112
107
  return static_cast<T*>(FromJSObject(object));
113
108
  }
114
109
 
@@ -145,16 +140,26 @@ void BaseObject::ClearWeak() {
145
140
  persistent_handle_.ClearWeak();
146
141
  }
147
142
 
143
+ bool BaseObject::IsWeakOrDetached() const {
144
+ if (persistent_handle_.IsWeak()) return true;
145
+
146
+ if (!has_pointer_data()) return false;
147
+ const PointerData* pd = const_cast<BaseObject*>(this)->pointer_data();
148
+ return pd->wants_weak_jsobj || pd->is_detached;
149
+ }
150
+
151
+ void BaseObject::LazilyInitializedJSTemplateConstructor(
152
+ const v8::FunctionCallbackInfo<v8::Value>& args) {
153
+ DCHECK(args.IsConstructCall());
154
+ DCHECK_GT(args.This()->InternalFieldCount(), 0);
155
+ args.This()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr);
156
+ }
148
157
 
149
158
  v8::Local<v8::FunctionTemplate>
150
159
  BaseObject::MakeLazilyInitializedJSTemplate(Environment* env) {
151
- auto constructor = [](const v8::FunctionCallbackInfo<v8::Value>& args) {
152
- DCHECK(args.IsConstructCall());
153
- DCHECK_GT(args.This()->InternalFieldCount(), 0);
154
- args.This()->SetAlignedPointerInInternalField(BaseObject::kSlot, nullptr);
155
- };
156
-
157
- v8::Local<v8::FunctionTemplate> t = env->NewFunctionTemplate(constructor);
160
+ v8::Local<v8::FunctionTemplate> t =
161
+ env->NewFunctionTemplate(LazilyInitializedJSTemplateConstructor);
162
+ t->Inherit(BaseObject::GetConstructorTemplate(env));
158
163
  t->InstanceTemplate()->SetInternalFieldCount(
159
164
  BaseObject::kInternalFieldCount);
160
165
  return t;
@@ -198,7 +203,7 @@ void BaseObject::decrease_refcount() {
198
203
  unsigned int new_refcount = --metadata->strong_ptr_count;
199
204
  if (new_refcount == 0) {
200
205
  if (metadata->is_detached) {
201
- delete this;
206
+ OnGCCollect();
202
207
  } else if (metadata->wants_weak_jsobj && !persistent_handle_.IsEmpty()) {
203
208
  MakeWeak();
204
209
  }
@@ -216,20 +221,22 @@ BaseObject::PointerData*
216
221
  BaseObjectPtrImpl<T, kIsWeak>::pointer_data() const {
217
222
  if (kIsWeak) {
218
223
  return data_.pointer_data;
219
- } else {
220
- if (get_base_object() == nullptr) return nullptr;
221
- return get_base_object()->pointer_data();
222
224
  }
225
+ if (get_base_object() == nullptr) {
226
+ return nullptr;
227
+ }
228
+ return get_base_object()->pointer_data();
223
229
  }
224
230
 
225
231
  template <typename T, bool kIsWeak>
226
232
  BaseObject* BaseObjectPtrImpl<T, kIsWeak>::get_base_object() const {
227
233
  if (kIsWeak) {
228
- if (pointer_data() == nullptr) return nullptr;
234
+ if (pointer_data() == nullptr) {
235
+ return nullptr;
236
+ }
229
237
  return pointer_data()->self;
230
- } else {
231
- return data_.target;
232
238
  }
239
+ return data_.target;
233
240
  }
234
241
 
235
242
  template <typename T, bool kIsWeak>
@@ -334,6 +341,20 @@ BaseObjectPtrImpl<T, kIsWeak>::operator bool() const {
334
341
  return get() != nullptr;
335
342
  }
336
343
 
344
+ template <typename T, bool kIsWeak>
345
+ template <typename U, bool kW>
346
+ bool BaseObjectPtrImpl<T, kIsWeak>::operator ==(
347
+ const BaseObjectPtrImpl<U, kW>& other) const {
348
+ return get() == other.get();
349
+ }
350
+
351
+ template <typename T, bool kIsWeak>
352
+ template <typename U, bool kW>
353
+ bool BaseObjectPtrImpl<T, kIsWeak>::operator !=(
354
+ const BaseObjectPtrImpl<U, kW>& other) const {
355
+ return get() != other.get();
356
+ }
357
+
337
358
  template <typename T, typename... Args>
338
359
  BaseObjectPtr<T> MakeBaseObject(Args&&... args) {
339
360
  return BaseObjectPtr<T>(new T(std::forward<Args>(args)...));