libp2p 0.46.21 → 1.0.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 (301) hide show
  1. package/README.md +51 -47
  2. package/dist/index.min.js +40 -28
  3. package/dist/src/address-manager/index.d.ts +4 -5
  4. package/dist/src/address-manager/index.d.ts.map +1 -1
  5. package/dist/src/address-manager/index.js +3 -3
  6. package/dist/src/address-manager/index.js.map +1 -1
  7. package/dist/src/components.d.ts +4 -15
  8. package/dist/src/components.d.ts.map +1 -1
  9. package/dist/src/components.js +2 -2
  10. package/dist/src/components.js.map +1 -1
  11. package/dist/src/config/connection-gater.browser.d.ts +1 -1
  12. package/dist/src/config/connection-gater.browser.d.ts.map +1 -1
  13. package/dist/src/config/connection-gater.browser.js.map +1 -1
  14. package/dist/src/config/connection-gater.d.ts +1 -1
  15. package/dist/src/config/connection-gater.d.ts.map +1 -1
  16. package/dist/src/config.d.ts.map +1 -1
  17. package/dist/src/config.js +1 -2
  18. package/dist/src/config.js.map +1 -1
  19. package/dist/src/connection/index.d.ts +4 -6
  20. package/dist/src/connection/index.d.ts.map +1 -1
  21. package/dist/src/connection/index.js +11 -13
  22. package/dist/src/connection/index.js.map +1 -1
  23. package/dist/src/connection-manager/auto-dial.d.ts +3 -6
  24. package/dist/src/connection-manager/auto-dial.d.ts.map +1 -1
  25. package/dist/src/connection-manager/auto-dial.js +21 -21
  26. package/dist/src/connection-manager/auto-dial.js.map +1 -1
  27. package/dist/src/connection-manager/connection-pruner.d.ts +3 -5
  28. package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -1
  29. package/dist/src/connection-manager/connection-pruner.js +8 -8
  30. package/dist/src/connection-manager/connection-pruner.js.map +1 -1
  31. package/dist/src/connection-manager/constants.defaults.d.ts +0 -4
  32. package/dist/src/connection-manager/constants.defaults.d.ts.map +1 -1
  33. package/dist/src/connection-manager/constants.defaults.js +0 -4
  34. package/dist/src/connection-manager/constants.defaults.js.map +1 -1
  35. package/dist/src/connection-manager/dial-queue.d.ts +3 -10
  36. package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
  37. package/dist/src/connection-manager/dial-queue.js +30 -38
  38. package/dist/src/connection-manager/dial-queue.js.map +1 -1
  39. package/dist/src/connection-manager/index.d.ts +3 -18
  40. package/dist/src/connection-manager/index.d.ts.map +1 -1
  41. package/dist/src/connection-manager/index.js +17 -18
  42. package/dist/src/connection-manager/index.js.map +1 -1
  43. package/dist/src/connection-manager/utils.js +1 -1
  44. package/dist/src/connection-manager/utils.js.map +1 -1
  45. package/dist/src/content-routing/index.d.ts +1 -5
  46. package/dist/src/content-routing/index.d.ts.map +1 -1
  47. package/dist/src/content-routing/index.js +2 -2
  48. package/dist/src/content-routing/index.js.map +1 -1
  49. package/dist/src/content-routing/utils.d.ts +1 -2
  50. package/dist/src/content-routing/utils.d.ts.map +1 -1
  51. package/dist/src/content-routing/utils.js +1 -1
  52. package/dist/src/content-routing/utils.js.map +1 -1
  53. package/dist/src/errors.d.ts +0 -2
  54. package/dist/src/errors.d.ts.map +1 -1
  55. package/dist/src/errors.js +0 -2
  56. package/dist/src/errors.js.map +1 -1
  57. package/dist/src/get-peer.d.ts +1 -1
  58. package/dist/src/get-peer.d.ts.map +1 -1
  59. package/dist/src/get-peer.js +1 -5
  60. package/dist/src/get-peer.js.map +1 -1
  61. package/dist/src/index.d.ts +5 -16
  62. package/dist/src/index.d.ts.map +1 -1
  63. package/dist/src/index.js.map +1 -1
  64. package/dist/src/libp2p.d.ts +4 -12
  65. package/dist/src/libp2p.d.ts.map +1 -1
  66. package/dist/src/libp2p.js +31 -65
  67. package/dist/src/libp2p.js.map +1 -1
  68. package/dist/src/peer-routing.d.ts +6 -6
  69. package/dist/src/peer-routing.d.ts.map +1 -1
  70. package/dist/src/peer-routing.js +12 -9
  71. package/dist/src/peer-routing.js.map +1 -1
  72. package/dist/src/registrar.d.ts +5 -7
  73. package/dist/src/registrar.d.ts.map +1 -1
  74. package/dist/src/registrar.js +4 -4
  75. package/dist/src/registrar.js.map +1 -1
  76. package/dist/src/transport-manager.d.ts +5 -9
  77. package/dist/src/transport-manager.d.ts.map +1 -1
  78. package/dist/src/transport-manager.js +12 -13
  79. package/dist/src/transport-manager.js.map +1 -1
  80. package/dist/src/upgrader.d.ts +8 -19
  81. package/dist/src/upgrader.d.ts.map +1 -1
  82. package/dist/src/upgrader.js +75 -38
  83. package/dist/src/upgrader.js.map +1 -1
  84. package/dist/src/version.d.ts +1 -1
  85. package/dist/src/version.d.ts.map +1 -1
  86. package/dist/src/version.js +1 -1
  87. package/dist/src/version.js.map +1 -1
  88. package/dist/typedoc-urls.json +8 -69
  89. package/package.json +37 -106
  90. package/src/address-manager/index.ts +6 -9
  91. package/src/components.ts +5 -16
  92. package/src/config/connection-gater.browser.ts +1 -1
  93. package/src/config/connection-gater.ts +1 -1
  94. package/src/config.ts +1 -2
  95. package/src/connection/index.ts +12 -17
  96. package/src/connection-manager/auto-dial.ts +23 -26
  97. package/src/connection-manager/connection-pruner.ts +10 -12
  98. package/src/connection-manager/constants.defaults.ts +0 -5
  99. package/src/connection-manager/dial-queue.ts +31 -46
  100. package/src/connection-manager/index.ts +19 -36
  101. package/src/connection-manager/utils.ts +1 -1
  102. package/src/content-routing/index.ts +3 -7
  103. package/src/content-routing/utils.ts +2 -3
  104. package/src/errors.ts +0 -2
  105. package/src/get-peer.ts +2 -7
  106. package/src/index.ts +6 -17
  107. package/src/libp2p.ts +32 -80
  108. package/src/peer-routing.ts +16 -15
  109. package/src/registrar.ts +8 -12
  110. package/src/transport-manager.ts +15 -22
  111. package/src/upgrader.ts +110 -64
  112. package/src/version.ts +1 -1
  113. package/dist/src/autonat/constants.d.ts +0 -18
  114. package/dist/src/autonat/constants.d.ts.map +0 -1
  115. package/dist/src/autonat/constants.js +0 -18
  116. package/dist/src/autonat/constants.js.map +0 -1
  117. package/dist/src/autonat/index.d.ts +0 -62
  118. package/dist/src/autonat/index.d.ts.map +0 -1
  119. package/dist/src/autonat/index.js +0 -447
  120. package/dist/src/autonat/index.js.map +0 -1
  121. package/dist/src/autonat/pb/index.d.ts +0 -57
  122. package/dist/src/autonat/pb/index.d.ts.map +0 -1
  123. package/dist/src/autonat/pb/index.js +0 -250
  124. package/dist/src/autonat/pb/index.js.map +0 -1
  125. package/dist/src/circuit-relay/constants.d.ts +0 -50
  126. package/dist/src/circuit-relay/constants.d.ts.map +0 -1
  127. package/dist/src/circuit-relay/constants.js +0 -56
  128. package/dist/src/circuit-relay/constants.js.map +0 -1
  129. package/dist/src/circuit-relay/index.d.ts +0 -55
  130. package/dist/src/circuit-relay/index.d.ts.map +0 -1
  131. package/dist/src/circuit-relay/index.js +0 -38
  132. package/dist/src/circuit-relay/index.js.map +0 -1
  133. package/dist/src/circuit-relay/pb/index.d.ts +0 -93
  134. package/dist/src/circuit-relay/pb/index.d.ts.map +0 -1
  135. package/dist/src/circuit-relay/pb/index.js +0 -425
  136. package/dist/src/circuit-relay/pb/index.js.map +0 -1
  137. package/dist/src/circuit-relay/server/advert-service.d.ts +0 -43
  138. package/dist/src/circuit-relay/server/advert-service.d.ts.map +0 -1
  139. package/dist/src/circuit-relay/server/advert-service.js +0 -73
  140. package/dist/src/circuit-relay/server/advert-service.js.map +0 -1
  141. package/dist/src/circuit-relay/server/index.d.ts +0 -65
  142. package/dist/src/circuit-relay/server/index.d.ts.map +0 -1
  143. package/dist/src/circuit-relay/server/index.js +0 -312
  144. package/dist/src/circuit-relay/server/index.js.map +0 -1
  145. package/dist/src/circuit-relay/server/reservation-store.d.ts +0 -49
  146. package/dist/src/circuit-relay/server/reservation-store.d.ts.map +0 -1
  147. package/dist/src/circuit-relay/server/reservation-store.js +0 -65
  148. package/dist/src/circuit-relay/server/reservation-store.js.map +0 -1
  149. package/dist/src/circuit-relay/server/reservation-voucher.d.ts +0 -18
  150. package/dist/src/circuit-relay/server/reservation-voucher.d.ts.map +0 -1
  151. package/dist/src/circuit-relay/server/reservation-voucher.js +0 -36
  152. package/dist/src/circuit-relay/server/reservation-voucher.js.map +0 -1
  153. package/dist/src/circuit-relay/transport/discovery.d.ts +0 -45
  154. package/dist/src/circuit-relay/transport/discovery.d.ts.map +0 -1
  155. package/dist/src/circuit-relay/transport/discovery.js +0 -97
  156. package/dist/src/circuit-relay/transport/discovery.js.map +0 -1
  157. package/dist/src/circuit-relay/transport/index.d.ts +0 -57
  158. package/dist/src/circuit-relay/transport/index.d.ts.map +0 -1
  159. package/dist/src/circuit-relay/transport/index.js +0 -276
  160. package/dist/src/circuit-relay/transport/index.js.map +0 -1
  161. package/dist/src/circuit-relay/transport/listener.d.ts +0 -9
  162. package/dist/src/circuit-relay/transport/listener.d.ts.map +0 -1
  163. package/dist/src/circuit-relay/transport/listener.js +0 -66
  164. package/dist/src/circuit-relay/transport/listener.js.map +0 -1
  165. package/dist/src/circuit-relay/transport/reservation-store.d.ts +0 -72
  166. package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +0 -1
  167. package/dist/src/circuit-relay/transport/reservation-store.js +0 -209
  168. package/dist/src/circuit-relay/transport/reservation-store.js.map +0 -1
  169. package/dist/src/circuit-relay/utils.d.ts +0 -13
  170. package/dist/src/circuit-relay/utils.d.ts.map +0 -1
  171. package/dist/src/circuit-relay/utils.js +0 -108
  172. package/dist/src/circuit-relay/utils.js.map +0 -1
  173. package/dist/src/dcutr/dcutr.d.ts +0 -43
  174. package/dist/src/dcutr/dcutr.d.ts.map +0 -1
  175. package/dist/src/dcutr/dcutr.js +0 -313
  176. package/dist/src/dcutr/dcutr.js.map +0 -1
  177. package/dist/src/dcutr/index.d.ts +0 -92
  178. package/dist/src/dcutr/index.d.ts.map +0 -1
  179. package/dist/src/dcutr/index.js +0 -63
  180. package/dist/src/dcutr/index.js.map +0 -1
  181. package/dist/src/dcutr/pb/message.d.ts +0 -20
  182. package/dist/src/dcutr/pb/message.d.ts.map +0 -1
  183. package/dist/src/dcutr/pb/message.js +0 -77
  184. package/dist/src/dcutr/pb/message.js.map +0 -1
  185. package/dist/src/dcutr/utils.d.ts +0 -8
  186. package/dist/src/dcutr/utils.d.ts.map +0 -1
  187. package/dist/src/dcutr/utils.js +0 -27
  188. package/dist/src/dcutr/utils.js.map +0 -1
  189. package/dist/src/fetch/constants.d.ts +0 -3
  190. package/dist/src/fetch/constants.d.ts.map +0 -1
  191. package/dist/src/fetch/constants.js +0 -4
  192. package/dist/src/fetch/constants.js.map +0 -1
  193. package/dist/src/fetch/index.d.ts +0 -61
  194. package/dist/src/fetch/index.d.ts.map +0 -1
  195. package/dist/src/fetch/index.js +0 -205
  196. package/dist/src/fetch/index.js.map +0 -1
  197. package/dist/src/fetch/pb/proto.d.ts +0 -28
  198. package/dist/src/fetch/pb/proto.d.ts.map +0 -1
  199. package/dist/src/fetch/pb/proto.js +0 -120
  200. package/dist/src/fetch/pb/proto.js.map +0 -1
  201. package/dist/src/identify/consts.d.ts +0 -10
  202. package/dist/src/identify/consts.d.ts.map +0 -1
  203. package/dist/src/identify/consts.js +0 -11
  204. package/dist/src/identify/consts.js.map +0 -1
  205. package/dist/src/identify/identify.d.ts +0 -54
  206. package/dist/src/identify/identify.d.ts.map +0 -1
  207. package/dist/src/identify/identify.js +0 -447
  208. package/dist/src/identify/identify.js.map +0 -1
  209. package/dist/src/identify/index.d.ts +0 -72
  210. package/dist/src/identify/index.d.ts.map +0 -1
  211. package/dist/src/identify/index.js +0 -15
  212. package/dist/src/identify/index.js.map +0 -1
  213. package/dist/src/identify/pb/message.d.ts +0 -17
  214. package/dist/src/identify/pb/message.d.ts.map +0 -1
  215. package/dist/src/identify/pb/message.js +0 -98
  216. package/dist/src/identify/pb/message.js.map +0 -1
  217. package/dist/src/insecure/index.d.ts +0 -26
  218. package/dist/src/insecure/index.d.ts.map +0 -1
  219. package/dist/src/insecure/index.js +0 -110
  220. package/dist/src/insecure/index.js.map +0 -1
  221. package/dist/src/insecure/pb/proto.d.ts +0 -30
  222. package/dist/src/insecure/pb/proto.d.ts.map +0 -1
  223. package/dist/src/insecure/pb/proto.js +0 -127
  224. package/dist/src/insecure/pb/proto.js.map +0 -1
  225. package/dist/src/ping/constants.d.ts +0 -9
  226. package/dist/src/ping/constants.d.ts.map +0 -1
  227. package/dist/src/ping/constants.js +0 -15
  228. package/dist/src/ping/constants.js.map +0 -1
  229. package/dist/src/ping/index.d.ts +0 -24
  230. package/dist/src/ping/index.d.ts.map +0 -1
  231. package/dist/src/ping/index.js +0 -115
  232. package/dist/src/ping/index.js.map +0 -1
  233. package/dist/src/pnet/crypto.d.ts +0 -18
  234. package/dist/src/pnet/crypto.d.ts.map +0 -1
  235. package/dist/src/pnet/crypto.js +0 -60
  236. package/dist/src/pnet/crypto.js.map +0 -1
  237. package/dist/src/pnet/errors.d.ts +0 -6
  238. package/dist/src/pnet/errors.d.ts.map +0 -1
  239. package/dist/src/pnet/errors.js +0 -6
  240. package/dist/src/pnet/errors.js.map +0 -1
  241. package/dist/src/pnet/index.d.ts +0 -31
  242. package/dist/src/pnet/index.d.ts.map +0 -1
  243. package/dist/src/pnet/index.js +0 -97
  244. package/dist/src/pnet/index.js.map +0 -1
  245. package/dist/src/pnet/key-generator.d.ts +0 -11
  246. package/dist/src/pnet/key-generator.d.ts.map +0 -1
  247. package/dist/src/pnet/key-generator.js +0 -22
  248. package/dist/src/pnet/key-generator.js.map +0 -1
  249. package/dist/src/upnp-nat/index.d.ts +0 -71
  250. package/dist/src/upnp-nat/index.d.ts.map +0 -1
  251. package/dist/src/upnp-nat/index.js +0 -136
  252. package/dist/src/upnp-nat/index.js.map +0 -1
  253. package/dist/src/utils/peer-job-queue.d.ts +0 -33
  254. package/dist/src/utils/peer-job-queue.d.ts.map +0 -1
  255. package/dist/src/utils/peer-job-queue.js +0 -82
  256. package/dist/src/utils/peer-job-queue.js.map +0 -1
  257. package/src/autonat/constants.ts +0 -19
  258. package/src/autonat/index.ts +0 -597
  259. package/src/autonat/pb/index.proto +0 -35
  260. package/src/autonat/pb/index.ts +0 -320
  261. package/src/circuit-relay/constants.ts +0 -72
  262. package/src/circuit-relay/index.ts +0 -59
  263. package/src/circuit-relay/pb/index.proto +0 -67
  264. package/src/circuit-relay/pb/index.ts +0 -539
  265. package/src/circuit-relay/server/advert-service.ts +0 -108
  266. package/src/circuit-relay/server/index.ts +0 -443
  267. package/src/circuit-relay/server/reservation-store.ts +0 -116
  268. package/src/circuit-relay/server/reservation-voucher.ts +0 -51
  269. package/src/circuit-relay/transport/discovery.ts +0 -136
  270. package/src/circuit-relay/transport/index.ts +0 -396
  271. package/src/circuit-relay/transport/listener.ts +0 -97
  272. package/src/circuit-relay/transport/reservation-store.ts +0 -312
  273. package/src/circuit-relay/utils.ts +0 -136
  274. package/src/dcutr/dcutr.ts +0 -378
  275. package/src/dcutr/index.ts +0 -102
  276. package/src/dcutr/pb/message.proto +0 -12
  277. package/src/dcutr/pb/message.ts +0 -96
  278. package/src/dcutr/utils.ts +0 -33
  279. package/src/fetch/README.md +0 -41
  280. package/src/fetch/constants.ts +0 -3
  281. package/src/fetch/index.ts +0 -315
  282. package/src/fetch/pb/proto.proto +0 -15
  283. package/src/fetch/pb/proto.ts +0 -153
  284. package/src/identify/README.md +0 -13
  285. package/src/identify/consts.ts +0 -12
  286. package/src/identify/identify.ts +0 -561
  287. package/src/identify/index.ts +0 -90
  288. package/src/identify/pb/message.proto +0 -30
  289. package/src/identify/pb/message.ts +0 -126
  290. package/src/insecure/index.ts +0 -138
  291. package/src/insecure/pb/proto.proto +0 -18
  292. package/src/insecure/pb/proto.ts +0 -161
  293. package/src/ping/constants.ts +0 -15
  294. package/src/ping/index.ts +0 -170
  295. package/src/pnet/README.md +0 -68
  296. package/src/pnet/crypto.ts +0 -67
  297. package/src/pnet/errors.ts +0 -5
  298. package/src/pnet/index.ts +0 -126
  299. package/src/pnet/key-generator.ts +0 -23
  300. package/src/upnp-nat/index.ts +0 -212
  301. package/src/utils/peer-job-queue.ts +0 -119
@@ -1,62 +0,0 @@
1
- /**
2
- * @packageDocumentation
3
- *
4
- * Use the `autoNATService` function to add support for the [AutoNAT protocol](https://docs.libp2p.io/concepts/nat/autonat/)
5
- * to libp2p.
6
- *
7
- * @example
8
- *
9
- * ```typescript
10
- * import { createLibp2p } from 'libp2p'
11
- * import { autoNATService } from 'libp2p/autonat'
12
- *
13
- * const node = await createLibp2p({
14
- * // ...other options
15
- * services: {
16
- * autoNAT: autoNATService()
17
- * }
18
- * })
19
- * ```
20
- */
21
- import type { PeerId } from '@libp2p/interface/peer-id';
22
- import type { PeerRouting } from '@libp2p/interface/peer-routing';
23
- import type { AddressManager } from '@libp2p/interface-internal/address-manager';
24
- import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager';
25
- import type { Registrar } from '@libp2p/interface-internal/registrar';
26
- import type { TransportManager } from '@libp2p/interface-internal/transport-manager';
27
- export interface AutoNATServiceInit {
28
- /**
29
- * Allows overriding the protocol prefix used
30
- */
31
- protocolPrefix?: string;
32
- /**
33
- * How long we should wait for a remote peer to verify our external address
34
- */
35
- timeout?: number;
36
- /**
37
- * How long to wait after startup before trying to verify our external address
38
- */
39
- startupDelay?: number;
40
- /**
41
- * Verify our external addresses this often
42
- */
43
- refreshInterval?: number;
44
- /**
45
- * How many parallel inbound autoNAT streams we allow per-connection
46
- */
47
- maxInboundStreams?: number;
48
- /**
49
- * How many parallel outbound autoNAT streams we allow per-connection
50
- */
51
- maxOutboundStreams?: number;
52
- }
53
- export interface AutoNATComponents {
54
- registrar: Registrar;
55
- addressManager: AddressManager;
56
- transportManager: TransportManager;
57
- peerId: PeerId;
58
- connectionManager: ConnectionManager;
59
- peerRouting: PeerRouting;
60
- }
61
- export declare function autoNATService(init?: AutoNATServiceInit): (components: AutoNATComponents) => unknown;
62
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/autonat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAsBH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAEjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAA;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAA;AACtF,OAAO,KAAK,EAAsB,SAAS,EAAE,MAAM,sCAAsC,CAAA;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AASpF,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,SAAS,CAAA;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,WAAW,EAAE,WAAW,CAAA;CACzB;AAgfD,wBAAgB,cAAc,CAAE,IAAI,GAAE,kBAAuB,GAAG,CAAC,UAAU,EAAE,iBAAiB,KAAK,OAAO,CAIzG"}
@@ -1,447 +0,0 @@
1
- /**
2
- * @packageDocumentation
3
- *
4
- * Use the `autoNATService` function to add support for the [AutoNAT protocol](https://docs.libp2p.io/concepts/nat/autonat/)
5
- * to libp2p.
6
- *
7
- * @example
8
- *
9
- * ```typescript
10
- * import { createLibp2p } from 'libp2p'
11
- * import { autoNATService } from 'libp2p/autonat'
12
- *
13
- * const node = await createLibp2p({
14
- * // ...other options
15
- * services: {
16
- * autoNAT: autoNATService()
17
- * }
18
- * })
19
- * ```
20
- */
21
- import { CodeError } from '@libp2p/interface/errors';
22
- import { setMaxListeners } from '@libp2p/interface/events';
23
- import { logger } from '@libp2p/logger';
24
- import { peerIdFromBytes } from '@libp2p/peer-id';
25
- import { createEd25519PeerId } from '@libp2p/peer-id-factory';
26
- import { multiaddr, protocols } from '@multiformats/multiaddr';
27
- import first from 'it-first';
28
- import * as lp from 'it-length-prefixed';
29
- import map from 'it-map';
30
- import parallel from 'it-parallel';
31
- import { pipe } from 'it-pipe';
32
- import isPrivateIp from 'private-ip';
33
- import { codes } from '../errors.js';
34
- import { MAX_INBOUND_STREAMS, MAX_OUTBOUND_STREAMS, PROTOCOL_NAME, PROTOCOL_PREFIX, PROTOCOL_VERSION, REFRESH_INTERVAL, STARTUP_DELAY, TIMEOUT } from './constants.js';
35
- import { Message } from './pb/index.js';
36
- const log = logger('libp2p:autonat');
37
- // if more than 3 peers manage to dial us on what we believe to be our external
38
- // IP then we are convinced that it is, in fact, our external IP
39
- // https://github.com/libp2p/specs/blob/master/autonat/README.md#autonat-protocol
40
- const REQUIRED_SUCCESSFUL_DIALS = 4;
41
- class DefaultAutoNATService {
42
- components;
43
- startupDelay;
44
- refreshInterval;
45
- protocol;
46
- timeout;
47
- maxInboundStreams;
48
- maxOutboundStreams;
49
- verifyAddressTimeout;
50
- started;
51
- constructor(components, init) {
52
- this.components = components;
53
- this.started = false;
54
- this.protocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`;
55
- this.timeout = init.timeout ?? TIMEOUT;
56
- this.maxInboundStreams = init.maxInboundStreams ?? MAX_INBOUND_STREAMS;
57
- this.maxOutboundStreams = init.maxOutboundStreams ?? MAX_OUTBOUND_STREAMS;
58
- this.startupDelay = init.startupDelay ?? STARTUP_DELAY;
59
- this.refreshInterval = init.refreshInterval ?? REFRESH_INTERVAL;
60
- this._verifyExternalAddresses = this._verifyExternalAddresses.bind(this);
61
- }
62
- isStarted() {
63
- return this.started;
64
- }
65
- async start() {
66
- if (this.started) {
67
- return;
68
- }
69
- await this.components.registrar.handle(this.protocol, (data) => {
70
- void this.handleIncomingAutonatStream(data)
71
- .catch(err => {
72
- log.error('error handling incoming autonat stream', err);
73
- });
74
- }, {
75
- maxInboundStreams: this.maxInboundStreams,
76
- maxOutboundStreams: this.maxOutboundStreams
77
- });
78
- this.verifyAddressTimeout = setTimeout(this._verifyExternalAddresses, this.startupDelay);
79
- this.started = true;
80
- }
81
- async stop() {
82
- await this.components.registrar.unhandle(this.protocol);
83
- clearTimeout(this.verifyAddressTimeout);
84
- this.started = false;
85
- }
86
- /**
87
- * Handle an incoming AutoNAT request
88
- */
89
- async handleIncomingAutonatStream(data) {
90
- const signal = AbortSignal.timeout(this.timeout);
91
- const onAbort = () => {
92
- data.stream.abort(new CodeError('handleIncomingAutonatStream timeout', codes.ERR_TIMEOUT));
93
- };
94
- signal.addEventListener('abort', onAbort, { once: true });
95
- // this controller may be used while dialing lots of peers so prevent MaxListenersExceededWarning
96
- // appearing in the console
97
- setMaxListeners(Infinity, signal);
98
- const ourHosts = this.components.addressManager.getAddresses()
99
- .map(ma => ma.toOptions().host);
100
- try {
101
- const self = this;
102
- await pipe(data.stream, (source) => lp.decode(source), async function* (stream) {
103
- const buf = await first(stream);
104
- if (buf == null) {
105
- log('no message received');
106
- yield Message.encode({
107
- type: Message.MessageType.DIAL_RESPONSE,
108
- dialResponse: {
109
- status: Message.ResponseStatus.E_BAD_REQUEST,
110
- statusText: 'No message was sent'
111
- }
112
- });
113
- return;
114
- }
115
- let request;
116
- try {
117
- request = Message.decode(buf);
118
- }
119
- catch (err) {
120
- log.error('could not decode message', err);
121
- yield Message.encode({
122
- type: Message.MessageType.DIAL_RESPONSE,
123
- dialResponse: {
124
- status: Message.ResponseStatus.E_BAD_REQUEST,
125
- statusText: 'Could not decode message'
126
- }
127
- });
128
- return;
129
- }
130
- const dialRequest = request.dial;
131
- if (dialRequest == null) {
132
- log.error('dial was missing from message');
133
- yield Message.encode({
134
- type: Message.MessageType.DIAL_RESPONSE,
135
- dialResponse: {
136
- status: Message.ResponseStatus.E_BAD_REQUEST,
137
- statusText: 'No Dial message found in message'
138
- }
139
- });
140
- return;
141
- }
142
- let peerId;
143
- const peer = dialRequest.peer;
144
- if (peer == null || peer.id == null) {
145
- log.error('PeerId missing from message');
146
- yield Message.encode({
147
- type: Message.MessageType.DIAL_RESPONSE,
148
- dialResponse: {
149
- status: Message.ResponseStatus.E_BAD_REQUEST,
150
- statusText: 'missing peer info'
151
- }
152
- });
153
- return;
154
- }
155
- try {
156
- peerId = peerIdFromBytes(peer.id);
157
- }
158
- catch (err) {
159
- log.error('invalid PeerId', err);
160
- yield Message.encode({
161
- type: Message.MessageType.DIAL_RESPONSE,
162
- dialResponse: {
163
- status: Message.ResponseStatus.E_BAD_REQUEST,
164
- statusText: 'bad peer id'
165
- }
166
- });
167
- return;
168
- }
169
- log('incoming request from %p', peerId);
170
- // reject any dial requests that arrive via relays
171
- if (!data.connection.remotePeer.equals(peerId)) {
172
- log('target peer %p did not equal sending peer %p', peerId, data.connection.remotePeer);
173
- yield Message.encode({
174
- type: Message.MessageType.DIAL_RESPONSE,
175
- dialResponse: {
176
- status: Message.ResponseStatus.E_BAD_REQUEST,
177
- statusText: 'peer id mismatch'
178
- }
179
- });
180
- return;
181
- }
182
- // get a list of multiaddrs to dial
183
- const multiaddrs = peer.addrs
184
- .map(buf => multiaddr(buf))
185
- .filter(ma => {
186
- const isFromSameHost = ma.toOptions().host === data.connection.remoteAddr.toOptions().host;
187
- log.trace('request to dial %a was sent from %a is same host %s', ma, data.connection.remoteAddr, isFromSameHost);
188
- // skip any Multiaddrs where the target node's IP does not match the sending node's IP
189
- return isFromSameHost;
190
- })
191
- .filter(ma => {
192
- const host = ma.toOptions().host;
193
- const isPublicIp = !(isPrivateIp(host) ?? false);
194
- log.trace('host %s was public %s', host, isPublicIp);
195
- // don't try to dial private addresses
196
- return isPublicIp;
197
- })
198
- .filter(ma => {
199
- const host = ma.toOptions().host;
200
- const isNotOurHost = !ourHosts.includes(host);
201
- log.trace('host %s was not our host %s', host, isNotOurHost);
202
- // don't try to dial nodes on the same host as us
203
- return isNotOurHost;
204
- })
205
- .filter(ma => {
206
- const isSupportedTransport = Boolean(self.components.transportManager.transportForMultiaddr(ma));
207
- log.trace('transport for %a is supported %s', ma, isSupportedTransport);
208
- // skip any Multiaddrs that have transports we do not support
209
- return isSupportedTransport;
210
- })
211
- .map(ma => {
212
- if (ma.getPeerId() == null) {
213
- // make sure we have the PeerId as part of the Multiaddr
214
- ma = ma.encapsulate(`/p2p/${peerId.toString()}`);
215
- }
216
- return ma;
217
- });
218
- // make sure we have something to dial
219
- if (multiaddrs.length === 0) {
220
- log('no valid multiaddrs for %p in message', peerId);
221
- yield Message.encode({
222
- type: Message.MessageType.DIAL_RESPONSE,
223
- dialResponse: {
224
- status: Message.ResponseStatus.E_DIAL_REFUSED,
225
- statusText: 'no dialable addresses'
226
- }
227
- });
228
- return;
229
- }
230
- log('dial multiaddrs %s for peer %p', multiaddrs.map(ma => ma.toString()).join(', '), peerId);
231
- let errorMessage = '';
232
- let lastMultiaddr = multiaddrs[0];
233
- for await (const multiaddr of multiaddrs) {
234
- let connection;
235
- lastMultiaddr = multiaddr;
236
- try {
237
- connection = await self.components.connectionManager.openConnection(multiaddr, {
238
- signal
239
- });
240
- if (!connection.remoteAddr.equals(multiaddr)) {
241
- log.error('tried to dial %a but dialed %a', multiaddr, connection.remoteAddr);
242
- throw new Error('Unexpected remote address');
243
- }
244
- log('Success %p', peerId);
245
- yield Message.encode({
246
- type: Message.MessageType.DIAL_RESPONSE,
247
- dialResponse: {
248
- status: Message.ResponseStatus.OK,
249
- addr: connection.remoteAddr.decapsulateCode(protocols('p2p').code).bytes
250
- }
251
- });
252
- return;
253
- }
254
- catch (err) {
255
- log('could not dial %p', peerId, err);
256
- errorMessage = err.message;
257
- }
258
- finally {
259
- if (connection != null) {
260
- await connection.close();
261
- }
262
- }
263
- }
264
- yield Message.encode({
265
- type: Message.MessageType.DIAL_RESPONSE,
266
- dialResponse: {
267
- status: Message.ResponseStatus.E_DIAL_ERROR,
268
- statusText: errorMessage,
269
- addr: lastMultiaddr.bytes
270
- }
271
- });
272
- }, (source) => lp.encode(source), data.stream);
273
- }
274
- catch (err) {
275
- log.error('error handling incoming autonat stream', err);
276
- }
277
- finally {
278
- signal.removeEventListener('abort', onAbort);
279
- }
280
- }
281
- _verifyExternalAddresses() {
282
- void this.verifyExternalAddresses()
283
- .catch(err => {
284
- log.error('error verifying external address', err);
285
- });
286
- }
287
- /**
288
- * Our multicodec topology noticed a new peer that supports autonat
289
- */
290
- async verifyExternalAddresses() {
291
- clearTimeout(this.verifyAddressTimeout);
292
- // Do not try to push if we are not running
293
- if (!this.isStarted()) {
294
- return;
295
- }
296
- const addressManager = this.components.addressManager;
297
- const multiaddrs = addressManager.getObservedAddrs()
298
- .filter(ma => {
299
- const options = ma.toOptions();
300
- return !(isPrivateIp(options.host) ?? false);
301
- });
302
- if (multiaddrs.length === 0) {
303
- log('no public addresses found, not requesting verification');
304
- this.verifyAddressTimeout = setTimeout(this._verifyExternalAddresses, this.refreshInterval);
305
- return;
306
- }
307
- const signal = AbortSignal.timeout(this.timeout);
308
- // this controller may be used while dialing lots of peers so prevent MaxListenersExceededWarning
309
- // appearing in the console
310
- setMaxListeners(Infinity, signal);
311
- const self = this;
312
- try {
313
- log('verify multiaddrs %s', multiaddrs.map(ma => ma.toString()).join(', '));
314
- const request = Message.encode({
315
- type: Message.MessageType.DIAL,
316
- dial: {
317
- peer: {
318
- id: this.components.peerId.toBytes(),
319
- addrs: multiaddrs.map(map => map.bytes)
320
- }
321
- }
322
- });
323
- // find some random peers
324
- const randomPeer = await createEd25519PeerId();
325
- const randomCid = randomPeer.toBytes();
326
- const results = {};
327
- const networkSegments = [];
328
- const verifyAddress = async (peer) => {
329
- let onAbort = () => { };
330
- try {
331
- log('asking %p to verify multiaddr', peer.id);
332
- const connection = await self.components.connectionManager.openConnection(peer.id, {
333
- signal
334
- });
335
- const stream = await connection.newStream(this.protocol, {
336
- signal
337
- });
338
- onAbort = () => { stream.abort(new CodeError('verifyAddress timeout', codes.ERR_TIMEOUT)); };
339
- signal.addEventListener('abort', onAbort, { once: true });
340
- const buf = await pipe([request], (source) => lp.encode(source), stream, (source) => lp.decode(source), async (stream) => first(stream));
341
- if (buf == null) {
342
- log('no response received from %p', connection.remotePeer);
343
- return undefined;
344
- }
345
- const response = Message.decode(buf);
346
- if (response.type !== Message.MessageType.DIAL_RESPONSE || response.dialResponse == null) {
347
- log('invalid autonat response from %p', connection.remotePeer);
348
- return undefined;
349
- }
350
- if (response.dialResponse.status === Message.ResponseStatus.OK) {
351
- // make sure we use different network segments
352
- const options = connection.remoteAddr.toOptions();
353
- let segment;
354
- if (options.family === 4) {
355
- const octets = options.host.split('.');
356
- segment = octets[0];
357
- }
358
- else if (options.family === 6) {
359
- const octets = options.host.split(':');
360
- segment = octets[0];
361
- }
362
- else {
363
- log('remote address "%s" was not IP4 or IP6?', options.host);
364
- return undefined;
365
- }
366
- if (networkSegments.includes(segment)) {
367
- log('already have response from network segment %d - %s', segment, options.host);
368
- return undefined;
369
- }
370
- networkSegments.push(segment);
371
- }
372
- return response.dialResponse;
373
- }
374
- catch (err) {
375
- log.error('error asking remote to verify multiaddr', err);
376
- }
377
- finally {
378
- signal.removeEventListener('abort', onAbort);
379
- }
380
- };
381
- for await (const dialResponse of parallel(map(this.components.peerRouting.getClosestPeers(randomCid, {
382
- signal
383
- }), (peer) => async () => verifyAddress(peer)), {
384
- concurrency: REQUIRED_SUCCESSFUL_DIALS
385
- })) {
386
- try {
387
- if (dialResponse == null) {
388
- continue;
389
- }
390
- // they either told us which address worked/didn't work, or we only sent them one address
391
- const addr = dialResponse.addr == null ? multiaddrs[0] : multiaddr(dialResponse.addr);
392
- log('autonat response for %a is %s', addr, dialResponse.status);
393
- if (dialResponse.status === Message.ResponseStatus.E_BAD_REQUEST) {
394
- // the remote could not parse our request
395
- continue;
396
- }
397
- if (dialResponse.status === Message.ResponseStatus.E_DIAL_REFUSED) {
398
- // the remote could not honour our request
399
- continue;
400
- }
401
- if (dialResponse.addr == null && multiaddrs.length > 1) {
402
- // we sent the remote multiple addrs but they didn't tell us which ones worked/didn't work
403
- continue;
404
- }
405
- if (!multiaddrs.some(ma => ma.equals(addr))) {
406
- log('peer reported %a as %s but it was not in our observed address list', addr, dialResponse.status);
407
- continue;
408
- }
409
- const addrStr = addr.toString();
410
- if (results[addrStr] == null) {
411
- results[addrStr] = { success: 0, failure: 0 };
412
- }
413
- if (dialResponse.status === Message.ResponseStatus.OK) {
414
- results[addrStr].success++;
415
- }
416
- else if (dialResponse.status === Message.ResponseStatus.E_DIAL_ERROR) {
417
- results[addrStr].failure++;
418
- }
419
- if (results[addrStr].success === REQUIRED_SUCCESSFUL_DIALS) {
420
- // we are now convinced
421
- log('%a is externally dialable', addr);
422
- addressManager.confirmObservedAddr(addr);
423
- return;
424
- }
425
- if (results[addrStr].failure === REQUIRED_SUCCESSFUL_DIALS) {
426
- // we are now unconvinced
427
- log('%a is not externally dialable', addr);
428
- addressManager.removeObservedAddr(addr);
429
- return;
430
- }
431
- }
432
- catch (err) {
433
- log.error('could not verify external address', err);
434
- }
435
- }
436
- }
437
- finally {
438
- this.verifyAddressTimeout = setTimeout(this._verifyExternalAddresses, this.refreshInterval);
439
- }
440
- }
441
- }
442
- export function autoNATService(init = {}) {
443
- return (components) => {
444
- return new DefaultAutoNATService(components, init);
445
- };
446
- }
447
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/autonat/index.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- import type { Codec } from 'protons-runtime';
2
- import type { Uint8ArrayList } from 'uint8arraylist';
3
- export interface Message {
4
- type?: Message.MessageType;
5
- dial?: Message.Dial;
6
- dialResponse?: Message.DialResponse;
7
- }
8
- export declare namespace Message {
9
- enum MessageType {
10
- DIAL = "DIAL",
11
- DIAL_RESPONSE = "DIAL_RESPONSE"
12
- }
13
- namespace MessageType {
14
- const codec: () => Codec<MessageType>;
15
- }
16
- enum ResponseStatus {
17
- OK = "OK",
18
- E_DIAL_ERROR = "E_DIAL_ERROR",
19
- E_DIAL_REFUSED = "E_DIAL_REFUSED",
20
- E_BAD_REQUEST = "E_BAD_REQUEST",
21
- E_INTERNAL_ERROR = "E_INTERNAL_ERROR"
22
- }
23
- namespace ResponseStatus {
24
- const codec: () => Codec<ResponseStatus>;
25
- }
26
- interface PeerInfo {
27
- id?: Uint8Array;
28
- addrs: Uint8Array[];
29
- }
30
- namespace PeerInfo {
31
- const codec: () => Codec<PeerInfo>;
32
- const encode: (obj: Partial<PeerInfo>) => Uint8Array;
33
- const decode: (buf: Uint8Array | Uint8ArrayList) => PeerInfo;
34
- }
35
- interface Dial {
36
- peer?: Message.PeerInfo;
37
- }
38
- namespace Dial {
39
- const codec: () => Codec<Dial>;
40
- const encode: (obj: Partial<Dial>) => Uint8Array;
41
- const decode: (buf: Uint8Array | Uint8ArrayList) => Dial;
42
- }
43
- interface DialResponse {
44
- status?: Message.ResponseStatus;
45
- statusText?: string;
46
- addr?: Uint8Array;
47
- }
48
- namespace DialResponse {
49
- const codec: () => Codec<DialResponse>;
50
- const encode: (obj: Partial<DialResponse>) => Uint8Array;
51
- const decode: (buf: Uint8Array | Uint8ArrayList) => DialResponse;
52
- }
53
- const codec: () => Codec<Message>;
54
- const encode: (obj: Partial<Message>) => Uint8Array;
55
- const decode: (buf: Uint8Array | Uint8ArrayList) => Message;
56
- }
57
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/autonat/pb/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAA;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAA;CACpC;AAED,yBAAiB,OAAO,CAAC;IACvB,KAAY,WAAW;QACrB,IAAI,SAAS;QACb,aAAa,kBAAkB;KAChC;IAOD,UAAiB,WAAW,CAAC;QACpB,MAAM,KAAK,QAAO,MAAM,WAAW,CAEzC,CAAA;KACF;IAED,KAAY,cAAc;QACxB,EAAE,OAAO;QACT,YAAY,iBAAiB;QAC7B,cAAc,mBAAmB;QACjC,aAAa,kBAAkB;QAC/B,gBAAgB,qBAAqB;KACtC;IAUD,UAAiB,cAAc,CAAC;QACvB,MAAM,KAAK,QAAO,MAAM,cAAc,CAE5C,CAAA;KACF;IAED,UAAiB,QAAQ;QACvB,EAAE,CAAC,EAAE,UAAU,CAAA;QACf,KAAK,EAAE,UAAU,EAAE,CAAA;KACpB;IAED,UAAiB,QAAQ,CAAC;QAGjB,MAAM,KAAK,QAAO,MAAM,QAAQ,CAkDtC,CAAA;QAEM,MAAM,MAAM,QAAS,QAAQ,QAAQ,CAAC,KAAG,UAE/C,CAAA;QAEM,MAAM,MAAM,QAAS,UAAU,GAAG,cAAc,KAAG,QAEzD,CAAA;KACF;IAED,UAAiB,IAAI;QACnB,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAA;KACxB;IAED,UAAiB,IAAI,CAAC;QAGb,MAAM,KAAK,QAAO,MAAM,IAAI,CAsClC,CAAA;QAEM,MAAM,MAAM,QAAS,QAAQ,IAAI,CAAC,KAAG,UAE3C,CAAA;QAEM,MAAM,MAAM,QAAS,UAAU,GAAG,cAAc,KAAG,IAEzD,CAAA;KACF;IAED,UAAiB,YAAY;QAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAA;QAC/B,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,IAAI,CAAC,EAAE,UAAU,CAAA;KAClB;IAED,UAAiB,YAAY,CAAC;QAGrB,MAAM,KAAK,QAAO,MAAM,YAAY,CAsD1C,CAAA;QAEM,MAAM,MAAM,QAAS,QAAQ,YAAY,CAAC,KAAG,UAEnD,CAAA;QAEM,MAAM,MAAM,QAAS,UAAU,GAAG,cAAc,KAAG,YAEzD,CAAA;KACF;IAIM,MAAM,KAAK,QAAO,MAAM,OAAO,CAsDrC,CAAA;IAEM,MAAM,MAAM,QAAS,QAAQ,OAAO,CAAC,KAAG,UAE9C,CAAA;IAEM,MAAM,MAAM,QAAS,UAAU,GAAG,cAAc,KAAG,OAEzD,CAAA;CACF"}