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
@@ -1,237 +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
-
8
- /**
9
- * @typedef {import('./types').PeerStore} PeerStore
10
- * @typedef {import('./types').ProtoBook} ProtoBook
11
- */
12
-
13
- const log = Object.assign(debug('libp2p:peer-store:proto-book'), {
14
- error: debug('libp2p:peer-store:proto-book:err')
15
- })
16
-
17
- const EVENT_NAME = 'change:protocols'
18
-
19
- /**
20
- * @implements {ProtoBook}
21
- */
22
- class PersistentProtoBook {
23
- /**
24
- * @param {PeerStore["emit"]} emit
25
- * @param {import('./types').Store} store
26
- */
27
- constructor (emit, store) {
28
- this._emit = emit
29
- this._store = store
30
- }
31
-
32
- /**
33
- * @param {PeerId} peerId
34
- */
35
- async get (peerId) {
36
- log('get wait for read lock')
37
- const release = await this._store.lock.readLock()
38
- log('get got read lock')
39
-
40
- try {
41
- const peer = await this._store.load(peerId)
42
-
43
- return peer.protocols
44
- } catch (/** @type {any} */ err) {
45
- if (err.code !== codes.ERR_NOT_FOUND) {
46
- throw err
47
- }
48
- } finally {
49
- log('get release read lock')
50
- release()
51
- }
52
-
53
- return []
54
- }
55
-
56
- /**
57
- * @param {PeerId} peerId
58
- * @param {string[]} protocols
59
- */
60
- async set (peerId, protocols) {
61
- if (!PeerId.isPeerId(peerId)) {
62
- log.error('peerId must be an instance of peer-id to store data')
63
- throw errcode(new Error('peerId must be an instance of peer-id'), codes.ERR_INVALID_PARAMETERS)
64
- }
65
-
66
- if (!Array.isArray(protocols)) {
67
- log.error('protocols must be provided to store data')
68
- throw errcode(new Error('protocols must be provided'), codes.ERR_INVALID_PARAMETERS)
69
- }
70
-
71
- log('set await write lock')
72
- const release = await this._store.lock.writeLock()
73
- log('set got write lock')
74
-
75
- let updatedPeer
76
-
77
- try {
78
- try {
79
- const peer = await this._store.load(peerId)
80
-
81
- if (new Set([
82
- ...protocols
83
- ]).size === peer.protocols.length) {
84
- return
85
- }
86
- } catch (/** @type {any} */ err) {
87
- if (err.code !== codes.ERR_NOT_FOUND) {
88
- throw err
89
- }
90
- }
91
-
92
- updatedPeer = await this._store.patchOrCreate(peerId, {
93
- protocols
94
- })
95
-
96
- log(`stored provided protocols for ${peerId.toB58String()}`)
97
- } finally {
98
- log('set release write lock')
99
- release()
100
- }
101
-
102
- this._emit(EVENT_NAME, { peerId, protocols: updatedPeer.protocols })
103
- }
104
-
105
- /**
106
- * @param {PeerId} peerId
107
- * @param {string[]} protocols
108
- */
109
- async add (peerId, protocols) {
110
- if (!PeerId.isPeerId(peerId)) {
111
- log.error('peerId must be an instance of peer-id to store data')
112
- throw errcode(new Error('peerId must be an instance of peer-id'), codes.ERR_INVALID_PARAMETERS)
113
- }
114
-
115
- if (!Array.isArray(protocols)) {
116
- log.error('protocols must be provided to store data')
117
- throw errcode(new Error('protocols must be provided'), codes.ERR_INVALID_PARAMETERS)
118
- }
119
-
120
- log('add await write lock')
121
- const release = await this._store.lock.writeLock()
122
- log('add got write lock')
123
-
124
- let updatedPeer
125
-
126
- try {
127
- try {
128
- const peer = await this._store.load(peerId)
129
-
130
- if (new Set([
131
- ...peer.protocols,
132
- ...protocols
133
- ]).size === peer.protocols.length) {
134
- return
135
- }
136
- } catch (/** @type {any} */ err) {
137
- if (err.code !== codes.ERR_NOT_FOUND) {
138
- throw err
139
- }
140
- }
141
-
142
- updatedPeer = await this._store.mergeOrCreate(peerId, {
143
- protocols
144
- })
145
-
146
- log(`added provided protocols for ${peerId.toB58String()}`)
147
- } finally {
148
- log('add release write lock')
149
- release()
150
- }
151
-
152
- this._emit(EVENT_NAME, { peerId, protocols: updatedPeer.protocols })
153
- }
154
-
155
- /**
156
- * @param {PeerId} peerId
157
- * @param {string[]} protocols
158
- */
159
- async remove (peerId, protocols) {
160
- if (!PeerId.isPeerId(peerId)) {
161
- log.error('peerId must be an instance of peer-id to store data')
162
- throw errcode(new Error('peerId must be an instance of peer-id'), codes.ERR_INVALID_PARAMETERS)
163
- }
164
-
165
- if (!Array.isArray(protocols)) {
166
- log.error('protocols must be provided to store data')
167
- throw errcode(new Error('protocols must be provided'), codes.ERR_INVALID_PARAMETERS)
168
- }
169
-
170
- log('remove await write lock')
171
- const release = await this._store.lock.writeLock()
172
- log('remove got write lock')
173
-
174
- let updatedPeer
175
-
176
- try {
177
- try {
178
- const peer = await this._store.load(peerId)
179
- const protocolSet = new Set(peer.protocols)
180
-
181
- for (const protocol of protocols) {
182
- protocolSet.delete(protocol)
183
- }
184
-
185
- if (peer.protocols.length === protocolSet.size) {
186
- return
187
- }
188
-
189
- protocols = Array.from(protocolSet)
190
- } catch (/** @type {any} */ err) {
191
- if (err.code !== codes.ERR_NOT_FOUND) {
192
- throw err
193
- }
194
- }
195
-
196
- updatedPeer = await this._store.patchOrCreate(peerId, {
197
- protocols
198
- })
199
- } finally {
200
- log('remove release write lock')
201
- release()
202
- }
203
-
204
- this._emit(EVENT_NAME, { peerId, protocols: updatedPeer.protocols })
205
- }
206
-
207
- /**
208
- * @param {PeerId} peerId
209
- */
210
- async delete (peerId) {
211
- log('delete await write lock')
212
- const release = await this._store.lock.writeLock()
213
- log('delete got write lock')
214
- let has
215
-
216
- try {
217
- has = await this._store.has(peerId)
218
-
219
- await this._store.patchOrCreate(peerId, {
220
- protocols: []
221
- })
222
- } catch (/** @type {any} */ err) {
223
- if (err.code !== codes.ERR_NOT_FOUND) {
224
- throw err
225
- }
226
- } finally {
227
- log('delete release write lock')
228
- release()
229
- }
230
-
231
- if (has) {
232
- this._emit(EVENT_NAME, { peerId, protocols: [] })
233
- }
234
- }
235
- }
236
-
237
- module.exports = PersistentProtoBook
@@ -1,263 +0,0 @@
1
- 'use strict'
2
-
3
- const debug = require('debug')
4
- const PeerId = require('peer-id')
5
- const errcode = require('err-code')
6
- const { codes } = require('../errors')
7
- const { Key } = require('interface-datastore/key')
8
- const { base32 } = require('multiformats/bases/base32')
9
- const { keys: { unmarshalPublicKey, marshalPublicKey } } = require('libp2p-crypto')
10
- const { Multiaddr } = require('multiaddr')
11
- const { Peer: PeerPB } = require('./pb/peer')
12
- // @ts-expect-error no types
13
- const mortice = require('mortice')
14
- const { equals: uint8arrayEquals } = require('uint8arrays/equals')
15
-
16
- const log = Object.assign(debug('libp2p:peer-store:store'), {
17
- error: debug('libp2p:peer-store:store:err')
18
- })
19
-
20
- /**
21
- * @typedef {import('./types').PeerStore} PeerStore
22
- * @typedef {import('./types').EventName} EventName
23
- * @typedef {import('./types').Peer} Peer
24
- */
25
-
26
- const NAMESPACE_COMMON = '/peers/'
27
-
28
- class PersistentStore {
29
- /**
30
- * @param {import('interface-datastore').Datastore} datastore
31
- */
32
- constructor (datastore) {
33
- this._datastore = datastore
34
- this.lock = mortice('peer-store', {
35
- singleProcess: true
36
- })
37
- }
38
-
39
- /**
40
- * @param {PeerId} peerId
41
- * @returns {Key}
42
- */
43
- _peerIdToDatastoreKey (peerId) {
44
- if (!PeerId.isPeerId(peerId)) {
45
- log.error('peerId must be an instance of peer-id to store data')
46
- throw errcode(new Error('peerId must be an instance of peer-id'), codes.ERR_INVALID_PARAMETERS)
47
- }
48
-
49
- const b32key = peerId.toString()
50
- return new Key(`${NAMESPACE_COMMON}${b32key}`)
51
- }
52
-
53
- /**
54
- * @param {PeerId} peerId
55
- */
56
- async has (peerId) {
57
- return this._datastore.has(this._peerIdToDatastoreKey(peerId))
58
- }
59
-
60
- /**
61
- * @param {PeerId} peerId
62
- */
63
- async delete (peerId) {
64
- await this._datastore.delete(this._peerIdToDatastoreKey(peerId))
65
- }
66
-
67
- /**
68
- * @param {PeerId} peerId
69
- * @returns {Promise<import('./types').Peer>} peer
70
- */
71
- async load (peerId) {
72
- const buf = await this._datastore.get(this._peerIdToDatastoreKey(peerId))
73
- const peer = PeerPB.decode(buf)
74
- const pubKey = peer.pubKey ? unmarshalPublicKey(peer.pubKey) : peerId.pubKey
75
- const metadata = new Map()
76
-
77
- for (const meta of peer.metadata) {
78
- metadata.set(meta.key, meta.value)
79
- }
80
-
81
- return {
82
- ...peer,
83
- id: peerId,
84
- pubKey,
85
- addresses: peer.addresses.map(({ multiaddr, isCertified }) => ({
86
- multiaddr: new Multiaddr(multiaddr),
87
- isCertified: isCertified || false
88
- })),
89
- metadata,
90
- peerRecordEnvelope: peer.peerRecordEnvelope || undefined
91
- }
92
- }
93
-
94
- /**
95
- * @param {Peer} peer
96
- */
97
- async save (peer) {
98
- if (peer.pubKey != null && peer.id.pubKey != null && !uint8arrayEquals(peer.pubKey.bytes, peer.id.pubKey.bytes)) {
99
- log.error('peer publicKey bytes do not match peer id publicKey bytes')
100
- throw errcode(new Error('publicKey bytes do not match peer id publicKey bytes'), codes.ERR_INVALID_PARAMETERS)
101
- }
102
-
103
- // dedupe addresses
104
- const addressSet = new Set()
105
-
106
- const buf = PeerPB.encode({
107
- addresses: peer.addresses
108
- .filter(address => {
109
- if (addressSet.has(address.multiaddr.toString())) {
110
- return false
111
- }
112
-
113
- addressSet.add(address.multiaddr.toString())
114
- return true
115
- })
116
- .sort((a, b) => {
117
- return a.multiaddr.toString().localeCompare(b.multiaddr.toString())
118
- })
119
- .map(({ multiaddr, isCertified }) => ({
120
- multiaddr: multiaddr.bytes,
121
- isCertified
122
- })),
123
- protocols: peer.protocols.sort(),
124
- pubKey: peer.pubKey ? marshalPublicKey(peer.pubKey) : undefined,
125
- metadata: [...peer.metadata.keys()].sort().map(key => ({ key, value: peer.metadata.get(key) })),
126
- peerRecordEnvelope: peer.peerRecordEnvelope
127
- }).finish()
128
-
129
- await this._datastore.put(this._peerIdToDatastoreKey(peer.id), buf)
130
-
131
- return this.load(peer.id)
132
- }
133
-
134
- /**
135
- * @param {PeerId} peerId
136
- * @param {Partial<Peer>} data
137
- */
138
- async patch (peerId, data) {
139
- const peer = await this.load(peerId)
140
-
141
- return await this._patch(peerId, data, peer)
142
- }
143
-
144
- /**
145
- * @param {PeerId} peerId
146
- * @param {Partial<Peer>} data
147
- */
148
- async patchOrCreate (peerId, data) {
149
- /** @type {Peer} */
150
- let peer
151
-
152
- try {
153
- peer = await this.load(peerId)
154
- } catch (/** @type {any} */ err) {
155
- if (err.code !== codes.ERR_NOT_FOUND) {
156
- throw err
157
- }
158
-
159
- peer = { id: peerId, addresses: [], protocols: [], metadata: new Map() }
160
- }
161
-
162
- return await this._patch(peerId, data, peer)
163
- }
164
-
165
- /**
166
- * @param {PeerId} peerId
167
- * @param {Partial<Peer>} data
168
- * @param {Peer} peer
169
- */
170
- async _patch (peerId, data, peer) {
171
- return await this.save({
172
- ...peer,
173
- ...data,
174
- id: peerId
175
- })
176
- }
177
-
178
- /**
179
- * @param {PeerId} peerId
180
- * @param {Partial<Peer>} data
181
- */
182
- async merge (peerId, data) {
183
- const peer = await this.load(peerId)
184
-
185
- return this._merge(peerId, data, peer)
186
- }
187
-
188
- /**
189
- * @param {PeerId} peerId
190
- * @param {Partial<Peer>} data
191
- */
192
- async mergeOrCreate (peerId, data) {
193
- /** @type {Peer} */
194
- let peer
195
-
196
- try {
197
- peer = await this.load(peerId)
198
- } catch (/** @type {any} */ err) {
199
- if (err.code !== codes.ERR_NOT_FOUND) {
200
- throw err
201
- }
202
-
203
- peer = { id: peerId, addresses: [], protocols: [], metadata: new Map() }
204
- }
205
-
206
- return await this._merge(peerId, data, peer)
207
- }
208
-
209
- /**
210
- * @param {PeerId} peerId
211
- * @param {Partial<Peer>} data
212
- * @param {Peer} peer
213
- */
214
- async _merge (peerId, data, peer) {
215
- // if the peer has certified addresses, use those in
216
- // favour of the supplied versions
217
- /** @type {Map<string, boolean>} */
218
- const addresses = new Map()
219
-
220
- ;(data.addresses || []).forEach(addr => {
221
- addresses.set(addr.multiaddr.toString(), addr.isCertified)
222
- })
223
-
224
- peer.addresses.forEach(({ multiaddr, isCertified }) => {
225
- const addrStr = multiaddr.toString()
226
- addresses.set(addrStr, Boolean(addresses.get(addrStr) || isCertified))
227
- })
228
-
229
- return await this.save({
230
- id: peerId,
231
- addresses: Array.from(addresses.entries()).map(([addrStr, isCertified]) => {
232
- return {
233
- multiaddr: new Multiaddr(addrStr),
234
- isCertified
235
- }
236
- }),
237
- protocols: Array.from(new Set([
238
- ...(peer.protocols || []),
239
- ...(data.protocols || [])
240
- ])),
241
- metadata: new Map([
242
- ...(peer.metadata ? peer.metadata.entries() : []),
243
- ...(data.metadata ? data.metadata.entries() : [])
244
- ]),
245
- pubKey: data.pubKey || (peer != null ? peer.pubKey : undefined),
246
- peerRecordEnvelope: data.peerRecordEnvelope || (peer != null ? peer.peerRecordEnvelope : undefined)
247
- })
248
- }
249
-
250
- async * all () {
251
- for await (const key of this._datastore.queryKeys({
252
- prefix: NAMESPACE_COMMON
253
- })) {
254
- // /peers/${peer-id-as-libp2p-key-cid-string-in-base-32}
255
- const base32Str = key.toString().split('/')[2]
256
- const buf = base32.decode(base32Str)
257
-
258
- yield this.load(PeerId.createFromBytes(buf))
259
- }
260
- }
261
- }
262
-
263
- module.exports = PersistentStore