libp2p 0.36.2 → 0.37.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 (430) hide show
  1. package/LICENSE +3 -21
  2. package/README.md +13 -10
  3. package/dist/src/address-manager/index.d.ts +34 -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 +216 -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 +62 -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 +52 -0
  44. package/dist/src/circuit/pb/index.d.ts.map +1 -0
  45. package/dist/src/circuit/pb/index.js +98 -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 +192 -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 +91 -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/dialer/auto-dialer.d.ts +16 -0
  64. package/dist/src/connection-manager/dialer/auto-dialer.d.ts.map +1 -0
  65. package/dist/src/connection-manager/dialer/auto-dialer.js +37 -0
  66. package/dist/src/connection-manager/dialer/auto-dialer.js.map +1 -0
  67. package/dist/src/connection-manager/dialer/dial-request.d.ts +27 -0
  68. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +1 -0
  69. package/dist/src/connection-manager/dialer/dial-request.js +83 -0
  70. package/dist/src/connection-manager/dialer/dial-request.js.map +1 -0
  71. package/dist/src/connection-manager/dialer/index.d.ts +104 -0
  72. package/dist/src/connection-manager/dialer/index.d.ts.map +1 -0
  73. package/dist/src/connection-manager/dialer/index.js +267 -0
  74. package/dist/src/connection-manager/dialer/index.js.map +1 -0
  75. package/dist/src/connection-manager/index.d.ts +102 -136
  76. package/dist/src/connection-manager/index.d.ts.map +1 -1
  77. package/dist/src/connection-manager/index.js +333 -0
  78. package/dist/src/connection-manager/index.js.map +1 -0
  79. package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
  80. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  81. package/dist/src/connection-manager/latency-monitor.js +220 -0
  82. package/dist/src/connection-manager/latency-monitor.js.map +1 -0
  83. package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
  84. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  85. package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
  86. package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
  87. package/dist/src/constants.d.ts +22 -10
  88. package/dist/src/constants.d.ts.map +1 -1
  89. package/dist/src/constants.js +27 -0
  90. package/dist/src/constants.js.map +1 -0
  91. package/dist/src/content-routing/index.d.ts +27 -81
  92. package/dist/src/content-routing/index.d.ts.map +1 -1
  93. package/dist/src/content-routing/index.js +99 -0
  94. package/dist/src/content-routing/index.js.map +1 -0
  95. package/dist/src/content-routing/utils.d.ts +6 -49
  96. package/dist/src/content-routing/utils.d.ts.map +1 -1
  97. package/dist/src/content-routing/utils.js +42 -0
  98. package/dist/src/content-routing/utils.js.map +1 -0
  99. package/dist/src/dht/dht-content-routing.d.ts +10 -24
  100. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  101. package/dist/src/dht/dht-content-routing.js +32 -0
  102. package/dist/src/dht/dht-content-routing.js.map +1 -0
  103. package/dist/src/dht/dht-peer-routing.d.ts +9 -24
  104. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  105. package/dist/src/dht/dht-peer-routing.js +26 -0
  106. package/dist/src/dht/dht-peer-routing.js.map +1 -0
  107. package/dist/src/dht/dummy-dht.d.ts +20 -0
  108. package/dist/src/dht/dummy-dht.d.ts.map +1 -0
  109. package/dist/src/dht/dummy-dht.js +46 -0
  110. package/dist/src/dht/dummy-dht.js.map +1 -0
  111. package/dist/src/errors.d.ts +70 -63
  112. package/dist/src/errors.d.ts.map +1 -1
  113. package/dist/src/errors.js +75 -0
  114. package/dist/src/errors.js.map +1 -0
  115. package/dist/src/fetch/constants.d.ts +1 -1
  116. package/dist/src/fetch/constants.d.ts.map +1 -1
  117. package/dist/src/fetch/constants.js +3 -0
  118. package/dist/src/fetch/constants.js.map +1 -0
  119. package/dist/src/fetch/index.d.ts +30 -49
  120. package/dist/src/fetch/index.d.ts.map +1 -1
  121. package/dist/src/fetch/index.js +129 -0
  122. package/dist/src/fetch/index.js.map +1 -0
  123. package/dist/src/fetch/pb/proto.d.ts +27 -0
  124. package/dist/src/fetch/pb/proto.d.ts.map +1 -0
  125. package/dist/src/fetch/pb/proto.js +50 -0
  126. package/dist/src/fetch/pb/proto.js.map +1 -0
  127. package/dist/src/get-peer.d.ts +4 -11
  128. package/dist/src/get-peer.d.ts.map +1 -1
  129. package/dist/src/get-peer.js +43 -0
  130. package/dist/src/get-peer.js.map +1 -0
  131. package/dist/src/identify/consts.d.ts +9 -9
  132. package/dist/src/identify/consts.d.ts.map +1 -1
  133. package/dist/src/identify/consts.js +11 -0
  134. package/dist/src/identify/consts.js.map +1 -0
  135. package/dist/src/identify/index.d.ts +42 -96
  136. package/dist/src/identify/index.d.ts.map +1 -1
  137. package/dist/src/identify/index.js +322 -0
  138. package/dist/src/identify/index.js.map +1 -0
  139. package/dist/src/identify/pb/message.d.ts +16 -0
  140. package/dist/src/identify/pb/message.d.ts.map +1 -0
  141. package/dist/src/identify/pb/message.js +24 -0
  142. package/dist/src/identify/pb/message.js.map +1 -0
  143. package/dist/src/index.d.ts +150 -496
  144. package/dist/src/index.d.ts.map +1 -1
  145. package/dist/src/index.js +9 -0
  146. package/dist/src/index.js.map +1 -0
  147. package/dist/src/insecure/index.d.ts +9 -0
  148. package/dist/src/insecure/index.d.ts.map +1 -0
  149. package/dist/src/insecure/index.js +81 -0
  150. package/dist/src/insecure/index.js.map +1 -0
  151. package/dist/src/insecure/pb/proto.d.ts +29 -0
  152. package/dist/src/insecure/pb/proto.d.ts.map +1 -0
  153. package/dist/src/insecure/pb/proto.js +53 -0
  154. package/dist/src/insecure/pb/proto.js.map +1 -0
  155. package/dist/src/keychain/cms.d.ts +6 -14
  156. package/dist/src/keychain/cms.d.ts.map +1 -1
  157. package/dist/src/keychain/cms.js +129 -0
  158. package/dist/src/keychain/cms.js.map +1 -0
  159. package/dist/src/keychain/index.d.ts +60 -81
  160. package/dist/src/keychain/index.d.ts.map +1 -1
  161. package/dist/src/keychain/index.js +492 -0
  162. package/dist/src/keychain/index.js.map +1 -0
  163. package/dist/src/keychain/util.d.ts +3 -6
  164. package/dist/src/keychain/util.d.ts.map +1 -1
  165. package/dist/src/keychain/util.js +79 -0
  166. package/dist/src/keychain/util.js.map +1 -0
  167. package/dist/src/libp2p.d.ts +80 -0
  168. package/dist/src/libp2p.d.ts.map +1 -0
  169. package/dist/src/libp2p.js +397 -0
  170. package/dist/src/libp2p.js.map +1 -0
  171. package/dist/src/metrics/index.d.ts +47 -104
  172. package/dist/src/metrics/index.d.ts.map +1 -1
  173. package/dist/src/metrics/index.js +231 -0
  174. package/dist/src/metrics/index.js.map +1 -0
  175. package/dist/src/metrics/moving-average.d.ts +14 -0
  176. package/dist/src/metrics/moving-average.d.ts.map +1 -0
  177. package/dist/src/metrics/moving-average.js +40 -0
  178. package/dist/src/metrics/moving-average.js.map +1 -0
  179. package/dist/src/metrics/stats.d.ts +41 -93
  180. package/dist/src/metrics/stats.d.ts.map +1 -1
  181. package/dist/src/metrics/stats.js +183 -0
  182. package/dist/src/metrics/stats.js.map +1 -0
  183. package/dist/src/nat-manager.d.ts +42 -99
  184. package/dist/src/nat-manager.d.ts.map +1 -1
  185. package/dist/src/nat-manager.js +114 -0
  186. package/dist/src/nat-manager.js.map +1 -0
  187. package/dist/src/peer-record-updater.d.ts +15 -0
  188. package/dist/src/peer-record-updater.d.ts.map +1 -0
  189. package/dist/src/peer-record-updater.js +44 -0
  190. package/dist/src/peer-record-updater.js.map +1 -0
  191. package/dist/src/peer-routing.d.ts +40 -84
  192. package/dist/src/peer-routing.d.ts.map +1 -1
  193. package/dist/src/peer-routing.js +108 -0
  194. package/dist/src/peer-routing.js.map +1 -0
  195. package/dist/src/ping/constants.d.ts +4 -4
  196. package/dist/src/ping/constants.d.ts.map +1 -1
  197. package/dist/src/ping/constants.js +5 -0
  198. package/dist/src/ping/constants.js.map +1 -0
  199. package/dist/src/ping/index.d.ts +17 -31
  200. package/dist/src/ping/index.d.ts.map +1 -1
  201. package/dist/src/ping/index.js +57 -0
  202. package/dist/src/ping/index.js.map +1 -0
  203. package/dist/src/pnet/crypto.d.ts +15 -5
  204. package/dist/src/pnet/crypto.d.ts.map +1 -1
  205. package/dist/src/pnet/crypto.js +60 -0
  206. package/dist/src/pnet/crypto.js.map +1 -0
  207. package/dist/src/pnet/errors.d.ts +5 -5
  208. package/dist/src/pnet/errors.d.ts.map +1 -1
  209. package/dist/src/pnet/errors.js +6 -0
  210. package/dist/src/pnet/errors.js.map +1 -0
  211. package/dist/src/pnet/index.d.ts +12 -20
  212. package/dist/src/pnet/index.d.ts.map +1 -1
  213. package/dist/src/pnet/index.js +67 -0
  214. package/dist/src/pnet/index.js.map +1 -0
  215. package/dist/src/pnet/key-generator.d.ts +3 -7
  216. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  217. package/dist/src/pnet/key-generator.js +25 -0
  218. package/dist/src/pnet/key-generator.js.map +1 -0
  219. package/dist/src/pubsub/dummy-pubsub.d.ts +17 -0
  220. package/dist/src/pubsub/dummy-pubsub.d.ts.map +1 -0
  221. package/dist/src/pubsub/dummy-pubsub.js +37 -0
  222. package/dist/src/pubsub/dummy-pubsub.js.map +1 -0
  223. package/dist/src/registrar.d.ts +26 -65
  224. package/dist/src/registrar.d.ts.map +1 -1
  225. package/dist/src/registrar.js +144 -0
  226. package/dist/src/registrar.js.map +1 -0
  227. package/dist/src/transport-manager.d.ts +36 -82
  228. package/dist/src/transport-manager.d.ts.map +1 -1
  229. package/dist/src/transport-manager.js +223 -0
  230. package/dist/src/transport-manager.js.map +1 -0
  231. package/dist/src/upgrader.d.ts +49 -129
  232. package/dist/src/upgrader.d.ts.map +1 -1
  233. package/dist/src/upgrader.js +402 -0
  234. package/dist/src/upgrader.js.map +1 -0
  235. package/dist/src/version.d.ts +3 -0
  236. package/dist/src/version.d.ts.map +1 -0
  237. package/dist/src/version.js +3 -0
  238. package/dist/src/version.js.map +1 -0
  239. package/package.json +144 -201
  240. package/src/address-manager/index.ts +130 -0
  241. package/src/circuit/README.md +16 -11
  242. package/src/circuit/auto-relay.ts +286 -0
  243. package/src/circuit/circuit/hop.ts +211 -0
  244. package/src/circuit/circuit/stop.ts +78 -0
  245. package/src/circuit/circuit/stream-handler.ts +86 -0
  246. package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
  247. package/src/circuit/constants.ts +31 -0
  248. package/src/circuit/index.ts +120 -0
  249. package/src/circuit/listener.ts +82 -0
  250. package/src/circuit/multicodec.ts +2 -0
  251. package/src/circuit/{protocol → pb}/index.proto +1 -1
  252. package/src/circuit/pb/index.ts +117 -0
  253. package/src/circuit/transport.ts +219 -0
  254. package/src/circuit/utils.ts +12 -0
  255. package/src/config.ts +99 -0
  256. package/src/connection-manager/auto-dialler.ts +154 -0
  257. package/src/connection-manager/dialer/auto-dialer.ts +59 -0
  258. package/src/{dialer/dial-request.js → connection-manager/dialer/dial-request.ts} +60 -51
  259. package/src/connection-manager/dialer/index.ts +382 -0
  260. package/src/connection-manager/index.ts +508 -0
  261. package/src/connection-manager/latency-monitor.ts +319 -0
  262. package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
  263. package/src/constants.ts +31 -0
  264. package/src/content-routing/index.ts +144 -0
  265. package/src/content-routing/utils.ts +54 -0
  266. package/src/dht/dht-content-routing.ts +43 -0
  267. package/src/dht/dht-peer-routing.ts +35 -0
  268. package/src/dht/dummy-dht.ts +60 -0
  269. package/src/errors.ts +73 -0
  270. package/src/fetch/README.md +1 -1
  271. package/src/fetch/constants.ts +3 -0
  272. package/src/fetch/index.ts +167 -0
  273. package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
  274. package/src/fetch/pb/proto.ts +65 -0
  275. package/src/get-peer.ts +57 -0
  276. package/src/identify/consts.ts +13 -0
  277. package/src/identify/index.ts +445 -0
  278. package/src/identify/{message.proto → pb/message.proto} +0 -0
  279. package/src/identify/pb/message.ts +37 -0
  280. package/src/index.ts +220 -0
  281. package/src/insecure/index.ts +101 -0
  282. package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
  283. package/src/insecure/pb/proto.ts +68 -0
  284. package/src/keychain/{cms.js → cms.ts} +62 -58
  285. package/src/keychain/index.ts +587 -0
  286. package/src/keychain/{util.js → util.ts} +7 -17
  287. package/src/libp2p.ts +538 -0
  288. package/src/metrics/index.ts +310 -0
  289. package/src/metrics/moving-average.ts +53 -0
  290. package/src/metrics/stats.ts +238 -0
  291. package/src/nat-manager.ts +194 -0
  292. package/src/peer-record-updater.ts +55 -0
  293. package/src/peer-routing.ts +186 -0
  294. package/src/ping/README.md +1 -1
  295. package/src/ping/constants.ts +5 -0
  296. package/src/ping/index.ts +84 -0
  297. package/src/pnet/README.md +2 -2
  298. package/src/pnet/crypto.ts +67 -0
  299. package/src/pnet/errors.ts +5 -0
  300. package/src/pnet/index.ts +97 -0
  301. package/src/pnet/key-generator.ts +28 -0
  302. package/src/pubsub/dummy-pubsub.ts +51 -0
  303. package/src/registrar.ts +189 -0
  304. package/src/transport-manager.ts +281 -0
  305. package/src/upgrader.ts +499 -0
  306. package/src/version.ts +3 -0
  307. package/dist/index.min.js +0 -55
  308. package/dist/src/circuit/protocol/index.d.ts +0 -173
  309. package/dist/src/dialer/dial-request.d.ts +0 -55
  310. package/dist/src/dialer/dial-request.d.ts.map +0 -1
  311. package/dist/src/dialer/index.d.ts +0 -182
  312. package/dist/src/dialer/index.d.ts.map +0 -1
  313. package/dist/src/fetch/proto.d.ts +0 -134
  314. package/dist/src/identify/message.d.ts +0 -95
  315. package/dist/src/insecure/plaintext.d.ts +0 -12
  316. package/dist/src/insecure/plaintext.d.ts.map +0 -1
  317. package/dist/src/insecure/proto.d.ts +0 -128
  318. package/dist/src/metrics/old-peers.d.ts +0 -3
  319. package/dist/src/metrics/old-peers.d.ts.map +0 -1
  320. package/dist/src/metrics/tracked-map.d.ts +0 -8
  321. package/dist/src/metrics/tracked-map.d.ts.map +0 -1
  322. package/dist/src/peer-store/address-book.d.ts +0 -67
  323. package/dist/src/peer-store/address-book.d.ts.map +0 -1
  324. package/dist/src/peer-store/index.d.ts +0 -58
  325. package/dist/src/peer-store/index.d.ts.map +0 -1
  326. package/dist/src/peer-store/key-book.d.ts +0 -40
  327. package/dist/src/peer-store/key-book.d.ts.map +0 -1
  328. package/dist/src/peer-store/metadata-book.d.ts +0 -58
  329. package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
  330. package/dist/src/peer-store/pb/peer.d.ts +0 -222
  331. package/dist/src/peer-store/proto-book.d.ts +0 -43
  332. package/dist/src/peer-store/proto-book.d.ts.map +0 -1
  333. package/dist/src/peer-store/store.d.ts +0 -73
  334. package/dist/src/peer-store/store.d.ts.map +0 -1
  335. package/dist/src/peer-store/types.d.ts +0 -202
  336. package/dist/src/peer-store/types.d.ts.map +0 -1
  337. package/dist/src/ping/util.d.ts +0 -5
  338. package/dist/src/ping/util.d.ts.map +0 -1
  339. package/dist/src/pubsub-adapter.d.ts +0 -22
  340. package/dist/src/pubsub-adapter.d.ts.map +0 -1
  341. package/dist/src/record/envelope/envelope.d.ts +0 -77
  342. package/dist/src/record/envelope/index.d.ts +0 -80
  343. package/dist/src/record/envelope/index.d.ts.map +0 -1
  344. package/dist/src/record/peer-record/consts.d.ts +0 -4
  345. package/dist/src/record/peer-record/consts.d.ts.map +0 -1
  346. package/dist/src/record/peer-record/index.d.ts +0 -60
  347. package/dist/src/record/peer-record/index.d.ts.map +0 -1
  348. package/dist/src/record/peer-record/peer-record.d.ts +0 -133
  349. package/dist/src/record/utils.d.ts +0 -12
  350. package/dist/src/record/utils.d.ts.map +0 -1
  351. package/dist/src/types.d.ts +0 -90
  352. package/dist/src/types.d.ts.map +0 -1
  353. package/src/address-manager/index.js +0 -96
  354. package/src/circuit/auto-relay.js +0 -302
  355. package/src/circuit/circuit/hop.js +0 -205
  356. package/src/circuit/circuit/stop.js +0 -81
  357. package/src/circuit/circuit/stream-handler.js +0 -94
  358. package/src/circuit/constants.js +0 -12
  359. package/src/circuit/index.js +0 -102
  360. package/src/circuit/listener.js +0 -75
  361. package/src/circuit/multicodec.js +0 -5
  362. package/src/circuit/protocol/index.d.ts +0 -173
  363. package/src/circuit/protocol/index.js +0 -530
  364. package/src/circuit/transport.js +0 -229
  365. package/src/circuit/utils.js +0 -17
  366. package/src/config.js +0 -114
  367. package/src/connection-manager/auto-dialler.js +0 -132
  368. package/src/connection-manager/index.js +0 -374
  369. package/src/connection-manager/latency-monitor.js +0 -264
  370. package/src/constants.js +0 -18
  371. package/src/content-routing/index.js +0 -163
  372. package/src/content-routing/utils.js +0 -89
  373. package/src/dht/dht-content-routing.js +0 -44
  374. package/src/dht/dht-peer-routing.js +0 -51
  375. package/src/dialer/index.js +0 -376
  376. package/src/errors.js +0 -66
  377. package/src/fetch/constants.js +0 -6
  378. package/src/fetch/index.js +0 -159
  379. package/src/fetch/proto.d.ts +0 -134
  380. package/src/fetch/proto.js +0 -333
  381. package/src/get-peer.js +0 -49
  382. package/src/identify/consts.js +0 -15
  383. package/src/identify/index.js +0 -384
  384. package/src/identify/message.d.ts +0 -95
  385. package/src/identify/message.js +0 -328
  386. package/src/index.js +0 -813
  387. package/src/insecure/plaintext.js +0 -95
  388. package/src/insecure/proto.d.ts +0 -128
  389. package/src/insecure/proto.js +0 -371
  390. package/src/keychain/index.js +0 -561
  391. package/src/metrics/index.js +0 -290
  392. package/src/metrics/old-peers.js +0 -16
  393. package/src/metrics/stats.js +0 -270
  394. package/src/metrics/tracked-map.js +0 -94
  395. package/src/nat-manager.js +0 -197
  396. package/src/peer-routing.js +0 -176
  397. package/src/peer-store/README.md +0 -145
  398. package/src/peer-store/address-book.js +0 -382
  399. package/src/peer-store/index.js +0 -121
  400. package/src/peer-store/key-book.js +0 -141
  401. package/src/peer-store/metadata-book.js +0 -250
  402. package/src/peer-store/pb/peer.d.ts +0 -222
  403. package/src/peer-store/pb/peer.js +0 -643
  404. package/src/peer-store/pb/peer.proto +0 -31
  405. package/src/peer-store/proto-book.js +0 -237
  406. package/src/peer-store/store.js +0 -263
  407. package/src/peer-store/types.ts +0 -245
  408. package/src/ping/constants.js +0 -8
  409. package/src/ping/index.js +0 -84
  410. package/src/ping/util.js +0 -18
  411. package/src/pnet/crypto.js +0 -84
  412. package/src/pnet/errors.js +0 -7
  413. package/src/pnet/index.js +0 -86
  414. package/src/pnet/key-generator.js +0 -33
  415. package/src/pubsub-adapter.js +0 -61
  416. package/src/record/README.md +0 -130
  417. package/src/record/envelope/envelope.d.ts +0 -77
  418. package/src/record/envelope/envelope.js +0 -243
  419. package/src/record/envelope/envelope.proto +0 -19
  420. package/src/record/envelope/index.js +0 -183
  421. package/src/record/peer-record/consts.js +0 -14
  422. package/src/record/peer-record/index.js +0 -113
  423. package/src/record/peer-record/peer-record.d.ts +0 -133
  424. package/src/record/peer-record/peer-record.js +0 -367
  425. package/src/record/peer-record/peer-record.proto +0 -18
  426. package/src/record/utils.js +0 -25
  427. package/src/registrar.js +0 -127
  428. package/src/transport-manager.js +0 -269
  429. package/src/types.ts +0 -98
  430. package/src/upgrader.js +0 -492
@@ -1,384 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const log = Object.assign(debug('libp2p:identify'), {
5
- error: debug('libp2p:identify:err')
6
- })
7
- const errCode = require('err-code')
8
- const lp = require('it-length-prefixed')
9
- const { pipe } = require('it-pipe')
10
- const { collect, take, consume } = require('streaming-iterables')
11
- const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
12
-
13
- const PeerId = require('peer-id')
14
- const { Multiaddr } = require('multiaddr')
15
- // @ts-ignore it-buffer does not have types
16
- const { toBuffer } = require('it-buffer')
17
-
18
- const Message = require('./message')
19
-
20
- const Envelope = require('../record/envelope')
21
- const PeerRecord = require('../record/peer-record')
22
-
23
- const {
24
- MULTICODEC_IDENTIFY,
25
- MULTICODEC_IDENTIFY_PUSH,
26
- IDENTIFY_PROTOCOL_VERSION,
27
- MULTICODEC_IDENTIFY_PROTOCOL_NAME,
28
- MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME,
29
- MULTICODEC_IDENTIFY_PROTOCOL_VERSION,
30
- MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION
31
- } = require('./consts')
32
-
33
- const { codes } = require('../errors')
34
-
35
- /**
36
- * @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
37
- * @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
38
- */
39
-
40
- /**
41
- * @typedef {Object} HostProperties
42
- * @property {string} agentVersion
43
- */
44
-
45
- class IdentifyService {
46
- /**
47
- * @param {import('../')} libp2p
48
- */
49
- static getProtocolStr (libp2p) {
50
- return {
51
- identifyProtocolStr: `/${libp2p._config.protocolPrefix}/${MULTICODEC_IDENTIFY_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PROTOCOL_VERSION}`,
52
- identifyPushProtocolStr: `/${libp2p._config.protocolPrefix}/${MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME}/${MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION}`
53
- }
54
- }
55
-
56
- /**
57
- * @class
58
- * @param {Object} options
59
- * @param {import('../')} options.libp2p
60
- */
61
- constructor ({ libp2p }) {
62
- this._libp2p = libp2p
63
- this.peerStore = libp2p.peerStore
64
- this.addressManager = libp2p.addressManager
65
- this.connectionManager = libp2p.connectionManager
66
- this.peerId = libp2p.peerId
67
-
68
- this.handleMessage = this.handleMessage.bind(this)
69
-
70
- const protocolStr = IdentifyService.getProtocolStr(libp2p)
71
- this.identifyProtocolStr = protocolStr.identifyProtocolStr
72
- this.identifyPushProtocolStr = protocolStr.identifyPushProtocolStr
73
-
74
- // Store self host metadata
75
- this._host = {
76
- protocolVersion: `${libp2p._config.protocolPrefix}/${IDENTIFY_PROTOCOL_VERSION}`,
77
- ...libp2p._options.host
78
- }
79
-
80
- // When a new connection happens, trigger identify
81
- this.connectionManager.on('peer:connect', (connection) => {
82
- this.identify(connection).catch(log.error)
83
- })
84
-
85
- // When self multiaddrs change, trigger identify-push
86
- this.peerStore.on('change:multiaddrs', ({ peerId }) => {
87
- if (peerId.toString() === this.peerId.toString()) {
88
- this.pushToPeerStore().catch(err => log.error(err))
89
- }
90
- })
91
-
92
- // When self protocols change, trigger identify-push
93
- this.peerStore.on('change:protocols', ({ peerId }) => {
94
- if (peerId.toString() === this.peerId.toString()) {
95
- this.pushToPeerStore().catch(err => log.error(err))
96
- }
97
- })
98
- }
99
-
100
- async start () {
101
- await this.peerStore.metadataBook.setValue(this.peerId, 'AgentVersion', uint8ArrayFromString(this._host.agentVersion))
102
- await this.peerStore.metadataBook.setValue(this.peerId, 'ProtocolVersion', uint8ArrayFromString(this._host.protocolVersion))
103
- }
104
-
105
- async stop () {
106
-
107
- }
108
-
109
- /**
110
- * Send an Identify Push update to the list of connections
111
- *
112
- * @param {Connection[]} connections
113
- * @returns {Promise<void[]>}
114
- */
115
- async push (connections) {
116
- const signedPeerRecord = await this.peerStore.addressBook.getRawEnvelope(this.peerId)
117
- const listenAddrs = this._libp2p.multiaddrs.map((ma) => ma.bytes)
118
- const protocols = await this.peerStore.protoBook.get(this.peerId)
119
-
120
- const pushes = connections.map(async connection => {
121
- try {
122
- const { stream } = await connection.newStream(this.identifyPushProtocolStr)
123
-
124
- await pipe(
125
- [Message.Identify.encode({
126
- listenAddrs,
127
- signedPeerRecord,
128
- protocols
129
- }).finish()],
130
- lp.encode(),
131
- stream,
132
- consume
133
- )
134
- } catch (/** @type {any} */ err) {
135
- // Just log errors
136
- log.error('could not push identify update to peer', err)
137
- }
138
- })
139
-
140
- return Promise.all(pushes)
141
- }
142
-
143
- /**
144
- * Calls `push` for all peers in the `peerStore` that are connected
145
- */
146
- async pushToPeerStore () {
147
- // Do not try to push if libp2p node is not running
148
- if (!this._libp2p.isStarted()) {
149
- return
150
- }
151
-
152
- const connections = []
153
- let connection
154
- for await (const peer of this.peerStore.getPeers()) {
155
- if (peer.protocols.includes(this.identifyPushProtocolStr) && (connection = this.connectionManager.get(peer.id))) {
156
- connections.push(connection)
157
- }
158
- }
159
-
160
- await this.push(connections)
161
- }
162
-
163
- /**
164
- * Requests the `Identify` message from peer associated with the given `connection`.
165
- * If the identified peer does not match the `PeerId` associated with the connection,
166
- * an error will be thrown.
167
- *
168
- * @async
169
- * @param {Connection} connection
170
- * @returns {Promise<void>}
171
- */
172
- async identify (connection) {
173
- const { stream } = await connection.newStream(this.identifyProtocolStr)
174
- const [data] = await pipe(
175
- [],
176
- stream,
177
- lp.decode(),
178
- take(1),
179
- toBuffer,
180
- collect
181
- )
182
-
183
- if (!data) {
184
- throw errCode(new Error('No data could be retrieved'), codes.ERR_CONNECTION_ENDED)
185
- }
186
-
187
- let message
188
- try {
189
- message = Message.Identify.decode(data)
190
- } catch (/** @type {any} */ err) {
191
- throw errCode(err, codes.ERR_INVALID_MESSAGE)
192
- }
193
-
194
- const {
195
- publicKey,
196
- listenAddrs,
197
- protocols,
198
- observedAddr,
199
- signedPeerRecord
200
- } = message
201
-
202
- const id = await PeerId.createFromPubKey(publicKey)
203
-
204
- if (connection.remotePeer.toB58String() !== id.toB58String()) {
205
- throw errCode(new Error('identified peer does not match the expected peer'), codes.ERR_INVALID_PEER)
206
- }
207
-
208
- // Get the observedAddr if there is one
209
- const cleanObservedAddr = IdentifyService.getCleanMultiaddr(observedAddr)
210
-
211
- try {
212
- const envelope = await Envelope.openAndCertify(signedPeerRecord, PeerRecord.DOMAIN)
213
- if (await this.peerStore.addressBook.consumePeerRecord(envelope)) {
214
- await this.peerStore.protoBook.set(id, protocols)
215
- await this.peerStore.metadataBook.setValue(id, 'AgentVersion', uint8ArrayFromString(message.agentVersion))
216
- await this.peerStore.metadataBook.setValue(id, 'ProtocolVersion', uint8ArrayFromString(message.protocolVersion))
217
- return
218
- }
219
- } catch (/** @type {any} */ err) {
220
- log('received invalid envelope, discard it and fallback to listenAddrs is available', err)
221
- }
222
-
223
- // LEGACY: Update peers data in PeerStore
224
- try {
225
- await this.peerStore.addressBook.set(id, listenAddrs.map((addr) => new Multiaddr(addr)))
226
- } catch (/** @type {any} */ err) {
227
- log.error('received invalid addrs', err)
228
- }
229
-
230
- await this.peerStore.protoBook.set(id, protocols)
231
- await this.peerStore.metadataBook.setValue(id, 'AgentVersion', uint8ArrayFromString(message.agentVersion))
232
- await this.peerStore.metadataBook.setValue(id, 'ProtocolVersion', uint8ArrayFromString(message.protocolVersion))
233
-
234
- // TODO: Add and score our observed addr
235
- log('received observed address of %s', cleanObservedAddr)
236
- // this.addressManager.addObservedAddr(observedAddr)
237
- }
238
-
239
- /**
240
- * A handler to register with Libp2p to process identify messages.
241
- *
242
- * @param {Object} options
243
- * @param {Connection} options.connection
244
- * @param {MuxedStream} options.stream
245
- * @param {string} options.protocol
246
- * @returns {Promise<void>|undefined}
247
- */
248
- handleMessage ({ connection, stream, protocol }) {
249
- switch (protocol) {
250
- case this.identifyProtocolStr:
251
- return this._handleIdentify({ connection, stream })
252
- case this.identifyPushProtocolStr:
253
- return this._handlePush({ connection, stream })
254
- default:
255
- log.error('cannot handle unknown protocol %s', protocol)
256
- }
257
- }
258
-
259
- /**
260
- * Sends the `Identify` response with the Signed Peer Record
261
- * to the requesting peer over the given `connection`
262
- *
263
- * @private
264
- * @param {Object} options
265
- * @param {MuxedStream} options.stream
266
- * @param {Connection} options.connection
267
- * @returns {Promise<void>}
268
- */
269
- async _handleIdentify ({ connection, stream }) {
270
- try {
271
- let publicKey = new Uint8Array(0)
272
- if (this.peerId.pubKey) {
273
- publicKey = this.peerId.pubKey.bytes
274
- }
275
-
276
- const signedPeerRecord = await this.peerStore.addressBook.getRawEnvelope(this.peerId)
277
- const protocols = await this.peerStore.protoBook.get(this.peerId)
278
-
279
- const message = Message.Identify.encode({
280
- protocolVersion: this._host.protocolVersion,
281
- agentVersion: this._host.agentVersion,
282
- publicKey,
283
- listenAddrs: this._libp2p.multiaddrs.map((ma) => ma.bytes),
284
- signedPeerRecord,
285
- observedAddr: connection.remoteAddr.bytes,
286
- protocols
287
- }).finish()
288
-
289
- await pipe(
290
- [message],
291
- lp.encode(),
292
- stream,
293
- consume
294
- )
295
- } catch (/** @type {any} */ err) {
296
- log.error('could not respond to identify request', err)
297
- }
298
- }
299
-
300
- /**
301
- * Reads the Identify Push message from the given `connection`
302
- *
303
- * @private
304
- * @param {object} options
305
- * @param {MuxedStream} options.stream
306
- * @param {Connection} options.connection
307
- * @returns {Promise<void>}
308
- */
309
- async _handlePush ({ connection, stream }) {
310
- let message
311
- try {
312
- const [data] = await pipe(
313
- [],
314
- stream,
315
- lp.decode(),
316
- take(1),
317
- toBuffer,
318
- collect
319
- )
320
- message = Message.Identify.decode(data)
321
- } catch (/** @type {any} */ err) {
322
- return log.error('received invalid message', err)
323
- }
324
-
325
- const id = connection.remotePeer
326
-
327
- try {
328
- const envelope = await Envelope.openAndCertify(message.signedPeerRecord, PeerRecord.DOMAIN)
329
- if (await this.peerStore.addressBook.consumePeerRecord(envelope)) {
330
- await this.peerStore.protoBook.set(id, message.protocols)
331
- return
332
- }
333
- } catch (/** @type {any} */ err) {
334
- log('received invalid envelope, discard it and fallback to listenAddrs is available', err)
335
- }
336
-
337
- // LEGACY: Update peers data in PeerStore
338
- try {
339
- await this.peerStore.addressBook.set(id,
340
- message.listenAddrs.map((addr) => new Multiaddr(addr)))
341
- } catch (/** @type {any} */ err) {
342
- log.error('received invalid addrs', err)
343
- }
344
-
345
- // Update the protocols
346
- try {
347
- await this.peerStore.protoBook.set(id, message.protocols)
348
- } catch (/** @type {any} */ err) {
349
- log.error('received invalid protocols', err)
350
- }
351
- }
352
-
353
- /**
354
- * Takes the `addr` and converts it to a Multiaddr if possible
355
- *
356
- * @param {Uint8Array | string} addr
357
- * @returns {Multiaddr|null}
358
- */
359
- static getCleanMultiaddr (addr) {
360
- if (addr && addr.length > 0) {
361
- try {
362
- return new Multiaddr(addr)
363
- } catch (_) {
364
- return null
365
- }
366
- }
367
- return null
368
- }
369
- }
370
-
371
- /**
372
- * The protocols the IdentifyService supports
373
- *
374
- * @property multicodecs
375
- */
376
- const multicodecs = {
377
- IDENTIFY: MULTICODEC_IDENTIFY,
378
- IDENTIFY_PUSH: MULTICODEC_IDENTIFY_PUSH
379
- }
380
-
381
- IdentifyService.multicodecs = multicodecs
382
- IdentifyService.Messsage = Message
383
-
384
- module.exports = IdentifyService
@@ -1,95 +0,0 @@
1
- import * as $protobuf from "protobufjs";
2
- /** Properties of an Identify. */
3
- export interface IIdentify {
4
-
5
- /** Identify protocolVersion */
6
- protocolVersion?: (string|null);
7
-
8
- /** Identify agentVersion */
9
- agentVersion?: (string|null);
10
-
11
- /** Identify publicKey */
12
- publicKey?: (Uint8Array|null);
13
-
14
- /** Identify listenAddrs */
15
- listenAddrs?: (Uint8Array[]|null);
16
-
17
- /** Identify observedAddr */
18
- observedAddr?: (Uint8Array|null);
19
-
20
- /** Identify protocols */
21
- protocols?: (string[]|null);
22
-
23
- /** Identify signedPeerRecord */
24
- signedPeerRecord?: (Uint8Array|null);
25
- }
26
-
27
- /** Represents an Identify. */
28
- export class Identify implements IIdentify {
29
-
30
- /**
31
- * Constructs a new Identify.
32
- * @param [p] Properties to set
33
- */
34
- constructor(p?: IIdentify);
35
-
36
- /** Identify protocolVersion. */
37
- public protocolVersion: string;
38
-
39
- /** Identify agentVersion. */
40
- public agentVersion: string;
41
-
42
- /** Identify publicKey. */
43
- public publicKey: Uint8Array;
44
-
45
- /** Identify listenAddrs. */
46
- public listenAddrs: Uint8Array[];
47
-
48
- /** Identify observedAddr. */
49
- public observedAddr: Uint8Array;
50
-
51
- /** Identify protocols. */
52
- public protocols: string[];
53
-
54
- /** Identify signedPeerRecord. */
55
- public signedPeerRecord: Uint8Array;
56
-
57
- /**
58
- * Encodes the specified Identify message. Does not implicitly {@link Identify.verify|verify} messages.
59
- * @param m Identify message or plain object to encode
60
- * @param [w] Writer to encode to
61
- * @returns Writer
62
- */
63
- public static encode(m: IIdentify, w?: $protobuf.Writer): $protobuf.Writer;
64
-
65
- /**
66
- * Decodes an Identify message from the specified reader or buffer.
67
- * @param r Reader or buffer to decode from
68
- * @param [l] Message length if known beforehand
69
- * @returns Identify
70
- * @throws {Error} If the payload is not a reader or valid buffer
71
- * @throws {$protobuf.util.ProtocolError} If required fields are missing
72
- */
73
- public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): Identify;
74
-
75
- /**
76
- * Creates an Identify message from a plain object. Also converts values to their respective internal types.
77
- * @param d Plain object
78
- * @returns Identify
79
- */
80
- public static fromObject(d: { [k: string]: any }): Identify;
81
-
82
- /**
83
- * Creates a plain object from an Identify message. Also converts values to other types if specified.
84
- * @param m Identify
85
- * @param [o] Conversion options
86
- * @returns Plain object
87
- */
88
- public static toObject(m: Identify, o?: $protobuf.IConversionOptions): { [k: string]: any };
89
-
90
- /**
91
- * Converts this Identify to JSON.
92
- * @returns JSON object
93
- */
94
- public toJSON(): { [k: string]: any };
95
- }