libp2p 0.36.0 → 0.36.2-1473044

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 (415) hide show
  1. package/LICENSE +3 -21
  2. package/README.md +13 -10
  3. package/dist/src/address-manager/index.d.ts +33 -52
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +81 -0
  6. package/dist/src/address-manager/index.js.map +1 -0
  7. package/dist/src/circuit/auto-relay.d.ts +24 -85
  8. package/dist/src/circuit/auto-relay.d.ts.map +1 -1
  9. package/dist/src/circuit/auto-relay.js +215 -0
  10. package/dist/src/circuit/auto-relay.js.map +1 -0
  11. package/dist/src/circuit/circuit/hop.d.ts +26 -53
  12. package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
  13. package/dist/src/circuit/circuit/hop.js +138 -0
  14. package/dist/src/circuit/circuit/hop.js.map +1 -0
  15. package/dist/src/circuit/circuit/stop.d.ts +18 -10
  16. package/dist/src/circuit/circuit/stop.d.ts.map +1 -1
  17. package/dist/src/circuit/circuit/stop.js +49 -0
  18. package/dist/src/circuit/circuit/stop.js.map +1 -0
  19. package/dist/src/circuit/circuit/stream-handler.d.ts +19 -38
  20. package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
  21. package/dist/src/circuit/circuit/stream-handler.js +59 -0
  22. package/dist/src/circuit/circuit/stream-handler.js.map +1 -0
  23. package/dist/src/circuit/circuit/utils.d.ts +3 -6
  24. package/dist/src/circuit/circuit/utils.d.ts.map +1 -1
  25. package/dist/src/circuit/circuit/utils.js +43 -0
  26. package/dist/src/circuit/circuit/utils.js.map +1 -0
  27. package/dist/src/circuit/constants.d.ts +24 -6
  28. package/dist/src/circuit/constants.d.ts.map +1 -1
  29. package/dist/src/circuit/constants.js +26 -0
  30. package/dist/src/circuit/constants.js.map +1 -0
  31. package/dist/src/circuit/index.d.ts +41 -74
  32. package/dist/src/circuit/index.d.ts.map +1 -1
  33. package/dist/src/circuit/index.js +69 -0
  34. package/dist/src/circuit/index.js.map +1 -0
  35. package/dist/src/circuit/listener.d.ts +8 -3
  36. package/dist/src/circuit/listener.d.ts.map +1 -1
  37. package/dist/src/circuit/listener.js +54 -0
  38. package/dist/src/circuit/listener.js.map +1 -0
  39. package/dist/src/circuit/multicodec.d.ts +1 -1
  40. package/dist/src/circuit/multicodec.d.ts.map +1 -1
  41. package/dist/src/circuit/multicodec.js +2 -0
  42. package/dist/src/circuit/multicodec.js.map +1 -0
  43. package/dist/src/circuit/pb/index.d.ts +51 -0
  44. package/dist/src/circuit/pb/index.d.ts.map +1 -0
  45. package/dist/src/circuit/pb/index.js +72 -0
  46. package/dist/src/circuit/pb/index.js.map +1 -0
  47. package/dist/src/circuit/transport.d.ts +18 -78
  48. package/dist/src/circuit/transport.d.ts.map +1 -1
  49. package/dist/src/circuit/transport.js +190 -0
  50. package/dist/src/circuit/transport.js.map +1 -0
  51. package/dist/src/circuit/utils.d.ts +5 -2
  52. package/dist/src/circuit/utils.d.ts.map +1 -1
  53. package/dist/src/circuit/utils.js +11 -0
  54. package/dist/src/circuit/utils.js.map +1 -0
  55. package/dist/src/config.d.ts +3 -85
  56. package/dist/src/config.d.ts.map +1 -1
  57. package/dist/src/config.js +93 -0
  58. package/dist/src/config.js.map +1 -0
  59. package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
  60. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  61. package/dist/src/connection-manager/auto-dialler.js +105 -0
  62. package/dist/src/connection-manager/auto-dialler.js.map +1 -0
  63. package/dist/src/connection-manager/index.d.ts +79 -144
  64. package/dist/src/connection-manager/index.d.ts.map +1 -1
  65. package/dist/src/connection-manager/index.js +295 -0
  66. package/dist/src/connection-manager/index.js.map +1 -0
  67. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  68. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  69. package/dist/src/connection-manager/latency-monitor.js +220 -0
  70. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  71. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  72. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  73. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  74. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  75. package/dist/src/constants.d.ts +22 -10
  76. package/dist/src/constants.d.ts.map +1 -1
  77. package/dist/src/constants.js +27 -0
  78. package/dist/src/constants.js.map +1 -0
  79. package/dist/src/content-routing/index.d.ts +26 -81
  80. package/dist/src/content-routing/index.d.ts.map +1 -1
  81. package/dist/src/content-routing/index.js +99 -0
  82. package/dist/src/content-routing/index.js.map +1 -0
  83. package/dist/src/content-routing/utils.d.ts +6 -49
  84. package/dist/src/content-routing/utils.d.ts.map +1 -1
  85. package/dist/src/content-routing/utils.js +42 -0
  86. package/dist/src/content-routing/utils.js.map +1 -0
  87. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  88. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  89. package/dist/src/dht/dht-content-routing.js +32 -0
  90. package/dist/src/dht/dht-content-routing.js.map +1 -0
  91. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  92. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  93. package/dist/src/dht/dht-peer-routing.js +26 -0
  94. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  95. package/dist/src/dialer/auto-dialer.d.ts +14 -0
  96. package/dist/src/dialer/auto-dialer.d.ts.map +1 -0
  97. package/dist/src/dialer/auto-dialer.js +24 -0
  98. package/dist/src/dialer/auto-dialer.js.map +1 -0
  99. package/dist/src/dialer/dial-request.d.ts +18 -46
  100. package/dist/src/dialer/dial-request.d.ts.map +1 -1
  101. package/dist/src/dialer/dial-request.js +83 -0
  102. package/dist/src/dialer/dial-request.js.map +1 -0
  103. package/dist/src/dialer/index.d.ts +41 -148
  104. package/dist/src/dialer/index.d.ts.map +1 -1
  105. package/dist/src/dialer/index.js +280 -0
  106. package/dist/src/dialer/index.js.map +1 -0
  107. package/dist/src/errors.d.ts +68 -63
  108. package/dist/src/errors.d.ts.map +1 -1
  109. package/dist/src/errors.js +73 -0
  110. package/dist/src/errors.js.map +1 -0
  111. package/dist/src/fetch/constants.d.ts +1 -1
  112. package/dist/src/fetch/constants.d.ts.map +1 -1
  113. package/dist/src/fetch/constants.js +3 -0
  114. package/dist/src/fetch/constants.js.map +1 -0
  115. package/dist/src/fetch/index.d.ts +30 -49
  116. package/dist/src/fetch/index.d.ts.map +1 -1
  117. package/dist/src/fetch/index.js +129 -0
  118. package/dist/src/fetch/index.js.map +1 -0
  119. package/dist/src/fetch/pb/proto.d.ts +26 -0
  120. package/dist/src/fetch/pb/proto.d.ts.map +1 -0
  121. package/dist/src/fetch/pb/proto.js +44 -0
  122. package/dist/src/fetch/pb/proto.js.map +1 -0
  123. package/dist/src/get-peer.d.ts +4 -11
  124. package/dist/src/get-peer.d.ts.map +1 -1
  125. package/dist/src/get-peer.js +43 -0
  126. package/dist/src/get-peer.js.map +1 -0
  127. package/dist/src/identify/consts.d.ts +9 -9
  128. package/dist/src/identify/consts.d.ts.map +1 -1
  129. package/dist/src/identify/consts.js +11 -0
  130. package/dist/src/identify/consts.js.map +1 -0
  131. package/dist/src/identify/index.d.ts +42 -96
  132. package/dist/src/identify/index.d.ts.map +1 -1
  133. package/dist/src/identify/index.js +322 -0
  134. package/dist/src/identify/index.js.map +1 -0
  135. package/dist/src/identify/pb/message.d.ts +15 -0
  136. package/dist/src/identify/pb/message.d.ts.map +1 -0
  137. package/dist/src/identify/pb/message.js +24 -0
  138. package/dist/src/identify/pb/message.js.map +1 -0
  139. package/dist/src/index.d.ts +162 -581
  140. package/dist/src/index.d.ts.map +1 -1
  141. package/dist/src/index.js +9 -0
  142. package/dist/src/index.js.map +1 -0
  143. package/dist/src/insecure/index.d.ts +9 -0
  144. package/dist/src/insecure/index.d.ts.map +1 -0
  145. package/dist/src/insecure/index.js +81 -0
  146. package/dist/src/insecure/index.js.map +1 -0
  147. package/dist/src/insecure/pb/proto.d.ts +28 -0
  148. package/dist/src/insecure/pb/proto.d.ts.map +1 -0
  149. package/dist/src/insecure/pb/proto.js +46 -0
  150. package/dist/src/insecure/pb/proto.js.map +1 -0
  151. package/dist/src/keychain/cms.d.ts +6 -14
  152. package/dist/src/keychain/cms.d.ts.map +1 -1
  153. package/dist/src/keychain/cms.js +129 -0
  154. package/dist/src/keychain/cms.js.map +1 -0
  155. package/dist/src/keychain/index.d.ts +61 -81
  156. package/dist/src/keychain/index.d.ts.map +1 -1
  157. package/dist/src/keychain/index.js +493 -0
  158. package/dist/src/keychain/index.js.map +1 -0
  159. package/dist/src/keychain/util.d.ts +3 -6
  160. package/dist/src/keychain/util.d.ts.map +1 -1
  161. package/dist/src/keychain/util.js +79 -0
  162. package/dist/src/keychain/util.js.map +1 -0
  163. package/dist/src/libp2p.d.ts +78 -0
  164. package/dist/src/libp2p.d.ts.map +1 -0
  165. package/dist/src/libp2p.js +375 -0
  166. package/dist/src/libp2p.js.map +1 -0
  167. package/dist/src/metrics/index.d.ts +47 -104
  168. package/dist/src/metrics/index.d.ts.map +1 -1
  169. package/dist/src/metrics/index.js +231 -0
  170. package/dist/src/metrics/index.js.map +1 -0
  171. package/dist/src/metrics/moving-average.d.ts +14 -0
  172. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  173. package/dist/src/metrics/moving-average.js +40 -0
  174. package/dist/src/metrics/moving-average.js.map +1 -0
  175. package/dist/src/metrics/stats.d.ts +41 -93
  176. package/dist/src/metrics/stats.d.ts.map +1 -1
  177. package/dist/src/metrics/stats.js +183 -0
  178. package/dist/src/metrics/stats.js.map +1 -0
  179. package/dist/src/nat-manager.d.ts +42 -99
  180. package/dist/src/nat-manager.d.ts.map +1 -1
  181. package/dist/src/nat-manager.js +114 -0
  182. package/dist/src/nat-manager.js.map +1 -0
  183. package/dist/src/peer-record-updater.d.ts +15 -0
  184. package/dist/src/peer-record-updater.d.ts.map +1 -0
  185. package/dist/src/peer-record-updater.js +44 -0
  186. package/dist/src/peer-record-updater.js.map +1 -0
  187. package/dist/src/peer-routing.d.ts +39 -84
  188. package/dist/src/peer-routing.d.ts.map +1 -1
  189. package/dist/src/peer-routing.js +108 -0
  190. package/dist/src/peer-routing.js.map +1 -0
  191. package/dist/src/ping/constants.d.ts +4 -4
  192. package/dist/src/ping/constants.d.ts.map +1 -1
  193. package/dist/src/ping/constants.js +5 -0
  194. package/dist/src/ping/constants.js.map +1 -0
  195. package/dist/src/ping/index.d.ts +26 -33
  196. package/dist/src/ping/index.d.ts.map +1 -1
  197. package/dist/src/ping/index.js +56 -0
  198. package/dist/src/ping/index.js.map +1 -0
  199. package/dist/src/pnet/crypto.d.ts +15 -5
  200. package/dist/src/pnet/crypto.d.ts.map +1 -1
  201. package/dist/src/pnet/crypto.js +60 -0
  202. package/dist/src/pnet/crypto.js.map +1 -0
  203. package/dist/src/pnet/errors.d.ts +5 -5
  204. package/dist/src/pnet/errors.d.ts.map +1 -1
  205. package/dist/src/pnet/errors.js +6 -0
  206. package/dist/src/pnet/errors.js.map +1 -0
  207. package/dist/src/pnet/index.d.ts +11 -20
  208. package/dist/src/pnet/index.d.ts.map +1 -1
  209. package/dist/src/pnet/index.js +66 -0
  210. package/dist/src/pnet/index.js.map +1 -0
  211. package/dist/src/pnet/key-generator.d.ts +3 -7
  212. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  213. package/dist/src/pnet/key-generator.js +25 -0
  214. package/dist/src/pnet/key-generator.js.map +1 -0
  215. package/dist/src/registrar.d.ts +27 -65
  216. package/dist/src/registrar.d.ts.map +1 -1
  217. package/dist/src/registrar.js +159 -0
  218. package/dist/src/registrar.js.map +1 -0
  219. package/dist/src/transport-manager.d.ts +34 -82
  220. package/dist/src/transport-manager.d.ts.map +1 -1
  221. package/dist/src/transport-manager.js +223 -0
  222. package/dist/src/transport-manager.js.map +1 -0
  223. package/dist/src/upgrader.d.ts +49 -129
  224. package/dist/src/upgrader.d.ts.map +1 -1
  225. package/dist/src/upgrader.js +402 -0
  226. package/dist/src/upgrader.js.map +1 -0
  227. package/dist/src/version.d.ts +3 -0
  228. package/dist/src/version.d.ts.map +1 -0
  229. package/dist/src/version.js +3 -0
  230. package/dist/src/version.js.map +1 -0
  231. package/package.json +150 -197
  232. package/src/address-manager/index.ts +129 -0
  233. package/src/circuit/README.md +16 -11
  234. package/src/circuit/auto-relay.ts +284 -0
  235. package/src/circuit/circuit/hop.ts +211 -0
  236. package/src/circuit/circuit/stop.ts +78 -0
  237. package/src/circuit/circuit/stream-handler.ts +86 -0
  238. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  239. package/src/circuit/constants.ts +31 -0
  240. package/src/circuit/index.ts +120 -0
  241. package/src/circuit/{listener.js → listener.ts} +21 -27
  242. package/src/circuit/multicodec.ts +2 -0
  243. package/src/circuit/{protocol → pb}/index.proto +1 -1
  244. package/src/circuit/pb/index.ts +88 -0
  245. package/src/circuit/transport.ts +216 -0
  246. package/src/circuit/utils.ts +12 -0
  247. package/src/config.ts +101 -0
  248. package/src/connection-manager/auto-dialler.ts +154 -0
  249. package/src/connection-manager/index.ts +422 -0
  250. package/src/connection-manager/latency-monitor.ts +319 -0
  251. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  252. package/src/constants.ts +31 -0
  253. package/src/content-routing/index.ts +143 -0
  254. package/src/content-routing/utils.ts +54 -0
  255. package/src/dht/dht-content-routing.ts +43 -0
  256. package/src/dht/dht-peer-routing.ts +35 -0
  257. package/src/dialer/auto-dialer.ts +40 -0
  258. package/src/dialer/{dial-request.js → dial-request.ts} +60 -51
  259. package/src/dialer/index.ts +371 -0
  260. package/src/errors.ts +71 -0
  261. package/src/fetch/README.md +1 -1
  262. package/src/fetch/constants.ts +3 -0
  263. package/src/fetch/index.ts +167 -0
  264. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  265. package/src/fetch/pb/proto.ts +58 -0
  266. package/src/get-peer.ts +57 -0
  267. package/src/identify/consts.ts +13 -0
  268. package/src/identify/index.ts +445 -0
  269. package/src/identify/{message.proto → pb/message.proto} +0 -0
  270. package/src/identify/pb/message.ts +36 -0
  271. package/src/index.ts +242 -0
  272. package/src/insecure/index.ts +101 -0
  273. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  274. package/src/insecure/pb/proto.ts +61 -0
  275. package/src/keychain/{cms.js → cms.ts} +62 -58
  276. package/src/keychain/index.ts +588 -0
  277. package/src/keychain/{util.js → util.ts} +7 -17
  278. package/src/libp2p.ts +513 -0
  279. package/src/metrics/index.ts +310 -0
  280. package/src/metrics/moving-average.ts +53 -0
  281. package/src/metrics/stats.ts +238 -0
  282. package/src/nat-manager.ts +194 -0
  283. package/src/peer-record-updater.ts +55 -0
  284. package/src/peer-routing.ts +185 -0
  285. package/src/ping/README.md +1 -1
  286. package/src/ping/constants.ts +5 -0
  287. package/src/ping/index.ts +83 -0
  288. package/src/pnet/README.md +2 -2
  289. package/src/pnet/crypto.ts +67 -0
  290. package/src/pnet/errors.ts +5 -0
  291. package/src/pnet/index.ts +95 -0
  292. package/src/pnet/key-generator.ts +28 -0
  293. package/src/registrar.ts +205 -0
  294. package/src/transport-manager.ts +279 -0
  295. package/src/upgrader.ts +499 -0
  296. package/src/version.ts +3 -0
  297. package/dist/index.min.js +0 -55
  298. package/dist/src/circuit/protocol/index.d.ts +0 -173
  299. package/dist/src/fetch/proto.d.ts +0 -134
  300. package/dist/src/identify/message.d.ts +0 -95
  301. package/dist/src/insecure/plaintext.d.ts +0 -12
  302. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  303. package/dist/src/insecure/proto.d.ts +0 -128
  304. package/dist/src/metrics/old-peers.d.ts +0 -3
  305. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  306. package/dist/src/metrics/tracked-map.d.ts +0 -8
  307. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  308. package/dist/src/peer-store/address-book.d.ts +0 -67
  309. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  310. package/dist/src/peer-store/index.d.ts +0 -58
  311. package/dist/src/peer-store/index.d.ts.map +0 -1
  312. package/dist/src/peer-store/key-book.d.ts +0 -40
  313. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  314. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  315. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  316. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  317. package/dist/src/peer-store/proto-book.d.ts +0 -43
  318. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  319. package/dist/src/peer-store/store.d.ts +0 -73
  320. package/dist/src/peer-store/store.d.ts.map +0 -1
  321. package/dist/src/peer-store/types.d.ts +0 -202
  322. package/dist/src/peer-store/types.d.ts.map +0 -1
  323. package/dist/src/ping/util.d.ts +0 -5
  324. package/dist/src/ping/util.d.ts.map +0 -1
  325. package/dist/src/pubsub-adapter.d.ts +0 -22
  326. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  327. package/dist/src/record/envelope/envelope.d.ts +0 -77
  328. package/dist/src/record/envelope/index.d.ts +0 -80
  329. package/dist/src/record/envelope/index.d.ts.map +0 -1
  330. package/dist/src/record/peer-record/consts.d.ts +0 -4
  331. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  332. package/dist/src/record/peer-record/index.d.ts +0 -60
  333. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  334. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  335. package/dist/src/record/utils.d.ts +0 -12
  336. package/dist/src/record/utils.d.ts.map +0 -1
  337. package/dist/src/types.d.ts +0 -90
  338. package/dist/src/types.d.ts.map +0 -1
  339. package/src/address-manager/index.js +0 -96
  340. package/src/circuit/auto-relay.js +0 -302
  341. package/src/circuit/circuit/hop.js +0 -205
  342. package/src/circuit/circuit/stop.js +0 -81
  343. package/src/circuit/circuit/stream-handler.js +0 -94
  344. package/src/circuit/constants.js +0 -12
  345. package/src/circuit/index.js +0 -102
  346. package/src/circuit/multicodec.js +0 -5
  347. package/src/circuit/protocol/index.d.ts +0 -173
  348. package/src/circuit/protocol/index.js +0 -530
  349. package/src/circuit/transport.js +0 -229
  350. package/src/circuit/utils.js +0 -17
  351. package/src/config.js +0 -114
  352. package/src/connection-manager/auto-dialler.js +0 -132
  353. package/src/connection-manager/index.js +0 -363
  354. package/src/connection-manager/latency-monitor.js +0 -264
  355. package/src/constants.js +0 -18
  356. package/src/content-routing/index.js +0 -163
  357. package/src/content-routing/utils.js +0 -89
  358. package/src/dht/dht-content-routing.js +0 -44
  359. package/src/dht/dht-peer-routing.js +0 -51
  360. package/src/dialer/index.js +0 -376
  361. package/src/errors.js +0 -66
  362. package/src/fetch/constants.js +0 -6
  363. package/src/fetch/index.js +0 -159
  364. package/src/fetch/proto.d.ts +0 -134
  365. package/src/fetch/proto.js +0 -333
  366. package/src/get-peer.js +0 -49
  367. package/src/identify/consts.js +0 -15
  368. package/src/identify/index.js +0 -384
  369. package/src/identify/message.d.ts +0 -95
  370. package/src/identify/message.js +0 -328
  371. package/src/index.js +0 -811
  372. package/src/insecure/plaintext.js +0 -95
  373. package/src/insecure/proto.d.ts +0 -128
  374. package/src/insecure/proto.js +0 -371
  375. package/src/keychain/index.js +0 -561
  376. package/src/metrics/index.js +0 -290
  377. package/src/metrics/old-peers.js +0 -16
  378. package/src/metrics/stats.js +0 -270
  379. package/src/metrics/tracked-map.js +0 -94
  380. package/src/nat-manager.js +0 -197
  381. package/src/peer-routing.js +0 -176
  382. package/src/peer-store/README.md +0 -145
  383. package/src/peer-store/address-book.js +0 -382
  384. package/src/peer-store/index.js +0 -121
  385. package/src/peer-store/key-book.js +0 -141
  386. package/src/peer-store/metadata-book.js +0 -250
  387. package/src/peer-store/pb/peer.d.ts +0 -222
  388. package/src/peer-store/pb/peer.js +0 -643
  389. package/src/peer-store/pb/peer.proto +0 -31
  390. package/src/peer-store/proto-book.js +0 -237
  391. package/src/peer-store/store.js +0 -263
  392. package/src/peer-store/types.ts +0 -245
  393. package/src/ping/constants.js +0 -8
  394. package/src/ping/index.js +0 -85
  395. package/src/ping/util.js +0 -18
  396. package/src/pnet/crypto.js +0 -84
  397. package/src/pnet/errors.js +0 -7
  398. package/src/pnet/index.js +0 -86
  399. package/src/pnet/key-generator.js +0 -33
  400. package/src/pubsub-adapter.js +0 -61
  401. package/src/record/README.md +0 -130
  402. package/src/record/envelope/envelope.d.ts +0 -77
  403. package/src/record/envelope/envelope.js +0 -243
  404. package/src/record/envelope/envelope.proto +0 -19
  405. package/src/record/envelope/index.js +0 -183
  406. package/src/record/peer-record/consts.js +0 -14
  407. package/src/record/peer-record/index.js +0 -113
  408. package/src/record/peer-record/peer-record.d.ts +0 -133
  409. package/src/record/peer-record/peer-record.js +0 -367
  410. package/src/record/peer-record/peer-record.proto +0 -18
  411. package/src/record/utils.js +0 -25
  412. package/src/registrar.js +0 -127
  413. package/src/transport-manager.js +0 -269
  414. package/src/types.ts +0 -98
  415. package/src/upgrader.js +0 -492
@@ -0,0 +1,223 @@
1
+ import { logger } from '@libp2p/logger';
2
+ import pSettle from 'p-settle';
3
+ import { codes } from './errors.js';
4
+ import errCode from 'err-code';
5
+ import { CustomEvent, EventEmitter } from '@libp2p/interfaces';
6
+ import { trackedMap } from '@libp2p/tracked-map';
7
+ const log = logger('libp2p:transports');
8
+ export class DefaultTransportManager extends EventEmitter {
9
+ constructor(components, init = {}) {
10
+ super();
11
+ this.components = components;
12
+ this.started = false;
13
+ this.transports = new Map();
14
+ this.listeners = trackedMap({
15
+ component: 'transport-manager',
16
+ metric: 'listeners',
17
+ metrics: this.components.getMetrics()
18
+ });
19
+ this.faultTolerance = init.faultTolerance ?? FaultTolerance.FATAL_ALL;
20
+ }
21
+ /**
22
+ * Adds a `Transport` to the manager
23
+ */
24
+ add(transport) {
25
+ const tag = transport[Symbol.toStringTag];
26
+ if (tag == null) {
27
+ throw errCode(new Error('Transport must have a valid tag'), codes.ERR_INVALID_KEY);
28
+ }
29
+ if (this.transports.has(tag)) {
30
+ throw errCode(new Error('There is already a transport with this tag'), codes.ERR_DUPLICATE_TRANSPORT);
31
+ }
32
+ log('adding transport %s', tag);
33
+ this.transports.set(tag, transport);
34
+ if (!this.listeners.has(tag)) {
35
+ this.listeners.set(tag, []);
36
+ }
37
+ }
38
+ isStarted() {
39
+ return this.started;
40
+ }
41
+ async start() {
42
+ // Listen on the provided transports for the provided addresses
43
+ const addrs = this.components.getAddressManager().getListenAddrs();
44
+ await this.listen(addrs);
45
+ this.started = true;
46
+ }
47
+ /**
48
+ * Stops all listeners
49
+ */
50
+ async stop() {
51
+ const tasks = [];
52
+ for (const [key, listeners] of this.listeners) {
53
+ log('closing listeners for %s', key);
54
+ while (listeners.length > 0) {
55
+ const listener = listeners.pop();
56
+ if (listener == null) {
57
+ continue;
58
+ }
59
+ tasks.push(listener.close());
60
+ }
61
+ }
62
+ await Promise.all(tasks);
63
+ log('all listeners closed');
64
+ for (const key of this.listeners.keys()) {
65
+ this.listeners.set(key, []);
66
+ }
67
+ this.started = false;
68
+ }
69
+ /**
70
+ * Dials the given Multiaddr over it's supported transport
71
+ */
72
+ async dial(ma, options) {
73
+ const transport = this.transportForMultiaddr(ma);
74
+ if (transport == null) {
75
+ throw errCode(new Error(`No transport available for address ${String(ma)}`), codes.ERR_TRANSPORT_UNAVAILABLE);
76
+ }
77
+ try {
78
+ return await transport.dial(ma, {
79
+ ...options,
80
+ upgrader: this.components.getUpgrader()
81
+ });
82
+ }
83
+ catch (err) {
84
+ if (err.code == null) {
85
+ err.code = codes.ERR_TRANSPORT_DIAL_FAILED;
86
+ }
87
+ throw err;
88
+ }
89
+ }
90
+ /**
91
+ * Returns all Multiaddr's the listeners are using
92
+ */
93
+ getAddrs() {
94
+ let addrs = [];
95
+ for (const listeners of this.listeners.values()) {
96
+ for (const listener of listeners) {
97
+ addrs = [...addrs, ...listener.getAddrs()];
98
+ }
99
+ }
100
+ return addrs;
101
+ }
102
+ /**
103
+ * Returns all the transports instances
104
+ */
105
+ getTransports() {
106
+ return Array.of(...this.transports.values());
107
+ }
108
+ /**
109
+ * Finds a transport that matches the given Multiaddr
110
+ */
111
+ transportForMultiaddr(ma) {
112
+ for (const transport of this.transports.values()) {
113
+ const addrs = transport.filter([ma]);
114
+ if (addrs.length > 0) {
115
+ return transport;
116
+ }
117
+ }
118
+ }
119
+ /**
120
+ * Starts listeners for each listen Multiaddr
121
+ */
122
+ async listen(addrs) {
123
+ if (addrs == null || addrs.length === 0) {
124
+ log('no addresses were provided for listening, this node is dial only');
125
+ return;
126
+ }
127
+ const couldNotListen = [];
128
+ for (const [key, transport] of this.transports.entries()) {
129
+ const supportedAddrs = transport.filter(addrs);
130
+ const tasks = [];
131
+ // For each supported multiaddr, create a listener
132
+ for (const addr of supportedAddrs) {
133
+ log('creating listener for %s on %s', key, addr);
134
+ const listener = transport.createListener({
135
+ upgrader: this.components.getUpgrader()
136
+ });
137
+ let listeners = this.listeners.get(key);
138
+ if (listeners == null) {
139
+ listeners = [];
140
+ this.listeners.set(key, listeners);
141
+ }
142
+ listeners.push(listener);
143
+ // Track listen/close events
144
+ listener.addEventListener('listening', () => {
145
+ this.dispatchEvent(new CustomEvent('listener:listening', {
146
+ detail: listener
147
+ }));
148
+ });
149
+ listener.addEventListener('close', () => {
150
+ this.dispatchEvent(new CustomEvent('listener:close', {
151
+ detail: listener
152
+ }));
153
+ });
154
+ // We need to attempt to listen on everything
155
+ tasks.push(listener.listen(addr));
156
+ }
157
+ // Keep track of transports we had no addresses for
158
+ if (tasks.length === 0) {
159
+ couldNotListen.push(key);
160
+ continue;
161
+ }
162
+ const results = await pSettle(tasks);
163
+ // If we are listening on at least 1 address, succeed.
164
+ // TODO: we should look at adding a retry (`p-retry`) here to better support
165
+ // listening on remote addresses as they may be offline. We could then potentially
166
+ // just wait for any (`p-any`) listener to succeed on each transport before returning
167
+ const isListening = results.find(r => r.isFulfilled);
168
+ if ((isListening == null) && this.faultTolerance !== FaultTolerance.NO_FATAL) {
169
+ throw errCode(new Error(`Transport (${key}) could not listen on any available address`), codes.ERR_NO_VALID_ADDRESSES);
170
+ }
171
+ }
172
+ // If no transports were able to listen, throw an error. This likely
173
+ // means we were given addresses we do not have transports for
174
+ if (couldNotListen.length === this.transports.size) {
175
+ const message = `no valid addresses were provided for transports [${couldNotListen.join(', ')}]`;
176
+ if (this.faultTolerance === FaultTolerance.FATAL_ALL) {
177
+ throw errCode(new Error(message), codes.ERR_NO_VALID_ADDRESSES);
178
+ }
179
+ log(`libp2p in dial mode only: ${message}`);
180
+ }
181
+ }
182
+ /**
183
+ * Removes the given transport from the manager.
184
+ * If a transport has any running listeners, they will be closed.
185
+ */
186
+ async remove(key) {
187
+ log('removing %s', key);
188
+ // Close any running listeners
189
+ for (const listener of this.listeners.get(key) ?? []) {
190
+ await listener.close();
191
+ }
192
+ this.transports.delete(key);
193
+ this.listeners.delete(key);
194
+ }
195
+ /**
196
+ * Removes all transports from the manager.
197
+ * If any listeners are running, they will be closed.
198
+ *
199
+ * @async
200
+ */
201
+ async removeAll() {
202
+ const tasks = [];
203
+ for (const key of this.transports.keys()) {
204
+ tasks.push(this.remove(key));
205
+ }
206
+ await Promise.all(tasks);
207
+ }
208
+ }
209
+ /**
210
+ * Enum Transport Manager Fault Tolerance values
211
+ */
212
+ export var FaultTolerance;
213
+ (function (FaultTolerance) {
214
+ /**
215
+ * should be used for failing in any listen circumstance
216
+ */
217
+ FaultTolerance[FaultTolerance["FATAL_ALL"] = 0] = "FATAL_ALL";
218
+ /**
219
+ * should be used for not failing when not listening
220
+ */
221
+ FaultTolerance[FaultTolerance["NO_FATAL"] = 1] = "NO_FATAL";
222
+ })(FaultTolerance || (FaultTolerance = {}));
223
+ //# sourceMappingURL=transport-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-manager.js","sourceRoot":"","sources":["../../src/transport-manager.ts"],"names":[],"mappings":"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"}
@@ -1,157 +1,77 @@
1
- export = Upgrader;
2
- /**
3
- * @typedef {import('libp2p-interfaces/src/transport/types').MultiaddrConnection} MultiaddrConnection
4
- * @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxerFactory} MuxerFactory
5
- * @typedef {import('libp2p-interfaces/src/stream-muxer/types').Muxer} Muxer
6
- * @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
7
- * @typedef {import('libp2p-interfaces/src/crypto/types').Crypto} Crypto
8
- * @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
9
- * @typedef {import('multiaddr').Multiaddr} Multiaddr
10
- * @typedef {import('./types').ConnectionGater} ConnectionGater
11
- */
12
- /**
13
- * @typedef CryptoResult
14
- * @property {MultiaddrConnection} conn A duplex iterable
15
- * @property {PeerId} remotePeer
16
- * @property {string} protocol
17
- */
18
- declare class Upgrader {
19
- /**
20
- * @param {object} options
21
- * @param {PeerId} options.localPeer
22
- * @param {ConnectionGater} options.connectionGater
23
- *
24
- * @param {import('./metrics')} [options.metrics]
25
- * @param {Map<string, Crypto>} [options.cryptos]
26
- * @param {Map<string, MuxerFactory>} [options.muxers]
27
- * @param {(connection: Connection) => void} options.onConnection - Called when a connection is upgraded
28
- * @param {(connection: Connection) => void} options.onConnectionEnd
29
- */
30
- constructor({ localPeer, metrics, connectionGater, cryptos, muxers, onConnectionEnd, onConnection }: {
31
- localPeer: PeerId;
32
- connectionGater: ConnectionGater;
33
- metrics?: import("./metrics") | undefined;
34
- cryptos?: Map<string, import("libp2p-interfaces/src/crypto/types").Crypto> | undefined;
35
- muxers?: Map<string, import("libp2p-interfaces/src/stream-muxer/types").MuxerFactory> | undefined;
36
- onConnection: (connection: Connection) => void;
37
- onConnectionEnd: (connection: Connection) => void;
38
- });
39
- connectionGater: import("./types").ConnectionGater;
40
- localPeer: PeerId;
41
- metrics: import("./metrics") | undefined;
42
- cryptos: Map<string, import("libp2p-interfaces/src/crypto/types").Crypto>;
43
- muxers: Map<string, import("libp2p-interfaces/src/stream-muxer/types").MuxerFactory>;
44
- /** @type {import("./pnet") | null} */
45
- protector: import("./pnet") | null;
46
- protocols: Map<any, any>;
47
- onConnection: (connection: Connection) => void;
48
- onConnectionEnd: (connection: Connection) => void;
1
+ import { EventEmitter } from '@libp2p/interfaces';
2
+ import type { Connection, Stream } from '@libp2p/interfaces/connection';
3
+ import type { ConnectionEncrypter, SecuredConnection } from '@libp2p/interfaces/connection-encrypter';
4
+ import type { StreamMuxerFactory } from '@libp2p/interfaces/stream-muxer';
5
+ import type { PeerId } from '@libp2p/interfaces/peer-id';
6
+ import type { MultiaddrConnection, Upgrader, UpgraderEvents } from '@libp2p/interfaces/transport';
7
+ import type { Duplex } from 'it-stream-types';
8
+ import type { Components } from '@libp2p/interfaces/components';
9
+ interface CreateConectionOptions {
10
+ cryptoProtocol: string;
11
+ direction: 'inbound' | 'outbound';
12
+ maConn: MultiaddrConnection;
13
+ upgradedConn: Duplex<Uint8Array>;
14
+ remotePeer: PeerId;
15
+ muxerFactory?: StreamMuxerFactory;
16
+ }
17
+ interface OnStreamOptions {
18
+ connection: Connection;
19
+ stream: Stream;
20
+ protocol: string;
21
+ }
22
+ export interface CryptoResult extends SecuredConnection {
23
+ protocol: string;
24
+ }
25
+ export interface UpgraderInit {
26
+ connectionEncryption: ConnectionEncrypter[];
27
+ muxers: StreamMuxerFactory[];
28
+ }
29
+ export declare class DefaultUpgrader extends EventEmitter<UpgraderEvents> implements Upgrader {
30
+ private readonly components;
31
+ private readonly connectionEncryption;
32
+ private readonly muxers;
33
+ constructor(components: Components, init: UpgraderInit);
49
34
  /**
50
35
  * Upgrades an inbound connection
51
- *
52
- * @async
53
- * @param {MultiaddrConnection} maConn
54
- * @returns {Promise<Connection>}
55
36
  */
56
37
  upgradeInbound(maConn: MultiaddrConnection): Promise<Connection>;
57
38
  /**
58
39
  * Upgrades an outbound connection
59
- *
60
- * @async
61
- * @param {MultiaddrConnection} maConn
62
- * @returns {Promise<Connection>}
63
40
  */
64
41
  upgradeOutbound(maConn: MultiaddrConnection): Promise<Connection>;
65
42
  /**
66
43
  * A convenience method for generating a new `Connection`
67
- *
68
- * @private
69
- * @param {object} options
70
- * @param {string} options.cryptoProtocol - The crypto protocol that was negotiated
71
- * @param {'inbound' | 'outbound'} options.direction - One of ['inbound', 'outbound']
72
- * @param {MultiaddrConnection} options.maConn - The transport layer connection
73
- * @param {MuxedStream | MultiaddrConnection} options.upgradedConn - A duplex connection returned from multiplexer and/or crypto selection
74
- * @param {MuxerFactory} [options.Muxer] - The muxer to be used for muxing
75
- * @param {PeerId} options.remotePeer - The peer the connection is with
76
- * @returns {Connection}
77
44
  */
78
- private _createConnection;
45
+ _createConnection(opts: CreateConectionOptions): Connection;
79
46
  /**
80
47
  * Routes incoming streams to the correct handler
81
- *
82
- * @private
83
- * @param {object} options
84
- * @param {Connection} options.connection - The connection the stream belongs to
85
- * @param {MuxedStream} options.stream
86
- * @param {string} options.protocol
87
48
  */
88
- private _onStream;
49
+ _onStream(opts: OnStreamOptions): void;
89
50
  /**
90
- * Attempts to encrypt the incoming `connection` with the provided `cryptos`.
91
- *
92
- * @private
93
- * @async
94
- * @param {PeerId} localPeer - The initiators PeerId
95
- * @param {*} connection
96
- * @param {Map<string, Crypto>} cryptos
97
- * @returns {Promise<CryptoResult>} An encrypted connection, remote peer `PeerId` and the protocol of the `Crypto` used
51
+ * Attempts to encrypt the incoming `connection` with the provided `cryptos`
98
52
  */
99
- private _encryptInbound;
53
+ _encryptInbound(connection: Duplex<Uint8Array>): Promise<CryptoResult>;
100
54
  /**
101
- * Attempts to encrypt the given `connection` with the provided `cryptos`.
102
- * The first `Crypto` module to succeed will be used
103
- *
104
- * @private
105
- * @async
106
- * @param {PeerId} localPeer - The initiators PeerId
107
- * @param {MultiaddrConnection} connection
108
- * @param {PeerId} remotePeerId
109
- * @param {Map<string, Crypto>} cryptos
110
- * @returns {Promise<CryptoResult>} An encrypted connection, remote peer `PeerId` and the protocol of the `Crypto` used
55
+ * Attempts to encrypt the given `connection` with the provided connection encrypters.
56
+ * The first `ConnectionEncrypter` module to succeed will be used
111
57
  */
112
- private _encryptOutbound;
58
+ _encryptOutbound(connection: MultiaddrConnection, remotePeerId: PeerId): Promise<CryptoResult>;
113
59
  /**
114
60
  * Selects one of the given muxers via multistream-select. That
115
61
  * muxer will be used for all future streams on the connection.
116
- *
117
- * @private
118
- * @async
119
- * @param {MultiaddrConnection} connection - A basic duplex connection to multiplex
120
- * @param {Map<string, MuxerFactory>} muxers - The muxers to attempt multiplexing with
121
- * @returns {Promise<{ stream: MuxedStream, Muxer?: MuxerFactory}>} A muxed connection
122
62
  */
123
- private _multiplexOutbound;
63
+ _multiplexOutbound(connection: MultiaddrConnection, muxers: Map<string, StreamMuxerFactory>): Promise<{
64
+ stream: Duplex<Uint8Array>;
65
+ muxerFactory?: StreamMuxerFactory;
66
+ }>;
124
67
  /**
125
68
  * Registers support for one of the given muxers via multistream-select. The
126
69
  * selected muxer will be used for all future streams on the connection.
127
- *
128
- * @private
129
- * @async
130
- * @param {MultiaddrConnection} connection - A basic duplex connection to multiplex
131
- * @param {Map<string, MuxerFactory>} muxers - The muxers to attempt multiplexing with
132
- * @returns {Promise<{ stream: MuxedStream, Muxer?: MuxerFactory}>} A muxed connection
133
70
  */
134
- private _multiplexInbound;
71
+ _multiplexInbound(connection: MultiaddrConnection, muxers: Map<string, StreamMuxerFactory>): Promise<{
72
+ stream: Duplex<Uint8Array>;
73
+ muxerFactory?: StreamMuxerFactory;
74
+ }>;
135
75
  }
136
- declare namespace Upgrader {
137
- export { MultiaddrConnection, MuxerFactory, Muxer, MuxedStream, Crypto, Connection, Multiaddr, ConnectionGater, CryptoResult };
138
- }
139
- import PeerId = require("peer-id");
140
- type MultiaddrConnection = import('libp2p-interfaces/src/transport/types').MultiaddrConnection;
141
- import { Connection } from "libp2p-interfaces/src/connection";
142
- type ConnectionGater = import('./types').ConnectionGater;
143
- type MuxerFactory = import('libp2p-interfaces/src/stream-muxer/types').MuxerFactory;
144
- type Muxer = import('libp2p-interfaces/src/stream-muxer/types').Muxer;
145
- type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
146
- type Crypto = import('libp2p-interfaces/src/crypto/types').Crypto;
147
- type Connection = import("libp2p-interfaces/src/connection/connection");
148
- type Multiaddr = import('multiaddr').Multiaddr;
149
- type CryptoResult = {
150
- /**
151
- * A duplex iterable
152
- */
153
- conn: MultiaddrConnection;
154
- remotePeer: PeerId;
155
- protocol: string;
156
- };
76
+ export {};
157
77
  //# sourceMappingURL=upgrader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"upgrader.d.ts","sourceRoot":"","sources":["../../src/upgrader.js"],"names":[],"mappings":";AAgBA;;;;;;;;;GASG;AAEH;;;;;GAKG;AAEH;IACE;;;;;;;;;;OAUG;IACH;mBATW,MAAM;yBACN,eAAe;;;;mCAKF,UAAU,KAAK,IAAI;sCACnB,UAAU,KAAK,IAAI;OAqB1C;IAVC,mDAAsC;IACtC,kBAA0B;IAC1B,yCAAsB;IACtB,0EAAsB;IACtB,qFAAoB;IACpB,sCAAsC;IACtC,WADW,OAAO,QAAQ,CAAC,GAAG,IAAI,CACb;IACrB,yBAA0B;IAC1B,2BApBsB,UAAU,KAAK,IAAI,CAoBT;IAChC,8BApBsB,UAAU,KAAK,IAAI,CAoBH;IAGxC;;;;;;OAMG;IACH,uBAHW,mBAAmB,GACjB,QAAQ,UAAU,CAAC,CAyE/B;IAED;;;;;;OAMG;IACH,wBAHW,mBAAmB,GACjB,QAAQ,UAAU,CAAC,CAgF/B;IAED;;;;;;;;;;;;OAYG;IACH,0BAgHC;IAED;;;;;;;;OAQG;IACH,kBAGC;IAED;;;;;;;;;OASG;IACH,wBAqBC;IAED;;;;;;;;;;;OAWG;IACH,yBAqBC;IAED;;;;;;;;;OASG;IACH,2BAYC;IAED;;;;;;;;;OASG;IACH,0BAWC;CACF;;;;;2BAxdY,OAAO,uCAAuC,EAAE,mBAAmB;;uBAOnE,OAAO,SAAS,EAAE,eAAe;oBANjC,OAAO,0CAA0C,EAAE,YAAY;aAC/D,OAAO,0CAA0C,EAAE,KAAK;mBACxD,OAAO,0CAA0C,EAAE,WAAW;cAC9D,OAAO,oCAAoC,EAAE,MAAM;;iBAEnD,OAAO,WAAW,EAAE,SAAS;;;;;UAM5B,mBAAmB;gBACnB,MAAM;cACN,MAAM"}
1
+ {"version":3,"file":"upgrader.d.ts","sourceRoot":"","sources":["../../src/upgrader.ts"],"names":[],"mappings":"AAQA,OAAO,EAAe,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAA;AACrG,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACtF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AACjG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAI/D,UAAU,sBAAsB;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,SAAS,GAAG,UAAU,CAAA;IACjC,MAAM,EAAE,mBAAmB,CAAA;IAC3B,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAClC;AAED,UAAU,eAAe;IACvB,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAa,SAAQ,iBAAiB;IACrD,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,oBAAoB,EAAE,mBAAmB,EAAE,CAAA;IAC3C,MAAM,EAAE,kBAAkB,EAAE,CAAA;CAC7B;AAED,qBAAa,eAAgB,SAAQ,YAAY,CAAC,cAAc,CAAE,YAAW,QAAQ;IACnF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAkC;IACvE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;gBAE3C,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY;IAiBvD;;OAEG;IACG,cAAc,CAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwFvE;;OAEG;IACG,eAAe,CAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IA8FxE;;OAEG;IACH,iBAAiB,CAAE,IAAI,EAAE,sBAAsB,GAAG,UAAU;IA6I5D;;OAEG;IACH,SAAS,CAAE,IAAI,EAAE,eAAe,GAAG,IAAI;IAMvC;;OAEG;IACG,eAAe,CAAE,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAwB7E;;;OAGG;IACG,gBAAgB,CAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAwBrG;;;OAGG;IACG,kBAAkB,CAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAAC,YAAY,CAAC,EAAE,kBAAkB,CAAA;KAAC,CAAC;IAe9K;;;OAGG;IACG,iBAAiB,CAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAAC,YAAY,CAAC,EAAE,kBAAkB,CAAA;KAAC,CAAC;CAa9K"}