libp2p 0.36.2 → 0.37.0-b09eb8f

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 (431) 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 +107 -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 +266 -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 +339 -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 +71 -63
  112. package/dist/src/errors.d.ts.map +1 -1
  113. package/dist/src/errors.js +76 -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 +45 -99
  184. package/dist/src/nat-manager.d.ts.map +1 -1
  185. package/dist/src/nat-manager.js +117 -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 +107 -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 +404 -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 +143 -203
  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/connection-manager/dialer/dial-request.ts +137 -0
  259. package/src/connection-manager/dialer/index.ts +381 -0
  260. package/src/connection-manager/index.ts +513 -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 +74 -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 +198 -0
  292. package/src/peer-record-updater.ts +55 -0
  293. package/src/peer-routing.ts +185 -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 +501 -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/dial-request.js +0 -103
  376. package/src/dialer/index.js +0 -376
  377. package/src/errors.js +0 -66
  378. package/src/fetch/constants.js +0 -6
  379. package/src/fetch/index.js +0 -159
  380. package/src/fetch/proto.d.ts +0 -134
  381. package/src/fetch/proto.js +0 -333
  382. package/src/get-peer.js +0 -49
  383. package/src/identify/consts.js +0 -15
  384. package/src/identify/index.js +0 -384
  385. package/src/identify/message.d.ts +0 -95
  386. package/src/identify/message.js +0 -328
  387. package/src/index.js +0 -813
  388. package/src/insecure/plaintext.js +0 -95
  389. package/src/insecure/proto.d.ts +0 -128
  390. package/src/insecure/proto.js +0 -371
  391. package/src/keychain/index.js +0 -561
  392. package/src/metrics/index.js +0 -290
  393. package/src/metrics/old-peers.js +0 -16
  394. package/src/metrics/stats.js +0 -270
  395. package/src/metrics/tracked-map.js +0 -94
  396. package/src/nat-manager.js +0 -197
  397. package/src/peer-routing.js +0 -176
  398. package/src/peer-store/README.md +0 -145
  399. package/src/peer-store/address-book.js +0 -382
  400. package/src/peer-store/index.js +0 -121
  401. package/src/peer-store/key-book.js +0 -141
  402. package/src/peer-store/metadata-book.js +0 -250
  403. package/src/peer-store/pb/peer.d.ts +0 -222
  404. package/src/peer-store/pb/peer.js +0 -643
  405. package/src/peer-store/pb/peer.proto +0 -31
  406. package/src/peer-store/proto-book.js +0 -237
  407. package/src/peer-store/store.js +0 -263
  408. package/src/peer-store/types.ts +0 -245
  409. package/src/ping/constants.js +0 -8
  410. package/src/ping/index.js +0 -84
  411. package/src/ping/util.js +0 -18
  412. package/src/pnet/crypto.js +0 -84
  413. package/src/pnet/errors.js +0 -7
  414. package/src/pnet/index.js +0 -86
  415. package/src/pnet/key-generator.js +0 -33
  416. package/src/pubsub-adapter.js +0 -61
  417. package/src/record/README.md +0 -130
  418. package/src/record/envelope/envelope.d.ts +0 -77
  419. package/src/record/envelope/envelope.js +0 -243
  420. package/src/record/envelope/envelope.proto +0 -19
  421. package/src/record/envelope/index.js +0 -183
  422. package/src/record/peer-record/consts.js +0 -14
  423. package/src/record/peer-record/index.js +0 -113
  424. package/src/record/peer-record/peer-record.d.ts +0 -133
  425. package/src/record/peer-record/peer-record.js +0 -367
  426. package/src/record/peer-record/peer-record.proto +0 -18
  427. package/src/record/utils.js +0 -25
  428. package/src/registrar.js +0 -127
  429. package/src/transport-manager.js +0 -269
  430. package/src/types.ts +0 -98
  431. package/src/upgrader.js +0 -492
@@ -1,382 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const errcode = require('err-code')
5
- const { Multiaddr } = require('multiaddr')
6
- const PeerId = require('peer-id')
7
- const { codes } = require('../errors')
8
- const PeerRecord = require('../record/peer-record')
9
- const Envelope = require('../record/envelope')
10
- const { pipe } = require('it-pipe')
11
- const all = require('it-all')
12
- const filter = require('it-filter')
13
- const map = require('it-map')
14
- const each = require('it-foreach')
15
-
16
- /**
17
- * @typedef {import('./types').PeerStore} PeerStore
18
- * @typedef {import('./types').Address} Address
19
- * @typedef {import('./types').AddressBook} AddressBook
20
- */
21
-
22
- const log = Object.assign(debug('libp2p:peer-store:address-book'), {
23
- error: debug('libp2p:peer-store:address-book:err')
24
- })
25
-
26
- const EVENT_NAME = 'change:multiaddrs'
27
-
28
- /**
29
- * @implements {AddressBook}
30
- */
31
- class PeerStoreAddressBook {
32
- /**
33
- * @param {PeerStore["emit"]} emit
34
- * @param {import('./types').Store} store
35
- * @param {(peerId: PeerId, multiaddr: Multiaddr) => Promise<boolean>} addressFilter
36
- */
37
- constructor (emit, store, addressFilter) {
38
- this._emit = emit
39
- this._store = store
40
- this._addressFilter = addressFilter
41
- }
42
-
43
- /**
44
- * ConsumePeerRecord adds addresses from a signed peer record contained in a record envelope.
45
- * This will return a boolean that indicates if the record was successfully processed and added
46
- * into the AddressBook.
47
- *
48
- * @param {Envelope} envelope
49
- */
50
- async consumePeerRecord (envelope) {
51
- log('consumePeerRecord await write lock')
52
- const release = await this._store.lock.writeLock()
53
- log('consumePeerRecord got write lock')
54
-
55
- let peerId
56
- let updatedPeer
57
-
58
- try {
59
- let peerRecord
60
- try {
61
- peerRecord = PeerRecord.createFromProtobuf(envelope.payload)
62
- } catch (/** @type {any} */ err) {
63
- log.error('invalid peer record received')
64
- return false
65
- }
66
-
67
- peerId = peerRecord.peerId
68
- const multiaddrs = peerRecord.multiaddrs
69
-
70
- // Verify peerId
71
- if (!peerId.equals(envelope.peerId)) {
72
- log('signing key does not match PeerId in the PeerRecord')
73
- return false
74
- }
75
-
76
- // ensure the record has multiaddrs
77
- if (!multiaddrs || !multiaddrs.length) {
78
- return false
79
- }
80
-
81
- if (await this._store.has(peerId)) {
82
- const peer = await this._store.load(peerId)
83
-
84
- if (peer.peerRecordEnvelope) {
85
- const storedEnvelope = await Envelope.createFromProtobuf(peer.peerRecordEnvelope)
86
- const storedRecord = PeerRecord.createFromProtobuf(storedEnvelope.payload)
87
-
88
- // ensure seq is greater than, or equal to, the last received
89
- if (storedRecord.seqNumber >= peerRecord.seqNumber) {
90
- return false
91
- }
92
- }
93
- }
94
-
95
- // Replace unsigned addresses by the new ones from the record
96
- // TODO: Once we have ttls for the addresses, we should merge these in
97
- updatedPeer = await this._store.patchOrCreate(peerId, {
98
- addresses: await filterMultiaddrs(peerId, multiaddrs, this._addressFilter, true),
99
- peerRecordEnvelope: envelope.marshal()
100
- })
101
-
102
- log(`stored provided peer record for ${peerRecord.peerId.toB58String()}`)
103
- } finally {
104
- log('consumePeerRecord release write lock')
105
- release()
106
- }
107
-
108
- this._emit(EVENT_NAME, { peerId, multiaddrs: updatedPeer.addresses.map(({ multiaddr }) => multiaddr) })
109
-
110
- return true
111
- }
112
-
113
- /**
114
- * @param {PeerId} peerId
115
- */
116
- async getRawEnvelope (peerId) {
117
- log('getRawEnvelope await read lock')
118
- const release = await this._store.lock.readLock()
119
- log('getRawEnvelope got read lock')
120
-
121
- try {
122
- const peer = await this._store.load(peerId)
123
-
124
- return peer.peerRecordEnvelope
125
- } catch (/** @type {any} */ err) {
126
- if (err.code !== codes.ERR_NOT_FOUND) {
127
- throw err
128
- }
129
- } finally {
130
- log('getRawEnvelope release read lock')
131
- release()
132
- }
133
- }
134
-
135
- /**
136
- * Get an Envelope containing a PeerRecord for the given peer.
137
- * Returns undefined if no record exists.
138
- *
139
- * @param {PeerId} peerId
140
- */
141
- async getPeerRecord (peerId) {
142
- const raw = await this.getRawEnvelope(peerId)
143
-
144
- if (!raw) {
145
- return undefined
146
- }
147
-
148
- return Envelope.createFromProtobuf(raw)
149
- }
150
-
151
- /**
152
- * @param {PeerId} peerId
153
- */
154
- async get (peerId) {
155
- if (!PeerId.isPeerId(peerId)) {
156
- log.error('peerId must be an instance of peer-id to store data')
157
- throw errcode(new Error('peerId must be an instance of peer-id'), codes.ERR_INVALID_PARAMETERS)
158
- }
159
-
160
- log('get wait for read lock')
161
- const release = await this._store.lock.readLock()
162
- log('get got read lock')
163
-
164
- try {
165
- const peer = await this._store.load(peerId)
166
-
167
- return peer.addresses
168
- } catch (/** @type {any} */ err) {
169
- if (err.code !== codes.ERR_NOT_FOUND) {
170
- throw err
171
- }
172
- } finally {
173
- log('get release read lock')
174
- release()
175
- }
176
-
177
- return []
178
- }
179
-
180
- /**
181
- * @param {PeerId} peerId
182
- * @param {Multiaddr[]} multiaddrs
183
- */
184
- async set (peerId, multiaddrs) {
185
- if (!PeerId.isPeerId(peerId)) {
186
- log.error('peerId must be an instance of peer-id to store data')
187
- throw errcode(new Error('peerId must be an instance of peer-id'), codes.ERR_INVALID_PARAMETERS)
188
- }
189
-
190
- if (!Array.isArray(multiaddrs)) {
191
- log.error('multiaddrs must be an array of Multiaddrs')
192
- throw errcode(new Error('multiaddrs must be an array of Multiaddrs'), codes.ERR_INVALID_PARAMETERS)
193
- }
194
-
195
- log('set await write lock')
196
- const release = await this._store.lock.writeLock()
197
- log('set got write lock')
198
-
199
- let hasPeer = false
200
- let updatedPeer
201
-
202
- try {
203
- const addresses = await filterMultiaddrs(peerId, multiaddrs, this._addressFilter)
204
-
205
- // No valid addresses found
206
- if (!addresses.length) {
207
- return
208
- }
209
-
210
- try {
211
- const peer = await this._store.load(peerId)
212
- hasPeer = true
213
-
214
- if (new Set([
215
- ...addresses.map(({ multiaddr }) => multiaddr.toString()),
216
- ...peer.addresses.map(({ multiaddr }) => multiaddr.toString())
217
- ]).size === peer.addresses.length && addresses.length === peer.addresses.length) {
218
- // not changing anything, no need to update
219
- return
220
- }
221
- } catch (/** @type {any} */ err) {
222
- if (err.code !== codes.ERR_NOT_FOUND) {
223
- throw err
224
- }
225
- }
226
-
227
- updatedPeer = await this._store.patchOrCreate(peerId, { addresses })
228
-
229
- log(`set multiaddrs for ${peerId.toB58String()}`)
230
- } finally {
231
- log('set release write lock')
232
- release()
233
- }
234
-
235
- this._emit(EVENT_NAME, { peerId, multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr) })
236
-
237
- // Notify the existence of a new peer
238
- if (!hasPeer) {
239
- this._emit('peer', peerId)
240
- }
241
- }
242
-
243
- /**
244
- * @param {PeerId} peerId
245
- * @param {Multiaddr[]} multiaddrs
246
- */
247
- async add (peerId, multiaddrs) {
248
- if (!PeerId.isPeerId(peerId)) {
249
- log.error('peerId must be an instance of peer-id to store data')
250
- throw errcode(new Error('peerId must be an instance of peer-id'), codes.ERR_INVALID_PARAMETERS)
251
- }
252
-
253
- if (!Array.isArray(multiaddrs)) {
254
- log.error('multiaddrs must be an array of Multiaddrs')
255
- throw errcode(new Error('multiaddrs must be an array of Multiaddrs'), codes.ERR_INVALID_PARAMETERS)
256
- }
257
-
258
- log('add await write lock')
259
- const release = await this._store.lock.writeLock()
260
- log('add got write lock')
261
-
262
- let hasPeer
263
- let updatedPeer
264
-
265
- try {
266
- const addresses = await filterMultiaddrs(peerId, multiaddrs, this._addressFilter)
267
-
268
- // No valid addresses found
269
- if (!addresses.length) {
270
- return
271
- }
272
-
273
- try {
274
- const peer = await this._store.load(peerId)
275
- hasPeer = true
276
-
277
- if (new Set([
278
- ...addresses.map(({ multiaddr }) => multiaddr.toString()),
279
- ...peer.addresses.map(({ multiaddr }) => multiaddr.toString())
280
- ]).size === peer.addresses.length) {
281
- return
282
- }
283
- } catch (/** @type {any} */ err) {
284
- if (err.code !== codes.ERR_NOT_FOUND) {
285
- throw err
286
- }
287
- }
288
-
289
- updatedPeer = await this._store.mergeOrCreate(peerId, { addresses })
290
-
291
- log(`added multiaddrs for ${peerId.toB58String()}`)
292
- } finally {
293
- log('set release write lock')
294
- release()
295
- }
296
-
297
- this._emit(EVENT_NAME, { peerId, multiaddrs: updatedPeer.addresses.map(addr => addr.multiaddr) })
298
-
299
- // Notify the existence of a new peer
300
- if (!hasPeer) {
301
- this._emit('peer', peerId)
302
- }
303
- }
304
-
305
- /**
306
- * @param {PeerId} peerId
307
- */
308
- async delete (peerId) {
309
- if (!PeerId.isPeerId(peerId)) {
310
- log.error('peerId must be an instance of peer-id to store data')
311
- throw errcode(new Error('peerId must be an instance of peer-id'), codes.ERR_INVALID_PARAMETERS)
312
- }
313
-
314
- log('delete await write lock')
315
- const release = await this._store.lock.writeLock()
316
- log('delete got write lock')
317
-
318
- let has
319
-
320
- try {
321
- has = await this._store.has(peerId)
322
-
323
- await this._store.patchOrCreate(peerId, {
324
- addresses: []
325
- })
326
- } finally {
327
- log('delete release write lock')
328
- release()
329
- }
330
-
331
- if (has) {
332
- this._emit(EVENT_NAME, { peerId, multiaddrs: [] })
333
- }
334
- }
335
-
336
- /**
337
- * @param {PeerId} peerId
338
- * @param {(addresses: Address[]) => Address[]} [addressSorter]
339
- */
340
- async getMultiaddrsForPeer (peerId, addressSorter = (ms) => ms) {
341
- const addresses = await this.get(peerId)
342
-
343
- return addressSorter(
344
- addresses
345
- ).map((address) => {
346
- const multiaddr = address.multiaddr
347
-
348
- const idString = multiaddr.getPeerId()
349
- if (idString && idString === peerId.toB58String()) return multiaddr
350
-
351
- return multiaddr.encapsulate(`/p2p/${peerId.toB58String()}`)
352
- })
353
- }
354
- }
355
-
356
- /**
357
- * @param {PeerId} peerId
358
- * @param {Multiaddr[]} multiaddrs
359
- * @param {(peerId: PeerId, multiaddr: Multiaddr) => Promise<boolean>} addressFilter
360
- * @param {boolean} isCertified
361
- */
362
- function filterMultiaddrs (peerId, multiaddrs, addressFilter, isCertified = false) {
363
- return pipe(
364
- multiaddrs,
365
- (source) => each(source, (multiaddr) => {
366
- if (!Multiaddr.isMultiaddr(multiaddr)) {
367
- log.error('multiaddr must be an instance of Multiaddr')
368
- throw errcode(new Error('multiaddr must be an instance of Multiaddr'), codes.ERR_INVALID_PARAMETERS)
369
- }
370
- }),
371
- (source) => filter(source, (multiaddr) => addressFilter(peerId, multiaddr)),
372
- (source) => map(source, (multiaddr) => {
373
- return {
374
- multiaddr: new Multiaddr(multiaddr.toString()),
375
- isCertified
376
- }
377
- }),
378
- (source) => all(source)
379
- )
380
- }
381
-
382
- module.exports = PeerStoreAddressBook
@@ -1,121 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const { EventEmitter } = require('events')
5
- const AddressBook = require('./address-book')
6
- const KeyBook = require('./key-book')
7
- const MetadataBook = require('./metadata-book')
8
- const ProtoBook = require('./proto-book')
9
- const Store = require('./store')
10
-
11
- /**
12
- * @typedef {import('./types').PeerStore} PeerStore
13
- * @typedef {import('./types').Peer} Peer
14
- * @typedef {import('peer-id')} PeerId
15
- * @typedef {import('multiaddr').Multiaddr} Multiaddr
16
- */
17
-
18
- const log = Object.assign(debug('libp2p:peer-store'), {
19
- error: debug('libp2p:peer-store:err')
20
- })
21
-
22
- /**
23
- * An implementation of PeerStore that stores data in a Datastore
24
- *
25
- * @implements {PeerStore}
26
- */
27
- class DefaultPeerStore extends EventEmitter {
28
- /**
29
- * @param {object} properties
30
- * @param {PeerId} properties.peerId
31
- * @param {import('interface-datastore').Datastore} properties.datastore
32
- * @param {(peerId: PeerId, multiaddr: Multiaddr) => Promise<boolean>} properties.addressFilter
33
- */
34
- constructor ({ peerId, datastore, addressFilter }) {
35
- super()
36
-
37
- this._peerId = peerId
38
- this._store = new Store(datastore)
39
-
40
- this.addressBook = new AddressBook(this.emit.bind(this), this._store, addressFilter)
41
- this.keyBook = new KeyBook(this.emit.bind(this), this._store)
42
- this.metadataBook = new MetadataBook(this.emit.bind(this), this._store)
43
- this.protoBook = new ProtoBook(this.emit.bind(this), this._store)
44
- }
45
-
46
- async * getPeers () {
47
- log('getPeers await read lock')
48
- const release = await this._store.lock.readLock()
49
- log('getPeers got read lock')
50
-
51
- try {
52
- for await (const peer of this._store.all()) {
53
- if (peer.id.toB58String() === this._peerId.toB58String()) {
54
- // Remove self peer if present
55
- continue
56
- }
57
-
58
- yield peer
59
- }
60
- } finally {
61
- log('getPeers release read lock')
62
- release()
63
- }
64
- }
65
-
66
- /**
67
- * Delete the information of the given peer in every book
68
- *
69
- * @param {PeerId} peerId
70
- */
71
- async delete (peerId) {
72
- log('delete await write lock')
73
- const release = await this._store.lock.writeLock()
74
- log('delete got write lock')
75
-
76
- try {
77
- await this._store.delete(peerId)
78
- } finally {
79
- log('delete release write lock')
80
- release()
81
- }
82
- }
83
-
84
- /**
85
- * Get the stored information of a given peer
86
- *
87
- * @param {PeerId} peerId
88
- */
89
- async get (peerId) {
90
- log('get await read lock')
91
- const release = await this._store.lock.readLock()
92
- log('get got read lock')
93
-
94
- try {
95
- return this._store.load(peerId)
96
- } finally {
97
- log('get release read lock')
98
- release()
99
- }
100
- }
101
-
102
- /**
103
- * Returns true if we have a record of the peer
104
- *
105
- * @param {PeerId} peerId
106
- */
107
- async has (peerId) {
108
- log('has await read lock')
109
- const release = await this._store.lock.readLock()
110
- log('has got read lock')
111
-
112
- try {
113
- return this._store.has(peerId)
114
- } finally {
115
- log('has release read lock')
116
- release()
117
- }
118
- }
119
- }
120
-
121
- module.exports = DefaultPeerStore
@@ -1,141 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const errcode = require('err-code')
5
- const { codes } = require('../errors')
6
- const PeerId = require('peer-id')
7
- const { equals: uint8arrayEquals } = require('uint8arrays/equals')
8
-
9
- /**
10
- * @typedef {import('./types').PeerStore} PeerStore
11
- * @typedef {import('./types').KeyBook} KeyBook
12
- * @typedef {import('libp2p-interfaces/src/keys/types').PublicKey} PublicKey
13
- */
14
-
15
- const log = Object.assign(debug('libp2p:peer-store:key-book'), {
16
- error: debug('libp2p:peer-store:key-book:err')
17
- })
18
-
19
- const EVENT_NAME = 'change:pubkey'
20
-
21
- /**
22
- * @implements {KeyBook}
23
- */
24
- class PeerStoreKeyBook {
25
- /**
26
- * The KeyBook is responsible for keeping the known public keys of a peer.
27
- *
28
- * @param {PeerStore["emit"]} emit
29
- * @param {import('./types').Store} store
30
- */
31
- constructor (emit, store) {
32
- this._emit = emit
33
- this._store = store
34
- }
35
-
36
- /**
37
- * Set the Peer public key
38
- *
39
- * @param {PeerId} peerId
40
- * @param {PublicKey} publicKey
41
- */
42
- async set (peerId, publicKey) {
43
- if (!PeerId.isPeerId(peerId)) {
44
- log.error('peerId must be an instance of peer-id to store data')
45
- throw errcode(new Error('peerId must be an instance of peer-id'), codes.ERR_INVALID_PARAMETERS)
46
- }
47
-
48
- if (!publicKey) {
49
- log.error('publicKey must be an instance of PublicKey to store data')
50
- throw errcode(new Error('publicKey must be an instance of PublicKey'), codes.ERR_INVALID_PARAMETERS)
51
- }
52
-
53
- log('set await write lock')
54
- const release = await this._store.lock.writeLock()
55
- log('set got write lock')
56
-
57
- let updatedKey = false
58
-
59
- try {
60
- try {
61
- const existing = await this._store.load(peerId)
62
-
63
- if (existing.pubKey && uint8arrayEquals(existing.pubKey.bytes, publicKey.bytes)) {
64
- return
65
- }
66
- } catch (/** @type {any} */ err) {
67
- if (err.code !== codes.ERR_NOT_FOUND) {
68
- throw err
69
- }
70
- }
71
-
72
- await this._store.patchOrCreate(peerId, {
73
- pubKey: publicKey
74
- })
75
- updatedKey = true
76
- } finally {
77
- log('set release write lock')
78
- release()
79
- }
80
-
81
- if (updatedKey) {
82
- this._emit(EVENT_NAME, { peerId, pubKey: publicKey })
83
- }
84
- }
85
-
86
- /**
87
- * Get Public key of the given PeerId, if stored
88
- *
89
- * @param {PeerId} peerId
90
- */
91
- async get (peerId) {
92
- if (!PeerId.isPeerId(peerId)) {
93
- log.error('peerId must be an instance of peer-id to store data')
94
- throw errcode(new Error('peerId must be an instance of peer-id'), codes.ERR_INVALID_PARAMETERS)
95
- }
96
-
97
- log('get await write lock')
98
- const release = await this._store.lock.readLock()
99
- log('get got write lock')
100
-
101
- try {
102
- const peer = await this._store.load(peerId)
103
-
104
- return peer.pubKey
105
- } catch (/** @type {any} */ err) {
106
- if (err.code !== codes.ERR_NOT_FOUND) {
107
- throw err
108
- }
109
- } finally {
110
- log('get release write lock')
111
- release()
112
- }
113
- }
114
-
115
- /**
116
- * @param {PeerId} peerId
117
- */
118
- async delete (peerId) {
119
- if (!PeerId.isPeerId(peerId)) {
120
- log.error('peerId must be an instance of peer-id to store data')
121
- throw errcode(new Error('peerId must be an instance of peer-id'), codes.ERR_INVALID_PARAMETERS)
122
- }
123
-
124
- log('delete await write lock')
125
- const release = await this._store.lock.writeLock()
126
- log('delete got write lock')
127
-
128
- try {
129
- await this._store.patchOrCreate(peerId, {
130
- pubKey: undefined
131
- })
132
- } finally {
133
- log('delete release write lock')
134
- release()
135
- }
136
-
137
- this._emit(EVENT_NAME, { peerId, pubKey: undefined })
138
- }
139
- }
140
-
141
- module.exports = PeerStoreKeyBook