libp2p 0.36.0 → 0.36.2-199395d

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 (398) 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 +25 -52
  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 +16 -8
  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 +16 -35
  20. package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
  21. package/dist/src/circuit/circuit/stream-handler.js +60 -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/{protocol → pb}/index.d.ts +0 -0
  44. package/{src/circuit/protocol → dist/src/circuit/pb}/index.js +7 -9
  45. package/dist/src/circuit/transport.d.ts +18 -78
  46. package/dist/src/circuit/transport.d.ts.map +1 -1
  47. package/dist/src/circuit/transport.js +190 -0
  48. package/dist/src/circuit/transport.js.map +1 -0
  49. package/dist/src/circuit/utils.d.ts +5 -2
  50. package/dist/src/circuit/utils.d.ts.map +1 -1
  51. package/dist/src/circuit/utils.js +11 -0
  52. package/dist/src/circuit/utils.js.map +1 -0
  53. package/dist/src/config.d.ts +3 -85
  54. package/dist/src/config.d.ts.map +1 -1
  55. package/dist/src/config.js +93 -0
  56. package/dist/src/config.js.map +1 -0
  57. package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
  58. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  59. package/dist/src/connection-manager/auto-dialler.js +105 -0
  60. package/dist/src/connection-manager/auto-dialler.js.map +1 -0
  61. package/dist/src/connection-manager/index.d.ts +79 -144
  62. package/dist/src/connection-manager/index.d.ts.map +1 -1
  63. package/dist/src/connection-manager/index.js +295 -0
  64. package/dist/src/connection-manager/index.js.map +1 -0
  65. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  66. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  67. package/dist/src/connection-manager/latency-monitor.js +220 -0
  68. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  69. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  70. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  71. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  72. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  73. package/dist/src/constants.d.ts +22 -10
  74. package/dist/src/constants.d.ts.map +1 -1
  75. package/dist/src/constants.js +27 -0
  76. package/dist/src/constants.js.map +1 -0
  77. package/dist/src/content-routing/index.d.ts +26 -81
  78. package/dist/src/content-routing/index.d.ts.map +1 -1
  79. package/dist/src/content-routing/index.js +99 -0
  80. package/dist/src/content-routing/index.js.map +1 -0
  81. package/dist/src/content-routing/utils.d.ts +6 -49
  82. package/dist/src/content-routing/utils.d.ts.map +1 -1
  83. package/dist/src/content-routing/utils.js +42 -0
  84. package/dist/src/content-routing/utils.js.map +1 -0
  85. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  86. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  87. package/dist/src/dht/dht-content-routing.js +32 -0
  88. package/dist/src/dht/dht-content-routing.js.map +1 -0
  89. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  90. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  91. package/dist/src/dht/dht-peer-routing.js +26 -0
  92. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  93. package/dist/src/dialer/auto-dialer.d.ts +14 -0
  94. package/dist/src/dialer/auto-dialer.d.ts.map +1 -0
  95. package/dist/src/dialer/auto-dialer.js +24 -0
  96. package/dist/src/dialer/auto-dialer.js.map +1 -0
  97. package/dist/src/dialer/dial-request.d.ts +18 -46
  98. package/dist/src/dialer/dial-request.d.ts.map +1 -1
  99. package/dist/src/dialer/dial-request.js +83 -0
  100. package/dist/src/dialer/dial-request.js.map +1 -0
  101. package/dist/src/dialer/index.d.ts +41 -148
  102. package/dist/src/dialer/index.d.ts.map +1 -1
  103. package/dist/src/dialer/index.js +281 -0
  104. package/dist/src/dialer/index.js.map +1 -0
  105. package/dist/src/errors.d.ts +68 -63
  106. package/dist/src/errors.d.ts.map +1 -1
  107. package/dist/src/errors.js +73 -0
  108. package/dist/src/errors.js.map +1 -0
  109. package/dist/src/fetch/constants.d.ts +1 -1
  110. package/dist/src/fetch/constants.d.ts.map +1 -1
  111. package/dist/src/fetch/constants.js +3 -0
  112. package/dist/src/fetch/constants.js.map +1 -0
  113. package/dist/src/fetch/index.d.ts +30 -49
  114. package/dist/src/fetch/index.d.ts.map +1 -1
  115. package/dist/src/fetch/index.js +130 -0
  116. package/dist/src/fetch/index.js.map +1 -0
  117. package/dist/src/fetch/{proto.d.ts → pb/proto.d.ts} +0 -0
  118. package/{src/fetch → dist/src/fetch/pb}/proto.js +7 -9
  119. package/dist/src/get-peer.d.ts +4 -11
  120. package/dist/src/get-peer.d.ts.map +1 -1
  121. package/dist/src/get-peer.js +43 -0
  122. package/dist/src/get-peer.js.map +1 -0
  123. package/dist/src/identify/consts.d.ts +9 -9
  124. package/dist/src/identify/consts.d.ts.map +1 -1
  125. package/dist/src/identify/consts.js +11 -0
  126. package/dist/src/identify/consts.js.map +1 -0
  127. package/dist/src/identify/index.d.ts +40 -96
  128. package/dist/src/identify/index.d.ts.map +1 -1
  129. package/dist/src/identify/index.js +322 -0
  130. package/dist/src/identify/index.js.map +1 -0
  131. package/{src/identify → dist/src/identify/pb}/message.d.ts +20 -5
  132. package/{src/identify → dist/src/identify/pb}/message.js +83 -42
  133. package/dist/src/index.d.ts +157 -583
  134. package/dist/src/index.d.ts.map +1 -1
  135. package/dist/src/index.js +9 -0
  136. package/dist/src/index.js.map +1 -0
  137. package/dist/src/insecure/index.d.ts +9 -0
  138. package/dist/src/insecure/index.d.ts.map +1 -0
  139. package/dist/src/insecure/index.js +78 -0
  140. package/dist/src/insecure/index.js.map +1 -0
  141. package/dist/src/insecure/{proto.d.ts → pb/proto.d.ts} +7 -1
  142. package/{src/insecure → dist/src/insecure/pb}/proto.js +39 -22
  143. package/dist/src/keychain/cms.d.ts +6 -14
  144. package/dist/src/keychain/cms.d.ts.map +1 -1
  145. package/dist/src/keychain/cms.js +129 -0
  146. package/dist/src/keychain/cms.js.map +1 -0
  147. package/dist/src/keychain/index.d.ts +62 -82
  148. package/dist/src/keychain/index.d.ts.map +1 -1
  149. package/dist/src/keychain/index.js +493 -0
  150. package/dist/src/keychain/index.js.map +1 -0
  151. package/dist/src/keychain/util.d.ts +3 -6
  152. package/dist/src/keychain/util.d.ts.map +1 -1
  153. package/dist/src/keychain/util.js +79 -0
  154. package/dist/src/keychain/util.js.map +1 -0
  155. package/dist/src/libp2p.d.ts +75 -0
  156. package/dist/src/libp2p.d.ts.map +1 -0
  157. package/dist/src/libp2p.js +368 -0
  158. package/dist/src/libp2p.js.map +1 -0
  159. package/dist/src/metrics/index.d.ts +47 -104
  160. package/dist/src/metrics/index.d.ts.map +1 -1
  161. package/dist/src/metrics/index.js +231 -0
  162. package/dist/src/metrics/index.js.map +1 -0
  163. package/dist/src/metrics/moving-average.d.ts +14 -0
  164. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  165. package/dist/src/metrics/moving-average.js +40 -0
  166. package/dist/src/metrics/moving-average.js.map +1 -0
  167. package/dist/src/metrics/stats.d.ts +45 -93
  168. package/dist/src/metrics/stats.d.ts.map +1 -1
  169. package/dist/src/metrics/stats.js +183 -0
  170. package/dist/src/metrics/stats.js.map +1 -0
  171. package/dist/src/nat-manager.d.ts +42 -99
  172. package/dist/src/nat-manager.d.ts.map +1 -1
  173. package/dist/src/nat-manager.js +114 -0
  174. package/dist/src/nat-manager.js.map +1 -0
  175. package/dist/src/peer-record-updater.d.ts +15 -0
  176. package/dist/src/peer-record-updater.d.ts.map +1 -0
  177. package/dist/src/peer-record-updater.js +44 -0
  178. package/dist/src/peer-record-updater.js.map +1 -0
  179. package/dist/src/peer-routing.d.ts +39 -84
  180. package/dist/src/peer-routing.d.ts.map +1 -1
  181. package/dist/src/peer-routing.js +108 -0
  182. package/dist/src/peer-routing.js.map +1 -0
  183. package/dist/src/ping/constants.d.ts +4 -4
  184. package/dist/src/ping/constants.d.ts.map +1 -1
  185. package/dist/src/ping/constants.js +5 -0
  186. package/dist/src/ping/constants.js.map +1 -0
  187. package/dist/src/ping/index.d.ts +26 -33
  188. package/dist/src/ping/index.d.ts.map +1 -1
  189. package/dist/src/ping/index.js +56 -0
  190. package/dist/src/ping/index.js.map +1 -0
  191. package/dist/src/pnet/crypto.d.ts +15 -5
  192. package/dist/src/pnet/crypto.d.ts.map +1 -1
  193. package/dist/src/pnet/crypto.js +60 -0
  194. package/dist/src/pnet/crypto.js.map +1 -0
  195. package/dist/src/pnet/errors.d.ts +5 -5
  196. package/dist/src/pnet/errors.d.ts.map +1 -1
  197. package/dist/src/pnet/errors.js +6 -0
  198. package/dist/src/pnet/errors.js.map +1 -0
  199. package/dist/src/pnet/index.d.ts +11 -20
  200. package/dist/src/pnet/index.d.ts.map +1 -1
  201. package/dist/src/pnet/index.js +66 -0
  202. package/dist/src/pnet/index.js.map +1 -0
  203. package/dist/src/pnet/key-generator.d.ts +3 -7
  204. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  205. package/dist/src/pnet/key-generator.js +25 -0
  206. package/dist/src/pnet/key-generator.js.map +1 -0
  207. package/dist/src/registrar.d.ts +27 -65
  208. package/dist/src/registrar.d.ts.map +1 -1
  209. package/dist/src/registrar.js +159 -0
  210. package/dist/src/registrar.js.map +1 -0
  211. package/dist/src/transport-manager.d.ts +34 -82
  212. package/dist/src/transport-manager.d.ts.map +1 -1
  213. package/dist/src/transport-manager.js +223 -0
  214. package/dist/src/transport-manager.js.map +1 -0
  215. package/dist/src/upgrader.d.ts +49 -129
  216. package/dist/src/upgrader.d.ts.map +1 -1
  217. package/dist/src/upgrader.js +402 -0
  218. package/dist/src/upgrader.js.map +1 -0
  219. package/dist/src/version.d.ts +3 -0
  220. package/dist/src/version.d.ts.map +1 -0
  221. package/dist/src/version.js +3 -0
  222. package/dist/src/version.js.map +1 -0
  223. package/package.json +145 -197
  224. package/src/address-manager/index.ts +129 -0
  225. package/src/circuit/README.md +16 -11
  226. package/src/circuit/auto-relay.ts +284 -0
  227. package/src/circuit/circuit/hop.ts +211 -0
  228. package/src/circuit/circuit/stop.ts +78 -0
  229. package/src/circuit/circuit/stream-handler.ts +87 -0
  230. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  231. package/src/circuit/constants.ts +31 -0
  232. package/src/circuit/index.ts +120 -0
  233. package/src/circuit/{listener.js → listener.ts} +21 -27
  234. package/src/circuit/multicodec.ts +2 -0
  235. package/src/circuit/{protocol → pb}/index.d.ts +0 -0
  236. package/src/circuit/pb/index.js +528 -0
  237. package/src/circuit/{protocol → pb}/index.proto +0 -0
  238. package/src/circuit/transport.ts +216 -0
  239. package/src/circuit/utils.ts +12 -0
  240. package/src/config.ts +101 -0
  241. package/src/connection-manager/auto-dialler.ts +154 -0
  242. package/src/connection-manager/index.ts +422 -0
  243. package/src/connection-manager/latency-monitor.ts +319 -0
  244. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  245. package/src/constants.ts +31 -0
  246. package/src/content-routing/index.ts +143 -0
  247. package/src/content-routing/utils.ts +54 -0
  248. package/src/dht/dht-content-routing.ts +43 -0
  249. package/src/dht/dht-peer-routing.ts +35 -0
  250. package/src/dialer/auto-dialer.ts +40 -0
  251. package/src/dialer/{dial-request.js → dial-request.ts} +60 -51
  252. package/src/dialer/index.ts +374 -0
  253. package/src/errors.ts +71 -0
  254. package/src/fetch/README.md +1 -1
  255. package/src/fetch/constants.ts +3 -0
  256. package/src/fetch/{index.js → index.ts} +79 -70
  257. package/src/fetch/{proto.d.ts → pb/proto.d.ts} +0 -0
  258. package/src/fetch/pb/proto.js +331 -0
  259. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  260. package/src/get-peer.ts +57 -0
  261. package/src/identify/consts.ts +13 -0
  262. package/src/identify/index.ts +445 -0
  263. package/{dist/src/identify → src/identify/pb}/message.d.ts +20 -5
  264. package/src/identify/pb/message.js +369 -0
  265. package/src/identify/{message.proto → pb/message.proto} +0 -0
  266. package/src/index.ts +234 -0
  267. package/src/insecure/index.ts +97 -0
  268. package/src/insecure/{proto.d.ts → pb/proto.d.ts} +7 -1
  269. package/src/insecure/pb/proto.js +388 -0
  270. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  271. package/src/keychain/{cms.js → cms.ts} +62 -58
  272. package/src/keychain/index.ts +588 -0
  273. package/src/keychain/{util.js → util.ts} +7 -17
  274. package/src/libp2p.ts +501 -0
  275. package/src/metrics/index.ts +310 -0
  276. package/src/metrics/moving-average.ts +53 -0
  277. package/src/metrics/stats.ts +243 -0
  278. package/src/nat-manager.ts +194 -0
  279. package/src/peer-record-updater.ts +55 -0
  280. package/src/peer-routing.ts +185 -0
  281. package/src/ping/README.md +1 -1
  282. package/src/ping/constants.ts +5 -0
  283. package/src/ping/index.ts +83 -0
  284. package/src/pnet/README.md +2 -2
  285. package/src/pnet/crypto.ts +67 -0
  286. package/src/pnet/errors.ts +5 -0
  287. package/src/pnet/index.ts +95 -0
  288. package/src/pnet/key-generator.ts +28 -0
  289. package/src/registrar.ts +205 -0
  290. package/src/transport-manager.ts +279 -0
  291. package/src/upgrader.ts +499 -0
  292. package/src/version.ts +3 -0
  293. package/dist/index.min.js +0 -55
  294. package/dist/src/insecure/plaintext.d.ts +0 -12
  295. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  296. package/dist/src/metrics/old-peers.d.ts +0 -3
  297. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  298. package/dist/src/metrics/tracked-map.d.ts +0 -8
  299. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  300. package/dist/src/peer-store/address-book.d.ts +0 -67
  301. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  302. package/dist/src/peer-store/index.d.ts +0 -58
  303. package/dist/src/peer-store/index.d.ts.map +0 -1
  304. package/dist/src/peer-store/key-book.d.ts +0 -40
  305. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  306. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  307. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  308. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  309. package/dist/src/peer-store/proto-book.d.ts +0 -43
  310. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  311. package/dist/src/peer-store/store.d.ts +0 -73
  312. package/dist/src/peer-store/store.d.ts.map +0 -1
  313. package/dist/src/peer-store/types.d.ts +0 -202
  314. package/dist/src/peer-store/types.d.ts.map +0 -1
  315. package/dist/src/ping/util.d.ts +0 -5
  316. package/dist/src/ping/util.d.ts.map +0 -1
  317. package/dist/src/pubsub-adapter.d.ts +0 -22
  318. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  319. package/dist/src/record/envelope/envelope.d.ts +0 -77
  320. package/dist/src/record/envelope/index.d.ts +0 -80
  321. package/dist/src/record/envelope/index.d.ts.map +0 -1
  322. package/dist/src/record/peer-record/consts.d.ts +0 -4
  323. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  324. package/dist/src/record/peer-record/index.d.ts +0 -60
  325. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  326. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  327. package/dist/src/record/utils.d.ts +0 -12
  328. package/dist/src/record/utils.d.ts.map +0 -1
  329. package/dist/src/types.d.ts +0 -90
  330. package/dist/src/types.d.ts.map +0 -1
  331. package/src/address-manager/index.js +0 -96
  332. package/src/circuit/auto-relay.js +0 -302
  333. package/src/circuit/circuit/hop.js +0 -205
  334. package/src/circuit/circuit/stop.js +0 -81
  335. package/src/circuit/circuit/stream-handler.js +0 -94
  336. package/src/circuit/constants.js +0 -12
  337. package/src/circuit/index.js +0 -102
  338. package/src/circuit/multicodec.js +0 -5
  339. package/src/circuit/transport.js +0 -229
  340. package/src/circuit/utils.js +0 -17
  341. package/src/config.js +0 -114
  342. package/src/connection-manager/auto-dialler.js +0 -132
  343. package/src/connection-manager/index.js +0 -363
  344. package/src/connection-manager/latency-monitor.js +0 -264
  345. package/src/constants.js +0 -18
  346. package/src/content-routing/index.js +0 -163
  347. package/src/content-routing/utils.js +0 -89
  348. package/src/dht/dht-content-routing.js +0 -44
  349. package/src/dht/dht-peer-routing.js +0 -51
  350. package/src/dialer/index.js +0 -376
  351. package/src/errors.js +0 -66
  352. package/src/fetch/constants.js +0 -6
  353. package/src/get-peer.js +0 -49
  354. package/src/identify/consts.js +0 -15
  355. package/src/identify/index.js +0 -384
  356. package/src/index.js +0 -811
  357. package/src/insecure/plaintext.js +0 -95
  358. package/src/keychain/index.js +0 -561
  359. package/src/metrics/index.js +0 -290
  360. package/src/metrics/old-peers.js +0 -16
  361. package/src/metrics/stats.js +0 -270
  362. package/src/metrics/tracked-map.js +0 -94
  363. package/src/nat-manager.js +0 -197
  364. package/src/peer-routing.js +0 -176
  365. package/src/peer-store/README.md +0 -145
  366. package/src/peer-store/address-book.js +0 -382
  367. package/src/peer-store/index.js +0 -121
  368. package/src/peer-store/key-book.js +0 -141
  369. package/src/peer-store/metadata-book.js +0 -250
  370. package/src/peer-store/pb/peer.d.ts +0 -222
  371. package/src/peer-store/pb/peer.js +0 -643
  372. package/src/peer-store/pb/peer.proto +0 -31
  373. package/src/peer-store/proto-book.js +0 -237
  374. package/src/peer-store/store.js +0 -263
  375. package/src/peer-store/types.ts +0 -245
  376. package/src/ping/constants.js +0 -8
  377. package/src/ping/index.js +0 -85
  378. package/src/ping/util.js +0 -18
  379. package/src/pnet/crypto.js +0 -84
  380. package/src/pnet/errors.js +0 -7
  381. package/src/pnet/index.js +0 -86
  382. package/src/pnet/key-generator.js +0 -33
  383. package/src/pubsub-adapter.js +0 -61
  384. package/src/record/README.md +0 -130
  385. package/src/record/envelope/envelope.d.ts +0 -77
  386. package/src/record/envelope/envelope.js +0 -243
  387. package/src/record/envelope/envelope.proto +0 -19
  388. package/src/record/envelope/index.js +0 -183
  389. package/src/record/peer-record/consts.js +0 -14
  390. package/src/record/peer-record/index.js +0 -113
  391. package/src/record/peer-record/peer-record.d.ts +0 -133
  392. package/src/record/peer-record/peer-record.js +0 -367
  393. package/src/record/peer-record/peer-record.proto +0 -18
  394. package/src/record/utils.js +0 -25
  395. package/src/registrar.js +0 -127
  396. package/src/transport-manager.js +0 -269
  397. package/src/types.ts +0 -98
  398. 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 ?? FAULT_TOLERANCE.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 !== FAULT_TOLERANCE.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 === FAULT_TOLERANCE.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 FAULT_TOLERANCE;
213
+ (function (FAULT_TOLERANCE) {
214
+ /**
215
+ * should be used for failing in any listen circumstance
216
+ */
217
+ FAULT_TOLERANCE[FAULT_TOLERANCE["FATAL_ALL"] = 0] = "FATAL_ALL";
218
+ /**
219
+ * should be used for not failing when not listening
220
+ */
221
+ FAULT_TOLERANCE[FAULT_TOLERANCE["NO_FATAL"] = 1] = "NO_FATAL";
222
+ })(FAULT_TOLERANCE || (FAULT_TOLERANCE = {}));
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"}