libp2p 0.42.2 → 0.43.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 (295) hide show
  1. package/README.md +4 -4
  2. package/dist/index.min.js +29 -29
  3. package/dist/src/address-manager/index.d.ts +1 -10
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +46 -29
  6. package/dist/src/address-manager/index.js.map +1 -1
  7. package/dist/src/autonat/constants.d.ts +4 -0
  8. package/dist/src/autonat/constants.d.ts.map +1 -0
  9. package/dist/src/autonat/constants.js +4 -0
  10. package/dist/src/autonat/constants.js.map +1 -0
  11. package/dist/src/autonat/index.d.ts +64 -0
  12. package/dist/src/autonat/index.d.ts.map +1 -0
  13. package/dist/src/autonat/index.js +417 -0
  14. package/dist/src/autonat/index.js.map +1 -0
  15. package/dist/src/autonat/pb/index.d.ts +57 -0
  16. package/dist/src/autonat/pb/index.d.ts.map +1 -0
  17. package/dist/src/autonat/pb/index.js +250 -0
  18. package/dist/src/autonat/pb/index.js.map +1 -0
  19. package/dist/src/circuit/constants.d.ts +31 -6
  20. package/dist/src/circuit/constants.d.ts.map +1 -1
  21. package/dist/src/circuit/constants.js +37 -7
  22. package/dist/src/circuit/constants.js.map +1 -1
  23. package/dist/src/circuit/index.d.ts +16 -61
  24. package/dist/src/circuit/index.d.ts.map +1 -1
  25. package/dist/src/circuit/index.js +2 -68
  26. package/dist/src/circuit/index.js.map +1 -1
  27. package/dist/src/circuit/pb/index.d.ts +83 -43
  28. package/dist/src/circuit/pb/index.d.ts.map +1 -1
  29. package/dist/src/circuit/pb/index.js +363 -127
  30. package/dist/src/circuit/pb/index.js.map +1 -1
  31. package/dist/src/circuit/server/advert-service.d.ts +43 -0
  32. package/dist/src/circuit/server/advert-service.d.ts.map +1 -0
  33. package/dist/src/circuit/server/advert-service.js +69 -0
  34. package/dist/src/circuit/server/advert-service.js.map +1 -0
  35. package/dist/src/circuit/server/index.d.ts +60 -0
  36. package/dist/src/circuit/server/index.d.ts.map +1 -0
  37. package/dist/src/circuit/server/index.js +287 -0
  38. package/dist/src/circuit/server/index.js.map +1 -0
  39. package/dist/src/circuit/server/reservation-store.d.ts +49 -0
  40. package/dist/src/circuit/server/reservation-store.d.ts.map +1 -0
  41. package/dist/src/circuit/server/reservation-store.js +57 -0
  42. package/dist/src/circuit/server/reservation-store.js.map +1 -0
  43. package/dist/src/circuit/server/reservation-voucher.d.ts +18 -0
  44. package/dist/src/circuit/server/reservation-voucher.d.ts.map +1 -0
  45. package/dist/src/circuit/server/reservation-voucher.js +33 -0
  46. package/dist/src/circuit/server/reservation-voucher.js.map +1 -0
  47. package/dist/src/circuit/transport/discovery.d.ts +45 -0
  48. package/dist/src/circuit/transport/discovery.d.ts.map +1 -0
  49. package/dist/src/circuit/transport/discovery.js +82 -0
  50. package/dist/src/circuit/transport/discovery.js.map +1 -0
  51. package/dist/src/circuit/transport/index.d.ts +33 -0
  52. package/dist/src/circuit/transport/index.d.ts.map +1 -0
  53. package/dist/src/circuit/transport/index.js +225 -0
  54. package/dist/src/circuit/transport/index.js.map +1 -0
  55. package/dist/src/circuit/transport/listener.d.ts +9 -0
  56. package/dist/src/circuit/transport/listener.d.ts.map +1 -0
  57. package/dist/src/circuit/transport/listener.js +76 -0
  58. package/dist/src/circuit/transport/listener.js.map +1 -0
  59. package/dist/src/circuit/transport/reservation-store.d.ts +60 -0
  60. package/dist/src/circuit/transport/reservation-store.d.ts.map +1 -0
  61. package/dist/src/circuit/transport/reservation-store.js +165 -0
  62. package/dist/src/circuit/transport/reservation-store.js.map +1 -0
  63. package/dist/src/circuit/utils.d.ts +7 -0
  64. package/dist/src/circuit/utils.d.ts.map +1 -1
  65. package/dist/src/circuit/utils.js +87 -0
  66. package/dist/src/circuit/utils.js.map +1 -1
  67. package/dist/src/components.d.ts +2 -1
  68. package/dist/src/components.d.ts.map +1 -1
  69. package/dist/src/components.js +13 -13
  70. package/dist/src/components.js.map +1 -1
  71. package/dist/src/config.d.ts.map +1 -1
  72. package/dist/src/config.js +21 -25
  73. package/dist/src/config.js.map +1 -1
  74. package/dist/src/connection/index.d.ts +2 -2
  75. package/dist/src/connection/index.d.ts.map +1 -1
  76. package/dist/src/connection/index.js +4 -4
  77. package/dist/src/connection/index.js.map +1 -1
  78. package/dist/src/connection-manager/auto-dialler.d.ts +0 -4
  79. package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
  80. package/dist/src/connection-manager/auto-dialler.js +18 -18
  81. package/dist/src/connection-manager/auto-dialler.js.map +1 -1
  82. package/dist/src/connection-manager/dialer/dial-request.d.ts.map +1 -1
  83. package/dist/src/connection-manager/dialer/dial-request.js +13 -6
  84. package/dist/src/connection-manager/dialer/dial-request.js.map +1 -1
  85. package/dist/src/connection-manager/dialer/index.d.ts +10 -1
  86. package/dist/src/connection-manager/dialer/index.d.ts.map +1 -1
  87. package/dist/src/connection-manager/dialer/index.js +24 -9
  88. package/dist/src/connection-manager/dialer/index.js.map +1 -1
  89. package/dist/src/connection-manager/index.d.ts +1 -4
  90. package/dist/src/connection-manager/index.d.ts.map +1 -1
  91. package/dist/src/connection-manager/index.js +8 -5
  92. package/dist/src/connection-manager/index.js.map +1 -1
  93. package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
  94. package/dist/src/connection-manager/latency-monitor.js +1 -1
  95. package/dist/src/connection-manager/latency-monitor.js.map +1 -1
  96. package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
  97. package/dist/src/content-routing/index.d.ts +6 -4
  98. package/dist/src/content-routing/index.d.ts.map +1 -1
  99. package/dist/src/content-routing/index.js +9 -9
  100. package/dist/src/content-routing/index.js.map +1 -1
  101. package/dist/src/content-routing/utils.d.ts +3 -3
  102. package/dist/src/content-routing/utils.d.ts.map +1 -1
  103. package/dist/src/content-routing/utils.js +2 -2
  104. package/dist/src/content-routing/utils.js.map +1 -1
  105. package/dist/src/dht/dht-content-routing.d.ts +2 -1
  106. package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
  107. package/dist/src/dht/dht-content-routing.js +2 -2
  108. package/dist/src/dht/dht-content-routing.js.map +1 -1
  109. package/dist/src/dht/dht-peer-routing.d.ts +3 -2
  110. package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
  111. package/dist/src/dht/dht-peer-routing.js +2 -2
  112. package/dist/src/dht/dht-peer-routing.js.map +1 -1
  113. package/dist/src/dht/dummy-dht.d.ts +1 -1
  114. package/dist/src/dht/dummy-dht.d.ts.map +1 -1
  115. package/dist/src/dht/dummy-dht.js +12 -12
  116. package/dist/src/dht/dummy-dht.js.map +1 -1
  117. package/dist/src/errors.d.ts +2 -1
  118. package/dist/src/errors.d.ts.map +1 -1
  119. package/dist/src/errors.js +1 -0
  120. package/dist/src/errors.js.map +1 -1
  121. package/dist/src/fetch/index.d.ts.map +1 -1
  122. package/dist/src/fetch/index.js +6 -6
  123. package/dist/src/fetch/index.js.map +1 -1
  124. package/dist/src/fetch/pb/proto.d.ts +3 -3
  125. package/dist/src/fetch/pb/proto.d.ts.map +1 -1
  126. package/dist/src/fetch/pb/proto.js +4 -3
  127. package/dist/src/fetch/pb/proto.js.map +1 -1
  128. package/dist/src/get-peer.js +2 -2
  129. package/dist/src/get-peer.js.map +1 -1
  130. package/dist/src/identify/index.d.ts +3 -1
  131. package/dist/src/identify/index.d.ts.map +1 -1
  132. package/dist/src/identify/index.js +19 -14
  133. package/dist/src/identify/index.js.map +1 -1
  134. package/dist/src/identify/pb/message.d.ts +2 -2
  135. package/dist/src/identify/pb/message.d.ts.map +1 -1
  136. package/dist/src/identify/pb/message.js +1 -0
  137. package/dist/src/identify/pb/message.js.map +1 -1
  138. package/dist/src/index.d.ts +14 -8
  139. package/dist/src/index.d.ts.map +1 -1
  140. package/dist/src/index.js.map +1 -1
  141. package/dist/src/insecure/index.d.ts.map +1 -1
  142. package/dist/src/insecure/index.js.map +1 -1
  143. package/dist/src/insecure/pb/proto.d.ts +3 -3
  144. package/dist/src/insecure/pb/proto.d.ts.map +1 -1
  145. package/dist/src/insecure/pb/proto.js +4 -5
  146. package/dist/src/insecure/pb/proto.js.map +1 -1
  147. package/dist/src/libp2p.d.ts +7 -3
  148. package/dist/src/libp2p.d.ts.map +1 -1
  149. package/dist/src/libp2p.js +35 -35
  150. package/dist/src/libp2p.js.map +1 -1
  151. package/dist/src/nat-manager.d.ts.map +1 -1
  152. package/dist/src/nat-manager.js +5 -3
  153. package/dist/src/nat-manager.js.map +1 -1
  154. package/dist/src/peer-record-updater.d.ts.map +1 -1
  155. package/dist/src/peer-routing.d.ts.map +1 -1
  156. package/dist/src/peer-routing.js +5 -5
  157. package/dist/src/peer-routing.js.map +1 -1
  158. package/dist/src/ping/index.d.ts.map +1 -1
  159. package/dist/src/ping/index.js +2 -2
  160. package/dist/src/ping/index.js.map +1 -1
  161. package/dist/src/pnet/crypto.d.ts +1 -1
  162. package/dist/src/pnet/crypto.d.ts.map +1 -1
  163. package/dist/src/pnet/crypto.js +1 -1
  164. package/dist/src/pnet/crypto.js.map +1 -1
  165. package/dist/src/pnet/index.js +3 -3
  166. package/dist/src/pnet/index.js.map +1 -1
  167. package/dist/src/pnet/key-generator.d.ts.map +1 -1
  168. package/dist/src/pubsub/dummy-pubsub.js +9 -9
  169. package/dist/src/pubsub/dummy-pubsub.js.map +1 -1
  170. package/dist/src/registrar.d.ts.map +1 -1
  171. package/dist/src/registrar.js +4 -4
  172. package/dist/src/registrar.js.map +1 -1
  173. package/dist/src/transport-manager.d.ts.map +1 -1
  174. package/dist/src/transport-manager.js +8 -9
  175. package/dist/src/transport-manager.js.map +1 -1
  176. package/dist/src/upgrader.d.ts +2 -1
  177. package/dist/src/upgrader.d.ts.map +1 -1
  178. package/dist/src/upgrader.js +38 -33
  179. package/dist/src/upgrader.js.map +1 -1
  180. package/dist/typedoc-urls.json +19 -6
  181. package/package.json +36 -33
  182. package/src/address-manager/index.ts +62 -35
  183. package/src/autonat/constants.ts +4 -0
  184. package/src/autonat/index.ts +567 -0
  185. package/src/autonat/pb/index.proto +35 -0
  186. package/src/autonat/pb/index.ts +320 -0
  187. package/src/circuit/constants.ts +48 -7
  188. package/src/circuit/index.ts +17 -129
  189. package/src/circuit/pb/index.proto +57 -32
  190. package/src/circuit/pb/index.ts +448 -138
  191. package/src/circuit/server/advert-service.ts +108 -0
  192. package/src/circuit/server/index.ts +421 -0
  193. package/src/circuit/server/reservation-store.ts +111 -0
  194. package/src/circuit/server/reservation-voucher.ts +51 -0
  195. package/src/circuit/transport/discovery.ts +127 -0
  196. package/src/circuit/transport/index.ts +325 -0
  197. package/src/circuit/transport/listener.ts +99 -0
  198. package/src/circuit/transport/reservation-store.ts +249 -0
  199. package/src/circuit/utils.ts +108 -0
  200. package/src/components.ts +22 -21
  201. package/src/config.ts +21 -25
  202. package/src/connection/index.ts +10 -10
  203. package/src/connection-manager/auto-dialler.ts +36 -40
  204. package/src/connection-manager/dialer/dial-request.ts +13 -6
  205. package/src/connection-manager/dialer/index.ts +34 -15
  206. package/src/connection-manager/index.ts +22 -23
  207. package/src/connection-manager/latency-monitor.ts +9 -9
  208. package/src/connection-manager/visibility-change-emitter.ts +4 -4
  209. package/src/content-routing/index.ts +18 -16
  210. package/src/content-routing/utils.ts +5 -5
  211. package/src/dht/dht-content-routing.ts +5 -4
  212. package/src/dht/dht-peer-routing.ts +5 -4
  213. package/src/dht/dummy-dht.ts +13 -13
  214. package/src/errors.ts +2 -1
  215. package/src/fetch/index.ts +13 -13
  216. package/src/fetch/pb/proto.ts +8 -7
  217. package/src/get-peer.ts +3 -3
  218. package/src/identify/index.ts +29 -24
  219. package/src/identify/pb/message.ts +3 -2
  220. package/src/index.ts +15 -8
  221. package/src/insecure/index.ts +2 -1
  222. package/src/insecure/pb/proto.ts +8 -9
  223. package/src/libp2p.ts +52 -46
  224. package/src/nat-manager.ts +11 -9
  225. package/src/peer-record-updater.ts +4 -4
  226. package/src/peer-routing.ts +9 -9
  227. package/src/ping/index.ts +6 -6
  228. package/src/pnet/crypto.ts +3 -3
  229. package/src/pnet/index.ts +3 -3
  230. package/src/pnet/key-generator.ts +1 -1
  231. package/src/pubsub/dummy-pubsub.ts +9 -9
  232. package/src/registrar.ts +12 -12
  233. package/src/transport-manager.ts +17 -18
  234. package/src/upgrader.ts +43 -42
  235. package/src/version.ts +1 -1
  236. package/dist/src/circuit/auto-relay.d.ts +0 -46
  237. package/dist/src/circuit/auto-relay.d.ts.map +0 -1
  238. package/dist/src/circuit/auto-relay.js +0 -220
  239. package/dist/src/circuit/auto-relay.js.map +0 -1
  240. package/dist/src/circuit/circuit/hop.d.ts +0 -42
  241. package/dist/src/circuit/circuit/hop.d.ts.map +0 -1
  242. package/dist/src/circuit/circuit/hop.js +0 -142
  243. package/dist/src/circuit/circuit/hop.js.map +0 -1
  244. package/dist/src/circuit/circuit/stop.d.ts +0 -24
  245. package/dist/src/circuit/circuit/stop.d.ts.map +0 -1
  246. package/dist/src/circuit/circuit/stop.js +0 -51
  247. package/dist/src/circuit/circuit/stop.js.map +0 -1
  248. package/dist/src/circuit/circuit/stream-handler.d.ts +0 -40
  249. package/dist/src/circuit/circuit/stream-handler.d.ts.map +0 -1
  250. package/dist/src/circuit/circuit/stream-handler.js +0 -59
  251. package/dist/src/circuit/circuit/stream-handler.js.map +0 -1
  252. package/dist/src/circuit/circuit/utils.d.ts +0 -7
  253. package/dist/src/circuit/circuit/utils.d.ts.map +0 -1
  254. package/dist/src/circuit/circuit/utils.js +0 -43
  255. package/dist/src/circuit/circuit/utils.js.map +0 -1
  256. package/dist/src/circuit/listener.d.ts +0 -9
  257. package/dist/src/circuit/listener.d.ts.map +0 -1
  258. package/dist/src/circuit/listener.js +0 -62
  259. package/dist/src/circuit/listener.js.map +0 -1
  260. package/dist/src/circuit/multicodec.d.ts +0 -2
  261. package/dist/src/circuit/multicodec.d.ts.map +0 -1
  262. package/dist/src/circuit/multicodec.js +0 -2
  263. package/dist/src/circuit/multicodec.js.map +0 -1
  264. package/dist/src/circuit/transport.d.ts +0 -51
  265. package/dist/src/circuit/transport.d.ts.map +0 -1
  266. package/dist/src/circuit/transport.js +0 -223
  267. package/dist/src/circuit/transport.js.map +0 -1
  268. package/dist/src/keychain/cms.d.ts +0 -33
  269. package/dist/src/keychain/cms.d.ts.map +0 -1
  270. package/dist/src/keychain/cms.js +0 -129
  271. package/dist/src/keychain/cms.js.map +0 -1
  272. package/dist/src/keychain/index.d.ts +0 -151
  273. package/dist/src/keychain/index.d.ts.map +0 -1
  274. package/dist/src/keychain/index.js +0 -519
  275. package/dist/src/keychain/index.js.map +0 -1
  276. package/dist/src/keychain/util.d.ts +0 -21
  277. package/dist/src/keychain/util.d.ts.map +0 -1
  278. package/dist/src/keychain/util.js +0 -79
  279. package/dist/src/keychain/util.js.map +0 -1
  280. package/src/circuit/IMPLEMENTATION_NOTES.md +0 -128
  281. package/src/circuit/README.md +0 -111
  282. package/src/circuit/auto-relay.ts +0 -292
  283. package/src/circuit/circuit/hop.ts +0 -220
  284. package/src/circuit/circuit/stop.ts +0 -83
  285. package/src/circuit/circuit/stream-handler.ts +0 -87
  286. package/src/circuit/circuit/utils.ts +0 -44
  287. package/src/circuit/listener.ts +0 -83
  288. package/src/circuit/multicodec.ts +0 -2
  289. package/src/circuit/transport.ts +0 -278
  290. package/src/keychain/README.md +0 -55
  291. package/src/keychain/cms.ts +0 -150
  292. package/src/keychain/doc/private-key.png +0 -0
  293. package/src/keychain/doc/private-key.xml +0 -1
  294. package/src/keychain/index.ts +0 -629
  295. package/src/keychain/util.ts +0 -82
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "libp2p",
3
- "version": "0.42.2",
3
+ "version": "0.43.0",
4
4
  "description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p#readme",
@@ -49,9 +49,13 @@
49
49
  ],
50
50
  "exports": {
51
51
  ".": {
52
- "types": "./src/index.d.ts",
52
+ "types": "./dist/src/index.d.ts",
53
53
  "import": "./dist/src/index.js"
54
54
  },
55
+ "./circuit-relay": {
56
+ "types": "./dist/src/circuit/index.d.ts",
57
+ "import": "./dist/src/circuit/index.js"
58
+ },
55
59
  "./insecure": {
56
60
  "types": "./dist/src/insecure/index.d.ts",
57
61
  "import": "./dist/src/insecure/index.js"
@@ -75,11 +79,12 @@
75
79
  "scripts": {
76
80
  "clean": "aegir clean",
77
81
  "lint": "aegir lint",
78
- "dep-check": "aegir dep-check",
82
+ "dep-check": "aegir dep-check -i protons",
79
83
  "prepublishOnly": "node scripts/update-version.js",
80
84
  "build": "aegir build",
81
85
  "docs": "aegir docs",
82
86
  "generate": "run-s generate:proto:*",
87
+ "generate:proto:autonat": "protons ./src/autonat/pb/index.proto",
83
88
  "generate:proto:circuit": "protons ./src/circuit/pb/index.proto",
84
89
  "generate:proto:fetch": "protons ./src/fetch/pb/proto.proto",
85
90
  "generate:proto:identify": "protons ./src/identify/pb/message.proto",
@@ -99,63 +104,64 @@
99
104
  "@libp2p/interface-address-manager": "^2.0.0",
100
105
  "@libp2p/interface-connection": "^3.0.2",
101
106
  "@libp2p/interface-connection-encrypter": "^3.0.1",
107
+ "@libp2p/interface-connection-gater": "^1.0.0",
102
108
  "@libp2p/interface-connection-manager": "^1.1.1",
103
109
  "@libp2p/interface-content-routing": "^2.0.0",
104
110
  "@libp2p/interface-dht": "^2.0.0",
111
+ "@libp2p/interface-keychain": "^2.0.4",
105
112
  "@libp2p/interface-libp2p": "^1.0.0",
106
113
  "@libp2p/interface-metrics": "^4.0.0",
107
114
  "@libp2p/interface-peer-discovery": "^1.0.1",
108
- "@libp2p/interface-peer-id": "^2.0.0",
115
+ "@libp2p/interface-peer-id": "^2.0.1",
109
116
  "@libp2p/interface-peer-info": "^1.0.3",
110
117
  "@libp2p/interface-peer-routing": "^1.0.1",
111
118
  "@libp2p/interface-peer-store": "^1.2.2",
112
119
  "@libp2p/interface-pubsub": "^3.0.0",
120
+ "@libp2p/interface-record": "^2.0.6",
113
121
  "@libp2p/interface-registrar": "^2.0.3",
114
122
  "@libp2p/interface-stream-muxer": "^3.0.0",
115
123
  "@libp2p/interface-transport": "^2.1.0",
116
- "@libp2p/interfaces": "^3.0.3",
124
+ "@libp2p/interfaces": "^3.2.0",
125
+ "@libp2p/keychain": "^2.0.0",
117
126
  "@libp2p/logger": "^2.0.1",
118
127
  "@libp2p/multistream-select": "^3.0.0",
119
128
  "@libp2p/peer-collections": "^3.0.0",
120
129
  "@libp2p/peer-id": "^2.0.0",
121
130
  "@libp2p/peer-id-factory": "^2.0.0",
122
131
  "@libp2p/peer-record": "^5.0.0",
123
- "@libp2p/peer-store": "^6.0.0",
132
+ "@libp2p/peer-store": "^7.0.0",
133
+ "@libp2p/topology": "^4.0.1",
124
134
  "@libp2p/tracked-map": "^3.0.0",
125
135
  "@libp2p/utils": "^3.0.2",
126
- "@multiformats/mafmt": "^11.0.2",
127
- "@multiformats/multiaddr": "^11.0.0",
136
+ "@multiformats/mafmt": "^12.0.0",
137
+ "@multiformats/multiaddr": "^12.0.0",
128
138
  "abortable-iterator": "^4.0.2",
129
139
  "any-signal": "^3.0.0",
130
- "datastore-core": "^8.0.1",
131
- "err-code": "^3.0.1",
132
- "events": "^3.3.0",
133
- "hashlru": "^2.3.0",
134
- "interface-datastore": "^7.0.0",
140
+ "datastore-core": "^9.0.0",
141
+ "interface-datastore": "^8.0.0",
135
142
  "it-all": "^2.0.0",
136
143
  "it-drain": "^2.0.0",
137
144
  "it-filter": "^2.0.0",
138
145
  "it-first": "^2.0.0",
139
- "it-foreach": "^1.0.0",
146
+ "it-parallel": "^3.0.0",
140
147
  "it-handshake": "^4.1.2",
141
148
  "it-length-prefixed": "^8.0.2",
142
149
  "it-map": "^2.0.0",
143
150
  "it-merge": "^2.0.0",
144
151
  "it-pair": "^2.0.2",
152
+ "it-pb-stream": "^3.2.0",
145
153
  "it-pipe": "^2.0.3",
146
- "it-sort": "^2.0.0",
147
154
  "it-stream-types": "^1.0.4",
148
155
  "merge-options": "^3.0.4",
149
156
  "multiformats": "^11.0.0",
150
- "node-forge": "^1.3.1",
157
+ "p-defer": "^4.0.0",
151
158
  "p-fifo": "^1.0.0",
159
+ "p-queue": "^7.3.4",
152
160
  "p-retry": "^5.0.0",
153
- "p-settle": "^5.0.0",
154
161
  "private-ip": "^3.0.0",
155
- "protons-runtime": "^4.0.1",
162
+ "protons-runtime": "^5.0.0",
156
163
  "rate-limiter-flexible": "^2.3.11",
157
164
  "retimer": "^3.0.0",
158
- "sanitize-filename": "^1.6.3",
159
165
  "set-delayed-interval": "^1.0.0",
160
166
  "timeout-abort-controller": "^3.0.0",
161
167
  "uint8arraylist": "^2.3.2",
@@ -164,42 +170,39 @@
164
170
  "xsalsa20": "^1.1.0"
165
171
  },
166
172
  "devDependencies": {
173
+ "@chainsafe/libp2p-gossipsub": "^6.2.0",
167
174
  "@chainsafe/libp2p-noise": "^11.0.0",
168
175
  "@chainsafe/libp2p-yamux": "^3.0.3",
169
176
  "@libp2p/bootstrap": "^6.0.0",
170
- "@libp2p/daemon-client": "^4.0.1",
171
- "@libp2p/daemon-server": "^4.0.1",
177
+ "@libp2p/daemon-client": "^5.0.0",
178
+ "@libp2p/daemon-server": "^4.1.0",
172
179
  "@libp2p/floodsub": "^6.0.0",
173
180
  "@libp2p/interface-compliance-tests": "^3.0.2",
174
181
  "@libp2p/interface-connection-compliance-tests": "^2.0.3",
175
182
  "@libp2p/interface-connection-encrypter-compliance-tests": "^4.0.0",
176
183
  "@libp2p/interface-mocks": "^9.0.0",
177
- "@libp2p/interop": "^4.0.0",
178
- "@libp2p/kad-dht": "^7.0.0",
179
- "@libp2p/mdns": "^6.0.0",
184
+ "@libp2p/interop": "^7.0.0",
185
+ "@libp2p/kad-dht": "^8.0.0",
186
+ "@libp2p/mdns": "^7.0.0",
180
187
  "@libp2p/mplex": "^7.0.0",
181
188
  "@libp2p/pubsub": "^6.0.0",
182
189
  "@libp2p/tcp": "^6.0.0",
183
- "@libp2p/topology": "^4.0.0",
184
- "@libp2p/webrtc-star": "^6.0.0",
185
190
  "@libp2p/websockets": "^5.0.0",
186
- "@types/node-forge": "^1.0.0",
187
191
  "@types/p-fifo": "^1.0.0",
188
192
  "@types/varint": "^6.0.0",
189
193
  "@types/xsalsa20": "^1.1.0",
190
- "aegir": "^37.5.6",
194
+ "aegir": "^38.1.7",
191
195
  "cborg": "^1.8.1",
192
196
  "delay": "^5.0.0",
193
- "execa": "^6.1.0",
194
- "go-libp2p": "^0.0.6",
197
+ "execa": "^7.0.0",
198
+ "go-libp2p": "^1.0.1",
195
199
  "it-pushable": "^3.0.0",
196
- "it-to-buffer": "^3.0.0",
200
+ "it-to-buffer": "^3.0.1",
197
201
  "npm-run-all": "^4.1.5",
198
- "p-defer": "^4.0.0",
199
202
  "p-event": "^5.0.1",
200
203
  "p-times": "^4.0.0",
201
204
  "p-wait-for": "^5.0.0",
202
- "protons": "^6.0.0",
205
+ "protons": "^7.0.2",
203
206
  "sinon": "^15.0.1",
204
207
  "sinon-ts": "^1.0.0"
205
208
  },
@@ -44,12 +44,35 @@ export interface AddressFilter {
44
44
 
45
45
  const defaultAddressFilter = (addrs: Multiaddr[]): Multiaddr[] => addrs
46
46
 
47
+ interface ObservedAddressMetadata {
48
+ confident: boolean
49
+ }
50
+
51
+ /**
52
+ * If the passed multiaddr contains the passed peer id, remove it
53
+ */
54
+ function stripPeerId (ma: Multiaddr, peerId: PeerId): Multiaddr {
55
+ const observedPeerIdStr = ma.getPeerId()
56
+
57
+ // strip our peer id if it has been passed
58
+ if (observedPeerIdStr != null) {
59
+ const observedPeerId = peerIdFromString(observedPeerIdStr)
60
+
61
+ // use same encoding for comparison
62
+ if (observedPeerId.equals(peerId)) {
63
+ ma = ma.decapsulate(multiaddr(`/p2p/${peerId.toString()}`))
64
+ }
65
+ }
66
+
67
+ return ma
68
+ }
69
+
47
70
  export class DefaultAddressManager extends EventEmitter<AddressManagerEvents> {
48
71
  private readonly components: DefaultAddressManagerComponents
49
72
  // this is an array to allow for duplicates, e.g. multiples of `/ip4/0.0.0.0/tcp/0`
50
73
  private readonly listen: string[]
51
74
  private readonly announce: Set<string>
52
- private readonly observed: Set<string>
75
+ private readonly observed: Map<string, ObservedAddressMetadata>
53
76
  private readonly announceFilter: AddressFilter
54
77
 
55
78
  /**
@@ -66,7 +89,7 @@ export class DefaultAddressManager extends EventEmitter<AddressManagerEvents> {
66
89
  this.components = components
67
90
  this.listen = listen.map(ma => ma.toString())
68
91
  this.announce = new Set(announce.map(ma => ma.toString()))
69
- this.observed = new Set()
92
+ this.observed = new Map()
70
93
  this.announceFilter = init.announceFilter ?? defaultAddressFilter
71
94
  }
72
95
 
@@ -88,52 +111,51 @@ export class DefaultAddressManager extends EventEmitter<AddressManagerEvents> {
88
111
  * Get observed multiaddrs
89
112
  */
90
113
  getObservedAddrs (): Multiaddr[] {
91
- return Array.from(this.observed).map((a) => multiaddr(a))
114
+ return Array.from(this.observed).map(([a]) => multiaddr(a))
92
115
  }
93
116
 
94
117
  /**
95
118
  * Add peer observed addresses
96
- * Signal that we have confidence an observed multiaddr is publicly dialable -
97
- * this will make it appear in the output of getAddresses()
98
119
  */
99
- confirmObservedAddr (addr: Multiaddr): void {
100
-
101
- }
120
+ addObservedAddr (addr: Multiaddr): void {
121
+ addr = stripPeerId(addr, this.components.peerId)
122
+ const addrString = addr.toString()
102
123
 
103
- /**
104
- * Signal that we do not have confidence an observed multiaddr is publicly dialable -
105
- * this will remove it from the output of getObservedAddrs()
106
- */
107
- removeObservedAddr (addr: Multiaddr): void {
124
+ // do not trigger the change:addresses event if we already know about this address
125
+ if (this.observed.has(addrString)) {
126
+ return
127
+ }
108
128
 
129
+ this.observed.set(addrString, {
130
+ confident: false
131
+ })
109
132
  }
110
133
 
111
- /**
112
- * Add peer observed addresses
113
- */
114
- addObservedAddr (addr: string | Multiaddr): void {
115
- let ma = multiaddr(addr)
116
- const remotePeer = ma.getPeerId()
117
-
118
- // strip our peer id if it has been passed
119
- if (remotePeer != null) {
120
- const remotePeerId = peerIdFromString(remotePeer)
121
-
122
- // use same encoding for comparison
123
- if (remotePeerId.equals(this.components.peerId)) {
124
- ma = ma.decapsulate(multiaddr(`/p2p/${this.components.peerId.toString()}`))
125
- }
134
+ confirmObservedAddr (addr: Multiaddr): void {
135
+ addr = stripPeerId(addr, this.components.peerId)
136
+ const addrString = addr.toString()
137
+
138
+ const metadata = this.observed.get(addrString) ?? {
139
+ confident: false
126
140
  }
127
141
 
128
- const addrString = ma.toString()
142
+ const startingConfidence = metadata.confident
129
143
 
130
- // do not trigger the change:addresses event if we already know about this address
131
- if (this.observed.has(addrString)) {
132
- return
144
+ this.observed.set(addrString, {
145
+ confident: true
146
+ })
147
+
148
+ // only trigger the change:addresses event if our confidence in an address has changed
149
+ if (!startingConfidence) {
150
+ this.dispatchEvent(new CustomEvent('change:addresses'))
133
151
  }
152
+ }
153
+
154
+ removeObservedAddr (addr: Multiaddr): void {
155
+ addr = stripPeerId(addr, this.components.peerId)
156
+ const addrString = addr.toString()
134
157
 
135
- this.observed.add(addrString)
136
- this.dispatchEvent(new CustomEvent('change:addresses'))
158
+ this.observed.delete(addrString)
137
159
  }
138
160
 
139
161
  getAddresses (): Multiaddr[] {
@@ -144,7 +166,12 @@ export class DefaultAddressManager extends EventEmitter<AddressManagerEvents> {
144
166
  addrs = this.components.transportManager.getAddrs().map(ma => ma.toString())
145
167
  }
146
168
 
147
- addrs = addrs.concat(this.getObservedAddrs().map(ma => ma.toString()))
169
+ // add observed addresses we are confident in
170
+ addrs = addrs.concat(
171
+ Array.from(this.observed)
172
+ .filter(([ma, metadata]) => metadata.confident)
173
+ .map(([ma]) => ma)
174
+ )
148
175
 
149
176
  // dedupe multiaddrs
150
177
  const addrSet = new Set(addrs)
@@ -0,0 +1,4 @@
1
+
2
+ export const PROTOCOL = '/libp2p/autonat/1.0.0'
3
+ export const PROTOCOL_VERSION = '1.0.0'
4
+ export const PROTOCOL_NAME = 'autonat'