libp2p 0.44.0 → 0.45.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 (188) hide show
  1. package/dist/index.min.js +30 -30
  2. package/dist/src/address-manager/index.d.ts +8 -4
  3. package/dist/src/address-manager/index.d.ts.map +1 -1
  4. package/dist/src/address-manager/index.js +37 -6
  5. package/dist/src/address-manager/index.js.map +1 -1
  6. package/dist/src/address-manager/utils.d.ts +2 -0
  7. package/dist/src/address-manager/utils.d.ts.map +1 -0
  8. package/dist/src/address-manager/utils.js +12 -0
  9. package/dist/src/address-manager/utils.js.map +1 -0
  10. package/dist/src/autonat/constants.d.ts +16 -2
  11. package/dist/src/autonat/constants.d.ts.map +1 -1
  12. package/dist/src/autonat/constants.js +16 -2
  13. package/dist/src/autonat/constants.js.map +1 -1
  14. package/dist/src/autonat/index.d.ts +12 -33
  15. package/dist/src/autonat/index.d.ts.map +1 -1
  16. package/dist/src/autonat/index.js +36 -30
  17. package/dist/src/autonat/index.js.map +1 -1
  18. package/dist/src/circuit-relay/server/advert-service.d.ts.map +1 -1
  19. package/dist/src/circuit-relay/server/advert-service.js +2 -2
  20. package/dist/src/circuit-relay/server/advert-service.js.map +1 -1
  21. package/dist/src/circuit-relay/server/index.d.ts.map +1 -1
  22. package/dist/src/circuit-relay/server/index.js +10 -3
  23. package/dist/src/circuit-relay/server/index.js.map +1 -1
  24. package/dist/src/circuit-relay/transport/discovery.d.ts.map +1 -1
  25. package/dist/src/circuit-relay/transport/discovery.js +4 -2
  26. package/dist/src/circuit-relay/transport/discovery.js.map +1 -1
  27. package/dist/src/circuit-relay/transport/index.d.ts +3 -0
  28. package/dist/src/circuit-relay/transport/index.d.ts.map +1 -1
  29. package/dist/src/circuit-relay/transport/index.js +6 -4
  30. package/dist/src/circuit-relay/transport/index.js.map +1 -1
  31. package/dist/src/circuit-relay/transport/listener.d.ts.map +1 -1
  32. package/dist/src/circuit-relay/transport/listener.js +30 -26
  33. package/dist/src/circuit-relay/transport/listener.js.map +1 -1
  34. package/dist/src/circuit-relay/transport/reservation-store.d.ts +5 -4
  35. package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +1 -1
  36. package/dist/src/circuit-relay/transport/reservation-store.js +37 -30
  37. package/dist/src/circuit-relay/transport/reservation-store.js.map +1 -1
  38. package/dist/src/components.d.ts +6 -63
  39. package/dist/src/components.d.ts.map +1 -1
  40. package/dist/src/components.js +60 -164
  41. package/dist/src/components.js.map +1 -1
  42. package/dist/src/config/connection-gater.browser.d.ts +8 -0
  43. package/dist/src/config/connection-gater.browser.d.ts.map +1 -0
  44. package/dist/src/config/connection-gater.browser.js +27 -0
  45. package/dist/src/config/connection-gater.browser.js.map +1 -0
  46. package/dist/src/config/connection-gater.d.ts +6 -0
  47. package/dist/src/config/connection-gater.d.ts.map +1 -0
  48. package/dist/src/config/connection-gater.js +18 -0
  49. package/dist/src/config/connection-gater.js.map +1 -0
  50. package/dist/src/config.d.ts +2 -1
  51. package/dist/src/config.d.ts.map +1 -1
  52. package/dist/src/config.js +0 -62
  53. package/dist/src/config.js.map +1 -1
  54. package/dist/src/connection-manager/auto-dial.d.ts +3 -0
  55. package/dist/src/connection-manager/auto-dial.d.ts.map +1 -1
  56. package/dist/src/connection-manager/auto-dial.js +36 -13
  57. package/dist/src/connection-manager/auto-dial.js.map +1 -1
  58. package/dist/src/connection-manager/connection-pruner.d.ts +4 -0
  59. package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -1
  60. package/dist/src/connection-manager/connection-pruner.js +23 -8
  61. package/dist/src/connection-manager/connection-pruner.js.map +1 -1
  62. package/dist/src/connection-manager/dial-queue.d.ts +2 -1
  63. package/dist/src/connection-manager/dial-queue.d.ts.map +1 -1
  64. package/dist/src/connection-manager/dial-queue.js +36 -14
  65. package/dist/src/connection-manager/dial-queue.js.map +1 -1
  66. package/dist/src/connection-manager/index.d.ts +8 -7
  67. package/dist/src/connection-manager/index.d.ts.map +1 -1
  68. package/dist/src/connection-manager/index.js +23 -34
  69. package/dist/src/connection-manager/index.js.map +1 -1
  70. package/dist/src/content-routing/index.d.ts +0 -10
  71. package/dist/src/content-routing/index.d.ts.map +1 -1
  72. package/dist/src/content-routing/index.js +7 -42
  73. package/dist/src/content-routing/index.js.map +1 -1
  74. package/dist/src/content-routing/utils.d.ts.map +1 -1
  75. package/dist/src/content-routing/utils.js +3 -1
  76. package/dist/src/content-routing/utils.js.map +1 -1
  77. package/dist/src/fetch/index.d.ts +13 -35
  78. package/dist/src/fetch/index.d.ts.map +1 -1
  79. package/dist/src/fetch/index.js +7 -9
  80. package/dist/src/fetch/index.js.map +1 -1
  81. package/dist/src/identify/identify.d.ts +53 -0
  82. package/dist/src/identify/identify.d.ts.map +1 -0
  83. package/dist/src/identify/identify.js +405 -0
  84. package/dist/src/identify/identify.js.map +1 -0
  85. package/dist/src/identify/index.d.ts +12 -58
  86. package/dist/src/identify/index.d.ts.map +1 -1
  87. package/dist/src/identify/index.js +5 -388
  88. package/dist/src/identify/index.js.map +1 -1
  89. package/dist/src/index.d.ts +13 -68
  90. package/dist/src/index.d.ts.map +1 -1
  91. package/dist/src/index.js +2 -1
  92. package/dist/src/index.js.map +1 -1
  93. package/dist/src/insecure/index.js.map +1 -1
  94. package/dist/src/libp2p.d.ts +11 -42
  95. package/dist/src/libp2p.d.ts.map +1 -1
  96. package/dist/src/libp2p.js +137 -196
  97. package/dist/src/libp2p.js.map +1 -1
  98. package/dist/src/peer-routing.d.ts +1 -38
  99. package/dist/src/peer-routing.d.ts.map +1 -1
  100. package/dist/src/peer-routing.js +0 -59
  101. package/dist/src/peer-routing.js.map +1 -1
  102. package/dist/src/ping/constants.d.ts +4 -0
  103. package/dist/src/ping/constants.d.ts.map +1 -1
  104. package/dist/src/ping/constants.js +10 -0
  105. package/dist/src/ping/constants.js.map +1 -1
  106. package/dist/src/ping/index.d.ts +10 -27
  107. package/dist/src/ping/index.d.ts.map +1 -1
  108. package/dist/src/ping/index.js +18 -21
  109. package/dist/src/ping/index.js.map +1 -1
  110. package/dist/src/registrar.d.ts +5 -2
  111. package/dist/src/registrar.d.ts.map +1 -1
  112. package/dist/src/registrar.js +27 -25
  113. package/dist/src/registrar.js.map +1 -1
  114. package/dist/src/transport-manager.d.ts +11 -4
  115. package/dist/src/transport-manager.d.ts.map +1 -1
  116. package/dist/src/transport-manager.js +19 -10
  117. package/dist/src/transport-manager.js.map +1 -1
  118. package/dist/src/upgrader.d.ts +15 -10
  119. package/dist/src/upgrader.d.ts.map +1 -1
  120. package/dist/src/upgrader.js +39 -48
  121. package/dist/src/upgrader.js.map +1 -1
  122. package/dist/src/upnp-nat/index.d.ts +42 -0
  123. package/dist/src/upnp-nat/index.d.ts.map +1 -0
  124. package/dist/src/{nat-manager.js → upnp-nat/index.js} +11 -7
  125. package/dist/src/upnp-nat/index.js.map +1 -0
  126. package/dist/src/version.d.ts +1 -1
  127. package/dist/src/version.d.ts.map +1 -1
  128. package/dist/src/version.js +1 -1
  129. package/dist/src/version.js.map +1 -1
  130. package/dist/typedoc-urls.json +25 -10
  131. package/package.json +61 -45
  132. package/src/address-manager/index.ts +50 -8
  133. package/src/address-manager/utils.ts +14 -0
  134. package/src/autonat/constants.ts +17 -2
  135. package/src/autonat/index.ts +53 -45
  136. package/src/circuit-relay/server/advert-service.ts +2 -2
  137. package/src/circuit-relay/server/index.ts +11 -3
  138. package/src/circuit-relay/transport/discovery.ts +5 -3
  139. package/src/circuit-relay/transport/index.ts +9 -4
  140. package/src/circuit-relay/transport/listener.ts +38 -28
  141. package/src/circuit-relay/transport/reservation-store.ts +34 -20
  142. package/src/components.ts +71 -234
  143. package/src/config/connection-gater.browser.ts +31 -0
  144. package/src/config/connection-gater.ts +19 -0
  145. package/src/config.ts +3 -64
  146. package/src/connection-manager/auto-dial.ts +44 -15
  147. package/src/connection-manager/connection-pruner.ts +28 -8
  148. package/src/connection-manager/dial-queue.ts +41 -21
  149. package/src/connection-manager/index.ts +31 -43
  150. package/src/content-routing/index.ts +7 -55
  151. package/src/content-routing/utils.ts +3 -1
  152. package/src/fetch/index.ts +51 -14
  153. package/src/identify/identify.ts +518 -0
  154. package/src/identify/index.ts +17 -507
  155. package/src/index.ts +14 -77
  156. package/src/insecure/index.ts +4 -4
  157. package/src/libp2p.ts +139 -260
  158. package/src/peer-routing.ts +1 -101
  159. package/src/ping/constants.ts +11 -0
  160. package/src/ping/index.ts +32 -28
  161. package/src/registrar.ts +31 -27
  162. package/src/transport-manager.ts +27 -13
  163. package/src/upgrader.ts +62 -58
  164. package/src/{nat-manager.ts → upnp-nat/index.ts} +16 -17
  165. package/src/version.ts +1 -1
  166. package/dist/src/dht/dht-content-routing.d.ts +0 -17
  167. package/dist/src/dht/dht-content-routing.d.ts.map +0 -1
  168. package/dist/src/dht/dht-content-routing.js +0 -32
  169. package/dist/src/dht/dht-content-routing.js.map +0 -1
  170. package/dist/src/dht/dht-peer-routing.d.ts +0 -15
  171. package/dist/src/dht/dht-peer-routing.d.ts.map +0 -1
  172. package/dist/src/dht/dht-peer-routing.js +0 -26
  173. package/dist/src/dht/dht-peer-routing.js.map +0 -1
  174. package/dist/src/dht/dummy-dht.d.ts +0 -20
  175. package/dist/src/dht/dummy-dht.d.ts.map +0 -1
  176. package/dist/src/dht/dummy-dht.js +0 -46
  177. package/dist/src/dht/dummy-dht.js.map +0 -1
  178. package/dist/src/nat-manager.d.ts +0 -74
  179. package/dist/src/nat-manager.d.ts.map +0 -1
  180. package/dist/src/nat-manager.js.map +0 -1
  181. package/dist/src/peer-record-updater.d.ts +0 -24
  182. package/dist/src/peer-record-updater.d.ts.map +0 -1
  183. package/dist/src/peer-record-updater.js +0 -44
  184. package/dist/src/peer-record-updater.js.map +0 -1
  185. package/src/dht/dht-content-routing.ts +0 -44
  186. package/src/dht/dht-peer-routing.ts +0 -36
  187. package/src/dht/dummy-dht.ts +0 -60
  188. package/src/peer-record-updater.ts +0 -65
@@ -1,56 +1,19 @@
1
1
  import type { PeerId } from '@libp2p/interface-peer-id';
2
2
  import type { PeerRouting } from '@libp2p/interface-peer-routing';
3
3
  import type { AbortOptions } from '@libp2p/interfaces';
4
- import type { Startable } from '@libp2p/interfaces/startable';
5
4
  import type { PeerInfo } from '@libp2p/interface-peer-info';
6
5
  import type { PeerStore } from '@libp2p/interface-peer-store';
7
- export interface RefreshManagerInit {
8
- /**
9
- * Whether to enable the Refresh manager
10
- */
11
- enabled?: boolean;
12
- /**
13
- * Boot delay to start the Refresh Manager (in ms)
14
- */
15
- bootDelay?: number;
16
- /**
17
- * Interval between each Refresh Manager run (in ms)
18
- */
19
- interval?: number;
20
- /**
21
- * How long to let each refresh run (in ms)
22
- */
23
- timeout?: number;
24
- }
25
6
  export interface PeerRoutingInit {
26
7
  routers?: PeerRouting[];
27
- refreshManager?: RefreshManagerInit;
28
8
  }
29
9
  export interface DefaultPeerRoutingComponents {
30
10
  peerId: PeerId;
31
11
  peerStore: PeerStore;
32
12
  }
33
- export declare class DefaultPeerRouting implements PeerRouting, Startable {
13
+ export declare class DefaultPeerRouting implements PeerRouting {
34
14
  private readonly components;
35
15
  private readonly routers;
36
- private readonly refreshManagerInit;
37
- private timeoutId?;
38
- private started;
39
- private abortController?;
40
16
  constructor(components: DefaultPeerRoutingComponents, init: PeerRoutingInit);
41
- isStarted(): boolean;
42
- /**
43
- * Start peer routing service.
44
- */
45
- start(): Promise<void>;
46
- /**
47
- * Recurrent task to find closest peers and add their addresses to the Address Book.
48
- */
49
- _findClosestPeersTask(): Promise<void>;
50
- /**
51
- * Stop peer routing service.
52
- */
53
- stop(): Promise<void>;
54
17
  /**
55
18
  * Iterates over all peer routers in parallel to find the given peer
56
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"peer-routing.d.ts","sourceRoot":"","sources":["../../src/peer-routing.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAI7D,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;IACvB,cAAc,CAAC,EAAE,kBAAkB,CAAA;CACpC;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,qBAAa,kBAAmB,YAAW,WAAW,EAAE,SAAS;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,SAAS,CAAC,CAA+B;IACjD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAC,CAAmB;gBAE9B,UAAU,EAAE,4BAA4B,EAAE,IAAI,EAAE,eAAe;IAS5E,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAY7B;;OAEG;IACG,qBAAqB,IAAK,OAAO,CAAC,IAAI,CAAC;IA0B7C;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAS5B;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+BtE;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC;CAc3F"}
1
+ {"version":3,"file":"peer-routing.d.ts","sourceRoot":"","sources":["../../src/peer-routing.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAI7D,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,qBAAa,kBAAmB,YAAW,WAAW;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE1B,UAAU,EAAE,4BAA4B,EAAE,IAAI,EAAE,eAAe;IAK5E;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+BtE;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC;CAc3F"}
@@ -2,74 +2,15 @@ import { logger } from '@libp2p/logger';
2
2
  import { CodeError } from '@libp2p/interfaces/errors';
3
3
  import { codes, messages } from './errors.js';
4
4
  import { storeAddresses, uniquePeers, requirePeers } from './content-routing/utils.js';
5
- import { TimeoutController } from 'timeout-abort-controller';
6
5
  import merge from 'it-merge';
7
6
  import { pipe } from 'it-pipe';
8
7
  import first from 'it-first';
9
- import drain from 'it-drain';
10
8
  import filter from 'it-filter';
11
- import { setDelayedInterval, clearDelayedInterval
12
- // @ts-expect-error module with no types
13
- } from 'set-delayed-interval';
14
- import { setMaxListeners } from 'events';
15
9
  const log = logger('libp2p:peer-routing');
16
10
  export class DefaultPeerRouting {
17
11
  constructor(components, init) {
18
12
  this.components = components;
19
13
  this.routers = init.routers ?? [];
20
- this.refreshManagerInit = init.refreshManager ?? {};
21
- this.started = false;
22
- this._findClosestPeersTask = this._findClosestPeersTask.bind(this);
23
- }
24
- isStarted() {
25
- return this.started;
26
- }
27
- /**
28
- * Start peer routing service.
29
- */
30
- async start() {
31
- if (this.started || this.routers.length === 0 || this.timeoutId != null || this.refreshManagerInit.enabled === false) {
32
- return;
33
- }
34
- this.timeoutId = setDelayedInterval(this._findClosestPeersTask, this.refreshManagerInit.interval, this.refreshManagerInit.bootDelay);
35
- this.started = true;
36
- }
37
- /**
38
- * Recurrent task to find closest peers and add their addresses to the Address Book.
39
- */
40
- async _findClosestPeersTask() {
41
- if (this.abortController != null) {
42
- // we are already running the query
43
- return;
44
- }
45
- try {
46
- this.abortController = new TimeoutController(this.refreshManagerInit.timeout ?? 10e3);
47
- // this controller may be used while dialing lots of peers so prevent MaxListenersExceededWarning
48
- // appearing in the console
49
- try {
50
- // fails on node < 15.4
51
- setMaxListeners?.(Infinity, this.abortController.signal);
52
- }
53
- catch { }
54
- // nb getClosestPeers adds the addresses to the address book
55
- await drain(this.getClosestPeers(this.components.peerId.toBytes(), { signal: this.abortController.signal }));
56
- }
57
- catch (err) {
58
- log.error(err);
59
- }
60
- finally {
61
- this.abortController?.clear();
62
- this.abortController = undefined;
63
- }
64
- }
65
- /**
66
- * Stop peer routing service.
67
- */
68
- async stop() {
69
- clearDelayedInterval(this.timeoutId);
70
- // abort query if it is in-flight
71
- this.abortController?.abort();
72
- this.started = false;
73
14
  }
74
15
  /**
75
16
  * Iterates over all peer routers in parallel to find the given peer
@@ -1 +1 @@
1
- {"version":3,"file":"peer-routing.js","sourceRoot":"","sources":["../../src/peer-routing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"peer-routing.js","sourceRoot":"","sources":["../../src/peer-routing.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,8 @@ export declare const PROTOCOL = "/ipfs/ping/1.0.0";
2
2
  export declare const PING_LENGTH = 32;
3
3
  export declare const PROTOCOL_VERSION = "1.0.0";
4
4
  export declare const PROTOCOL_NAME = "ping";
5
+ export declare const PROTOCOL_PREFIX = "ipfs";
6
+ export declare const TIMEOUT = 10000;
7
+ export declare const MAX_INBOUND_STREAMS = 2;
8
+ export declare const MAX_OUTBOUND_STREAMS = 1;
5
9
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/ping/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ,qBAAqB,CAAA;AAC1C,eAAO,MAAM,WAAW,KAAK,CAAA;AAC7B,eAAO,MAAM,gBAAgB,UAAU,CAAA;AACvC,eAAO,MAAM,aAAa,SAAS,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/ping/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ,qBAAqB,CAAA;AAC1C,eAAO,MAAM,WAAW,KAAK,CAAA;AAC7B,eAAO,MAAM,gBAAgB,UAAU,CAAA;AACvC,eAAO,MAAM,aAAa,SAAS,CAAA;AACnC,eAAO,MAAM,eAAe,SAAS,CAAA;AACrC,eAAO,MAAM,OAAO,QAAQ,CAAA;AAQ5B,eAAO,MAAM,mBAAmB,IAAI,CAAA;AACpC,eAAO,MAAM,oBAAoB,IAAI,CAAA"}
@@ -2,4 +2,14 @@ export const PROTOCOL = '/ipfs/ping/1.0.0';
2
2
  export const PING_LENGTH = 32;
3
3
  export const PROTOCOL_VERSION = '1.0.0';
4
4
  export const PROTOCOL_NAME = 'ping';
5
+ export const PROTOCOL_PREFIX = 'ipfs';
6
+ export const TIMEOUT = 10000;
7
+ // See https://github.com/libp2p/specs/blob/d4b5fb0152a6bb86cfd9ea/ping/ping.md?plain=1#L38-L43
8
+ // The dialing peer MUST NOT keep more than one outbound stream for the ping protocol per peer.
9
+ // The listening peer SHOULD accept at most two streams per peer since cross-stream behavior is
10
+ // non-linear and stream writes occur asynchronously. The listening peer may perceive the
11
+ // dialing peer closing and opening the wrong streams (for instance, closing stream B and
12
+ // opening stream A even though the dialing peer is opening stream B and closing stream A).
13
+ export const MAX_INBOUND_STREAMS = 2;
14
+ export const MAX_OUTBOUND_STREAMS = 1;
5
15
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/ping/constants.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,QAAQ,GAAG,kBAAkB,CAAA;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAC7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAA;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAA"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/ping/constants.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,QAAQ,GAAG,kBAAkB,CAAA;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAC7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAA;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAA;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAA;AACrC,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAA;AAE5B,+FAA+F;AAC/F,+FAA+F;AAC/F,+FAA+F;AAC/F,yFAAyF;AACzF,yFAAyF;AACzF,2FAA2F;AAC3F,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AACpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAA"}
@@ -1,40 +1,23 @@
1
- import type { IncomingStreamData, Registrar } from '@libp2p/interface-registrar';
1
+ import type { Registrar } from '@libp2p/interface-registrar';
2
2
  import type { PeerId } from '@libp2p/interface-peer-id';
3
- import type { Startable } from '@libp2p/interfaces/startable';
4
3
  import type { AbortOptions } from '@libp2p/interfaces';
5
4
  import type { ConnectionManager } from '@libp2p/interface-connection-manager';
5
+ import type { Multiaddr } from '@multiformats/multiaddr';
6
+ export interface PingService {
7
+ ping: (peer: PeerId | Multiaddr | Multiaddr[], options?: AbortOptions) => Promise<number>;
8
+ }
6
9
  export interface PingServiceInit {
7
- protocolPrefix: string;
8
- maxInboundStreams: number;
9
- maxOutboundStreams: number;
10
+ protocolPrefix?: string;
11
+ maxInboundStreams?: number;
12
+ maxOutboundStreams?: number;
10
13
  /**
11
14
  * How long we should wait for a ping response
12
15
  */
13
- timeout: number;
16
+ timeout?: number;
14
17
  }
15
18
  export interface PingServiceComponents {
16
19
  registrar: Registrar;
17
20
  connectionManager: ConnectionManager;
18
21
  }
19
- export declare class PingService implements Startable {
20
- readonly protocol: string;
21
- private readonly components;
22
- private started;
23
- private readonly init;
24
- constructor(components: PingServiceComponents, init: PingServiceInit);
25
- start(): Promise<void>;
26
- stop(): Promise<void>;
27
- isStarted(): boolean;
28
- /**
29
- * A handler to register with Libp2p to process ping messages
30
- */
31
- handleMessage(data: IncomingStreamData): void;
32
- /**
33
- * Ping a given peer and wait for its response, getting the operation latency.
34
- *
35
- * @param {PeerId|Multiaddr} peer
36
- * @returns {Promise<number>}
37
- */
38
- ping(peer: PeerId, options?: AbortOptions): Promise<number>;
39
- }
22
+ export declare function pingService(init?: PingServiceInit): (components: PingServiceComponents) => PingService;
40
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ping/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAKtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAI7E,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAE1B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,qBAAa,WAAY,YAAW,SAAS;IAC3C,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;gBAEzB,UAAU,EAAE,qBAAqB,EAAE,IAAI,EAAE,eAAe;IAO/D,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAQvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAK5B,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACH,aAAa,CAAE,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAS9C;;;;;OAKG;IACG,IAAI,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;CAmDvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ping/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAsB,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAItD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAE7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAIxD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAC1F;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAkGD,wBAAgB,WAAW,CAAE,IAAI,GAAE,eAAoB,GAAG,CAAC,UAAU,EAAE,qBAAqB,KAAK,WAAW,CAE3G"}
@@ -5,22 +5,24 @@ import { randomBytes } from '@libp2p/crypto';
5
5
  import { pipe } from 'it-pipe';
6
6
  import first from 'it-first';
7
7
  import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
8
- import { PROTOCOL_NAME, PING_LENGTH, PROTOCOL_VERSION } from './constants.js';
8
+ import { PROTOCOL_PREFIX, PROTOCOL_NAME, PING_LENGTH, PROTOCOL_VERSION, TIMEOUT, MAX_INBOUND_STREAMS, MAX_OUTBOUND_STREAMS } from './constants.js';
9
9
  import { abortableDuplex } from 'abortable-iterator';
10
- import { TimeoutController } from 'timeout-abort-controller';
11
10
  import { setMaxListeners } from 'events';
11
+ import { anySignal } from 'any-signal';
12
12
  const log = logger('libp2p:ping');
13
- export class PingService {
13
+ class DefaultPingService {
14
14
  constructor(components, init) {
15
15
  this.components = components;
16
16
  this.started = false;
17
- this.protocol = `/${init.protocolPrefix}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`;
18
- this.init = init;
17
+ this.protocol = `/${init.protocolPrefix ?? PROTOCOL_PREFIX}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`;
18
+ this.timeout = init.timeout ?? TIMEOUT;
19
+ this.maxInboundStreams = init.maxInboundStreams ?? MAX_INBOUND_STREAMS;
20
+ this.maxOutboundStreams = init.maxOutboundStreams ?? MAX_OUTBOUND_STREAMS;
19
21
  }
20
22
  async start() {
21
23
  await this.components.registrar.handle(this.protocol, this.handleMessage, {
22
- maxInboundStreams: this.init.maxInboundStreams,
23
- maxOutboundStreams: this.init.maxOutboundStreams
24
+ maxInboundStreams: this.maxInboundStreams,
25
+ maxOutboundStreams: this.maxOutboundStreams
24
26
  });
25
27
  this.started = true;
26
28
  }
@@ -52,19 +54,13 @@ export class PingService {
52
54
  const start = Date.now();
53
55
  const data = randomBytes(PING_LENGTH);
54
56
  const connection = await this.components.connectionManager.openConnection(peer, options);
55
- let timeoutController;
56
- let signal = options.signal;
57
57
  let stream;
58
- // create a timeout if no abort signal passed
59
- if (signal == null) {
60
- timeoutController = new TimeoutController(this.init.timeout);
61
- signal = timeoutController.signal;
62
- try {
63
- // fails on node < 15.4
64
- setMaxListeners?.(Infinity, timeoutController.signal);
65
- }
66
- catch { }
58
+ const signal = anySignal([AbortSignal.timeout(this.timeout), options?.signal]);
59
+ try {
60
+ // fails on node < 15.4
61
+ setMaxListeners?.(Infinity, signal);
67
62
  }
63
+ catch { }
68
64
  try {
69
65
  stream = await connection.newStream([this.protocol], {
70
66
  signal
@@ -79,13 +75,14 @@ export class PingService {
79
75
  return end - start;
80
76
  }
81
77
  finally {
82
- if (timeoutController != null) {
83
- timeoutController.clear();
84
- }
85
78
  if (stream != null) {
86
79
  stream.close();
87
80
  }
81
+ signal.clear();
88
82
  }
89
83
  }
90
84
  }
85
+ export function pingService(init = {}) {
86
+ return (components) => new DefaultPingService(components, init);
87
+ }
91
88
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ping/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ping/index.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,18 @@
1
1
  import { StreamHandlerOptions, StreamHandlerRecord } from '@libp2p/interface-registrar';
2
2
  import type { Registrar, StreamHandler, Topology } from '@libp2p/interface-registrar';
3
- import type { PeerProtocolsChangeData, PeerStore } from '@libp2p/interface-peer-store';
3
+ import type { PeerStore } from '@libp2p/interface-peer-store';
4
4
  import type { Connection } from '@libp2p/interface-connection';
5
5
  import type { ConnectionManager } from '@libp2p/interface-connection-manager';
6
6
  import type { PeerId } from '@libp2p/interface-peer-id';
7
+ import type { EventEmitter } from '@libp2p/interfaces/events';
8
+ import type { Libp2pEvents, PeerUpdate } from '@libp2p/interface-libp2p';
7
9
  export declare const DEFAULT_MAX_INBOUND_STREAMS = 32;
8
10
  export declare const DEFAULT_MAX_OUTBOUND_STREAMS = 64;
9
11
  export interface RegistrarComponents {
10
12
  peerId: PeerId;
11
13
  connectionManager: ConnectionManager;
12
14
  peerStore: PeerStore;
15
+ events: EventEmitter<Libp2pEvents>;
13
16
  }
14
17
  /**
15
18
  * Responsible for notifying registered protocols of events in the network.
@@ -51,6 +54,6 @@ export declare class DefaultRegistrar implements Registrar {
51
54
  /**
52
55
  * Check if a new peer support the multicodecs for this topology
53
56
  */
54
- _onProtocolChange(evt: CustomEvent<PeerProtocolsChangeData>): void;
57
+ _onPeerUpdate(evt: CustomEvent<PeerUpdate>): void;
55
58
  }
56
59
  //# sourceMappingURL=registrar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registrar.d.ts","sourceRoot":"","sources":["../../src/registrar.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEnG,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIvD,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAC7C,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAE9C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,SAAS,EAAE,SAAS,CAAA;CACrB;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;gBAEnC,UAAU,EAAE,mBAAmB;IAgB5C,YAAY,IAAK,MAAM,EAAE;IAOzB,UAAU,CAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IAUlD,aAAa,CAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IAY5C;;OAEG;IACG,MAAM,CAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnG;;;OAGG;IACG,QAAQ,CAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5D;;OAEG;IACG,QAAQ,CAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBtE;;OAEG;IACH,UAAU,CAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAY7B;;OAEG;IACH,aAAa,CAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI;IAuBlD;;;OAGG;IACH,UAAU,CAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI;IAuB/C;;OAEG;IACH,iBAAiB,CAAE,GAAG,EAAE,WAAW,CAAC,uBAAuB,CAAC,GAAG,IAAI;CAoCpE"}
1
+ {"version":3,"file":"registrar.d.ts","sourceRoot":"","sources":["../../src/registrar.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEnG,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAIxE,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAC7C,eAAO,MAAM,4BAA4B,KAAK,CAAA;AAE9C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,SAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;gBAEnC,UAAU,EAAE,mBAAmB;IAc5C,YAAY,IAAK,MAAM,EAAE;IAMzB,UAAU,CAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IAUlD,aAAa,CAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IAY5C;;OAEG;IACG,MAAM,CAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBnG;;;OAGG;IACG,QAAQ,CAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5D;;OAEG;IACG,QAAQ,CAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBtE;;OAEG;IACH,UAAU,CAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAY7B;;OAEG;IACH,aAAa,CAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI;IAuBlD;;;OAGG;IACH,UAAU,CAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI;IAuB/C;;OAEG;IACH,aAAa,CAAE,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI;CAoCnD"}
@@ -15,16 +15,14 @@ export class DefaultRegistrar {
15
15
  this.handlers = new Map();
16
16
  this.components = components;
17
17
  this._onDisconnect = this._onDisconnect.bind(this);
18
- this._onProtocolChange = this._onProtocolChange.bind(this);
18
+ this._onPeerUpdate = this._onPeerUpdate.bind(this);
19
19
  this._onConnect = this._onConnect.bind(this);
20
- this.components.connectionManager.addEventListener('peer:disconnect', this._onDisconnect);
21
- this.components.connectionManager.addEventListener('peer:connect', this._onConnect);
22
- // happens after identify
23
- this.components.peerStore.addEventListener('change:protocols', this._onProtocolChange);
20
+ this.components.events.addEventListener('connection:close', this._onDisconnect);
21
+ this.components.events.addEventListener('connection:open', this._onConnect);
22
+ this.components.events.addEventListener('peer:update', this._onPeerUpdate);
24
23
  }
25
24
  getProtocols() {
26
25
  return Array.from(new Set([
27
- ...this.topologies.keys(),
28
26
  ...this.handlers.keys()
29
27
  ])).sort();
30
28
  }
@@ -59,8 +57,10 @@ export class DefaultRegistrar {
59
57
  handler,
60
58
  options
61
59
  });
62
- // Add new protocols to self protocols in the Protobook
63
- await this.components.peerStore.protoBook.add(this.components.peerId, [protocol]);
60
+ // Add new protocol to self protocols in the peer store
61
+ await this.components.peerStore.merge(this.components.peerId, {
62
+ protocols: [protocol]
63
+ });
64
64
  }
65
65
  /**
66
66
  * Removes the handler for each protocol. The protocol
@@ -71,8 +71,10 @@ export class DefaultRegistrar {
71
71
  protocolList.forEach(protocol => {
72
72
  this.handlers.delete(protocol);
73
73
  });
74
- // Remove protocols from self protocols in the Protobook
75
- await this.components.peerStore.protoBook.remove(this.components.peerId, protocolList);
74
+ // Update self protocols in the peer store
75
+ await this.components.peerStore.patch(this.components.peerId, {
76
+ protocols: protocolList
77
+ });
76
78
  }
77
79
  /**
78
80
  * Register handlers for a set of multicodecs given
@@ -112,9 +114,9 @@ export class DefaultRegistrar {
112
114
  */
113
115
  _onDisconnect(evt) {
114
116
  const connection = evt.detail;
115
- void this.components.peerStore.protoBook.get(connection.remotePeer)
116
- .then(peerProtocols => {
117
- for (const protocol of peerProtocols) {
117
+ void this.components.peerStore.get(connection.remotePeer)
118
+ .then(peer => {
119
+ for (const protocol of peer.protocols) {
118
120
  const topologies = this.topologies.get(protocol);
119
121
  if (topologies == null) {
120
122
  // no topologies are interested in this protocol
@@ -126,7 +128,7 @@ export class DefaultRegistrar {
126
128
  }
127
129
  })
128
130
  .catch(err => {
129
- log.error(err);
131
+ log.error('could not inform topologies of disconnecting peer %p', connection.remotePeer, err);
130
132
  });
131
133
  }
132
134
  /**
@@ -135,9 +137,9 @@ export class DefaultRegistrar {
135
137
  */
136
138
  _onConnect(evt) {
137
139
  const connection = evt.detail;
138
- void this.components.peerStore.protoBook.get(connection.remotePeer)
139
- .then(peerProtocols => {
140
- for (const protocol of peerProtocols) {
140
+ void this.components.peerStore.get(connection.remotePeer)
141
+ .then(peer => {
142
+ for (const protocol of peer.protocols) {
141
143
  const topologies = this.topologies.get(protocol);
142
144
  if (topologies == null) {
143
145
  // no topologies are interested in this protocol
@@ -149,16 +151,16 @@ export class DefaultRegistrar {
149
151
  }
150
152
  })
151
153
  .catch(err => {
152
- log.error(err);
154
+ log.error('could not inform topologies of connecting peer %p', connection.remotePeer, err);
153
155
  });
154
156
  }
155
157
  /**
156
158
  * Check if a new peer support the multicodecs for this topology
157
159
  */
158
- _onProtocolChange(evt) {
159
- const { peerId, protocols, oldProtocols } = evt.detail;
160
- const removed = oldProtocols.filter(protocol => !protocols.includes(protocol));
161
- const added = protocols.filter(protocol => !oldProtocols.includes(protocol));
160
+ _onPeerUpdate(evt) {
161
+ const { peer, previous } = evt.detail;
162
+ const removed = (previous?.protocols ?? []).filter(protocol => !peer.protocols.includes(protocol));
163
+ const added = peer.protocols.filter(protocol => !(previous?.protocols ?? []).includes(protocol));
162
164
  for (const protocol of removed) {
163
165
  const topologies = this.topologies.get(protocol);
164
166
  if (topologies == null) {
@@ -166,7 +168,7 @@ export class DefaultRegistrar {
166
168
  continue;
167
169
  }
168
170
  for (const topology of topologies.values()) {
169
- topology.onDisconnect(peerId);
171
+ topology.onDisconnect(peer.id);
170
172
  }
171
173
  }
172
174
  for (const protocol of added) {
@@ -176,11 +178,11 @@ export class DefaultRegistrar {
176
178
  continue;
177
179
  }
178
180
  for (const topology of topologies.values()) {
179
- const connection = this.components.connectionManager.getConnections(peerId)[0];
181
+ const connection = this.components.connectionManager.getConnections(peer.id)[0];
180
182
  if (connection == null) {
181
183
  continue;
182
184
  }
183
- topology.onConnect(peerId, connection);
185
+ topology.onConnect(peer.id, connection);
184
186
  }
185
187
  }
186
188
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registrar.js","sourceRoot":"","sources":["../../src/registrar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registrar.js","sourceRoot":"","sources":["../../src/registrar.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import { FaultTolerance } from '@libp2p/interface-transport';
2
- import type { Transport, TransportManager, TransportManagerEvents, Upgrader } from '@libp2p/interface-transport';
2
+ import type { Listener, Transport, TransportManager, Upgrader } from '@libp2p/interface-transport';
3
3
  import type { Multiaddr } from '@multiformats/multiaddr';
4
4
  import type { Connection } from '@libp2p/interface-connection';
5
5
  import type { AbortOptions } from '@libp2p/interfaces';
6
- import { EventEmitter } from '@libp2p/interfaces/events';
6
+ import type { EventEmitter } from '@libp2p/interfaces/events';
7
7
  import type { Startable } from '@libp2p/interfaces/startable';
8
8
  import type { Metrics } from '@libp2p/interface-metrics';
9
9
  import type { AddressManager } from '@libp2p/interface-address-manager';
10
+ import type { Libp2pEvents } from '@libp2p/interface-libp2p';
10
11
  export interface TransportManagerInit {
11
12
  faultTolerance?: FaultTolerance;
12
13
  }
@@ -14,8 +15,9 @@ export interface DefaultTransportManagerComponents {
14
15
  metrics?: Metrics;
15
16
  addressManager: AddressManager;
16
17
  upgrader: Upgrader;
18
+ events: EventEmitter<Libp2pEvents>;
17
19
  }
18
- export declare class DefaultTransportManager extends EventEmitter<TransportManagerEvents> implements TransportManager, Startable {
20
+ export declare class DefaultTransportManager implements TransportManager, Startable {
19
21
  private readonly components;
20
22
  private readonly transports;
21
23
  private readonly listeners;
@@ -27,7 +29,8 @@ export declare class DefaultTransportManager extends EventEmitter<TransportManag
27
29
  */
28
30
  add(transport: Transport): void;
29
31
  isStarted(): boolean;
30
- start(): Promise<void>;
32
+ start(): void;
33
+ afterStart(): Promise<void>;
31
34
  /**
32
35
  * Stops all listeners
33
36
  */
@@ -44,6 +47,10 @@ export declare class DefaultTransportManager extends EventEmitter<TransportManag
44
47
  * Returns all the transports instances
45
48
  */
46
49
  getTransports(): Transport[];
50
+ /**
51
+ * Returns all the listener instances
52
+ */
53
+ getListeners(): Listener[];
47
54
  /**
48
55
  * Finds a transport that matches the given Multiaddr
49
56
  */
@@ -1 +1 @@
1
- {"version":3,"file":"transport-manager.d.ts","sourceRoot":"","sources":["../../src/transport-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAY,SAAS,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC1H,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAe,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAIvE,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,qBAAa,uBAAwB,SAAQ,YAAY,CAAC,sBAAsB,CAAE,YAAW,gBAAgB,EAAE,SAAS;IACtH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,OAAO,CAAS;gBAEX,UAAU,EAAE,iCAAiC,EAAE,IAAI,GAAE,oBAAyB;IAa3F;;OAEG;IACH,GAAG,CAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAoBhC,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAS7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAwB5B;;OAEG;IACG,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBvE;;OAEG;IACH,QAAQ,IAAK,SAAS,EAAE;IAUxB;;OAEG;IACH,aAAa,IAAK,SAAS,EAAE;IAI7B;;OAEG;IACH,qBAAqB,CAAE,EAAE,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS;IAU5D;;OAEG;IACG,MAAM,CAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwEhD;;;OAGG;IACG,MAAM,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzC;;;;;OAKG;IACG,SAAS,IAAK,OAAO,CAAC,IAAI,CAAC;CAQlC"}
1
+ {"version":3,"file":"transport-manager.d.ts","sourceRoot":"","sources":["../../src/transport-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAI5D,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AAED,qBAAa,uBAAwB,YAAW,gBAAgB,EAAE,SAAS;IACzE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,OAAO,CAAS;gBAEX,UAAU,EAAE,iCAAiC,EAAE,IAAI,GAAE,oBAAyB;IAW3F;;OAEG;IACH,GAAG,CAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAoBhC,SAAS,IAAK,OAAO;IAIrB,KAAK,IAAK,IAAI;IAIR,UAAU,IAAK,OAAO,CAAC,IAAI,CAAC;IAOlC;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAwB5B;;OAEG;IACG,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBvE;;OAEG;IACH,QAAQ,IAAK,SAAS,EAAE;IAUxB;;OAEG;IACH,aAAa,IAAK,SAAS,EAAE;IAI7B;;OAEG;IACH,YAAY,IAAK,QAAQ,EAAE;IAI3B;;OAEG;IACH,qBAAqB,CAAE,EAAE,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS;IAU5D;;OAEG;IACG,MAAM,CAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6EhD;;;OAGG;IACG,MAAM,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzC;;;;;OAKG;IACG,SAAS,IAAK,OAAO,CAAC,IAAI,CAAC;CAQlC"}