@waku/core 0.0.36-f911bf8.0 → 0.0.37-2ed5ddc.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 (79) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/bundle/index.js +5647 -1359
  3. package/bundle/lib/message/version_0.js +1 -2
  4. package/bundle/{version_0-CiYGrPc2.js → version_0-Bc0h7ah2.js} +1886 -31
  5. package/dist/.tsbuildinfo +1 -1
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/connection_manager/connection_limiter.d.ts +35 -0
  10. package/dist/lib/connection_manager/connection_limiter.js +103 -0
  11. package/dist/lib/connection_manager/connection_limiter.js.map +1 -0
  12. package/dist/lib/connection_manager/connection_manager.d.ts +19 -104
  13. package/dist/lib/connection_manager/connection_manager.js +64 -499
  14. package/dist/lib/connection_manager/connection_manager.js.map +1 -1
  15. package/dist/lib/connection_manager/discovery_dialer.d.ts +32 -0
  16. package/dist/lib/connection_manager/discovery_dialer.js +131 -0
  17. package/dist/lib/connection_manager/discovery_dialer.js.map +1 -0
  18. package/dist/lib/connection_manager/keep_alive_manager.d.ts +17 -7
  19. package/dist/lib/connection_manager/keep_alive_manager.js +110 -74
  20. package/dist/lib/connection_manager/keep_alive_manager.js.map +1 -1
  21. package/dist/lib/connection_manager/network_monitor.d.ts +22 -0
  22. package/dist/lib/connection_manager/network_monitor.js +63 -0
  23. package/dist/lib/connection_manager/network_monitor.js.map +1 -0
  24. package/dist/lib/connection_manager/shard_reader.d.ts +28 -0
  25. package/dist/lib/connection_manager/shard_reader.js +70 -0
  26. package/dist/lib/connection_manager/shard_reader.js.map +1 -0
  27. package/dist/lib/connection_manager/utils.d.ts +16 -1
  28. package/dist/lib/connection_manager/utils.js +23 -0
  29. package/dist/lib/connection_manager/utils.js.map +1 -1
  30. package/dist/lib/filter/filter.d.ts +7 -5
  31. package/dist/lib/filter/filter.js +14 -11
  32. package/dist/lib/filter/filter.js.map +1 -1
  33. package/dist/lib/light_push/light_push.d.ts +5 -5
  34. package/dist/lib/light_push/light_push.js +7 -7
  35. package/dist/lib/light_push/light_push.js.map +1 -1
  36. package/dist/lib/message/version_0.d.ts +3 -4
  37. package/dist/lib/message/version_0.js +1 -4
  38. package/dist/lib/message/version_0.js.map +1 -1
  39. package/dist/lib/message_hash/index.d.ts +1 -0
  40. package/dist/lib/message_hash/index.js +2 -0
  41. package/dist/lib/message_hash/index.js.map +1 -0
  42. package/dist/lib/message_hash/message_hash.d.ts +52 -0
  43. package/dist/lib/message_hash/message_hash.js +84 -0
  44. package/dist/lib/message_hash/message_hash.js.map +1 -0
  45. package/dist/lib/metadata/metadata.js +6 -4
  46. package/dist/lib/metadata/metadata.js.map +1 -1
  47. package/dist/lib/store/rpc.js +16 -10
  48. package/dist/lib/store/rpc.js.map +1 -1
  49. package/dist/lib/store/store.d.ts +5 -5
  50. package/dist/lib/store/store.js +19 -9
  51. package/dist/lib/store/store.js.map +1 -1
  52. package/dist/lib/stream_manager/stream_manager.d.ts +3 -4
  53. package/dist/lib/stream_manager/stream_manager.js +6 -8
  54. package/dist/lib/stream_manager/stream_manager.js.map +1 -1
  55. package/package.json +1 -1
  56. package/src/index.ts +2 -0
  57. package/src/lib/connection_manager/connection_limiter.ts +161 -0
  58. package/src/lib/connection_manager/connection_manager.ts +87 -668
  59. package/src/lib/connection_manager/discovery_dialer.ts +195 -0
  60. package/src/lib/connection_manager/keep_alive_manager.ts +154 -87
  61. package/src/lib/connection_manager/network_monitor.ts +88 -0
  62. package/src/lib/connection_manager/shard_reader.ts +134 -0
  63. package/src/lib/connection_manager/utils.ts +27 -1
  64. package/src/lib/filter/filter.ts +26 -15
  65. package/src/lib/light_push/light_push.ts +9 -10
  66. package/src/lib/message/version_0.ts +3 -7
  67. package/src/lib/message_hash/index.ts +1 -0
  68. package/src/lib/message_hash/message_hash.ts +106 -0
  69. package/src/lib/metadata/metadata.ts +8 -5
  70. package/src/lib/store/rpc.ts +23 -19
  71. package/src/lib/store/store.ts +22 -11
  72. package/src/lib/stream_manager/stream_manager.ts +8 -6
  73. package/bundle/base_protocol-DvQrudwy.js +0 -152
  74. package/bundle/index-CTo1my9M.js +0 -1543
  75. package/bundle/lib/base_protocol.js +0 -2
  76. package/dist/lib/base_protocol.d.ts +0 -18
  77. package/dist/lib/base_protocol.js +0 -25
  78. package/dist/lib/base_protocol.js.map +0 -1
  79. package/src/lib/base_protocol.ts +0 -44
@@ -1,108 +1,28 @@
1
- import { isPeerId, TypedEventEmitter } from "@libp2p/interface";
2
- import { multiaddr } from "@multiformats/multiaddr";
3
- import { DNS_DISCOVERY_TAG, EConnectionStateEvents, EPeersByDiscoveryEvents } from "@waku/interfaces";
4
- import { Tags } from "@waku/interfaces";
5
- import { decodeRelayShard, shardInfoToPubsubTopics } from "@waku/utils";
6
1
  import { Logger } from "@waku/utils";
2
+ import { ConnectionLimiter } from "./connection_limiter.js";
3
+ import { DiscoveryDialer } from "./discovery_dialer.js";
7
4
  import { KeepAliveManager } from "./keep_alive_manager.js";
8
- import { getPeerPing } from "./utils.js";
5
+ import { NetworkMonitor } from "./network_monitor.js";
6
+ import { ShardReader } from "./shard_reader.js";
7
+ import { getPeerPing, mapToPeerId, mapToPeerIdOrMultiaddr } from "./utils.js";
9
8
  const log = new Logger("connection-manager");
10
9
  const DEFAULT_MAX_BOOTSTRAP_PEERS_ALLOWED = 1;
11
- const DEFAULT_MAX_DIAL_ATTEMPTS_FOR_PEER = 3;
12
- const DEFAULT_MAX_PARALLEL_DIALS = 3;
13
10
  const DEFAULT_PING_KEEP_ALIVE_SEC = 5 * 60;
14
11
  const DEFAULT_RELAY_KEEP_ALIVE_SEC = 5 * 60;
15
- export class ConnectionManager extends TypedEventEmitter {
16
- // TODO(weboko): make it private
12
+ export class ConnectionManager {
17
13
  pubsubTopics;
18
14
  keepAliveManager;
15
+ discoveryDialer;
16
+ shardReader;
17
+ networkMonitor;
18
+ connectionLimiter;
19
19
  options;
20
20
  libp2p;
21
- dialAttemptsForPeer = new Map();
22
- dialErrorsForPeer = new Map();
23
- currentActiveParallelDialCount = 0;
24
- pendingPeerDialQueue = [];
25
- isP2PNetworkConnected = false;
26
- isConnected() {
27
- if (globalThis?.navigator && !globalThis?.navigator?.onLine) {
28
- return false;
29
- }
30
- return this.isP2PNetworkConnected;
31
- }
32
- stop() {
33
- this.keepAliveManager.stopAll();
34
- this.libp2p.removeEventListener("peer:connect", this.onEventHandlers["peer:connect"]);
35
- this.libp2p.removeEventListener("peer:disconnect", this.onEventHandlers["peer:disconnect"]);
36
- this.libp2p.removeEventListener("peer:discovery", this.onEventHandlers["peer:discovery"]);
37
- this.stopNetworkStatusListener();
38
- }
39
- async dropConnection(peerId) {
40
- try {
41
- this.keepAliveManager.stop(peerId);
42
- await this.libp2p.hangUp(peerId);
43
- log.info(`Dropped connection with peer ${peerId.toString()}`);
44
- }
45
- catch (error) {
46
- log.error(`Error dropping connection with peer ${peerId.toString()} - ${error}`);
47
- }
48
- }
49
- async getPeersByDiscovery() {
50
- const peersDiscovered = await this.libp2p.peerStore.all();
51
- const peersConnected = this.libp2p
52
- .getConnections()
53
- .map((conn) => conn.remotePeer);
54
- const peersDiscoveredByBootstrap = [];
55
- const peersDiscoveredByPeerExchange = [];
56
- const peersDiscoveredByLocal = [];
57
- const peersConnectedByBootstrap = [];
58
- const peersConnectedByPeerExchange = [];
59
- const peersConnectedByLocal = [];
60
- for (const peer of peersDiscovered) {
61
- const tags = await this.getTagNamesForPeer(peer.id);
62
- if (tags.includes(Tags.BOOTSTRAP)) {
63
- peersDiscoveredByBootstrap.push(peer);
64
- }
65
- else if (tags.includes(Tags.PEER_EXCHANGE)) {
66
- peersDiscoveredByPeerExchange.push(peer);
67
- }
68
- else if (tags.includes(Tags.LOCAL)) {
69
- peersDiscoveredByLocal.push(peer);
70
- }
71
- }
72
- for (const peerId of peersConnected) {
73
- const peer = await this.libp2p.peerStore.get(peerId);
74
- const tags = await this.getTagNamesForPeer(peerId);
75
- if (tags.includes(Tags.BOOTSTRAP)) {
76
- peersConnectedByBootstrap.push(peer);
77
- }
78
- else if (tags.includes(Tags.PEER_EXCHANGE)) {
79
- peersConnectedByPeerExchange.push(peer);
80
- }
81
- else if (tags.includes(Tags.LOCAL)) {
82
- peersConnectedByLocal.push(peer);
83
- }
84
- }
85
- return {
86
- DISCOVERED: {
87
- [Tags.BOOTSTRAP]: peersDiscoveredByBootstrap,
88
- [Tags.PEER_EXCHANGE]: peersDiscoveredByPeerExchange,
89
- [Tags.LOCAL]: peersDiscoveredByLocal
90
- },
91
- CONNECTED: {
92
- [Tags.BOOTSTRAP]: peersConnectedByBootstrap,
93
- [Tags.PEER_EXCHANGE]: peersConnectedByPeerExchange,
94
- [Tags.LOCAL]: peersConnectedByLocal
95
- }
96
- };
97
- }
98
21
  constructor(options) {
99
- super();
100
22
  this.libp2p = options.libp2p;
101
23
  this.pubsubTopics = options.pubsubTopics;
102
24
  this.options = {
103
- maxDialAttemptsForPeer: DEFAULT_MAX_DIAL_ATTEMPTS_FOR_PEER,
104
- maxBootstrapPeersAllowed: DEFAULT_MAX_BOOTSTRAP_PEERS_ALLOWED,
105
- maxParallelDials: DEFAULT_MAX_PARALLEL_DIALS,
25
+ maxBootstrapPeers: DEFAULT_MAX_BOOTSTRAP_PEERS_ALLOWED,
106
26
  pingKeepAlive: DEFAULT_PING_KEEP_ALIVE_SEC,
107
27
  relayKeepAlive: DEFAULT_RELAY_KEEP_ALIVE_SEC,
108
28
  ...options.config
@@ -115,13 +35,53 @@ export class ConnectionManager extends TypedEventEmitter {
115
35
  relayKeepAlive: this.options.relayKeepAlive
116
36
  }
117
37
  });
118
- this.startEventListeners()
119
- .then(() => log.info(`Connection Manager is now running`))
120
- .catch((error) => log.error(`Unexpected error while running service`, error));
121
- // libp2p emits `peer:discovery` events during its initialization
122
- // which means that before the ConnectionManager is initialized, some peers may have been discovered
123
- // we will dial the peers in peerStore ONCE before we start to listen to the `peer:discovery` events within the ConnectionManager
124
- this.dialPeerStorePeers().catch((error) => log.error(`Unexpected error while dialing peer store peers`, error));
38
+ this.shardReader = new ShardReader({
39
+ libp2p: options.libp2p,
40
+ networkConfig: options.networkConfig
41
+ });
42
+ this.discoveryDialer = new DiscoveryDialer({
43
+ libp2p: options.libp2p,
44
+ shardReader: this.shardReader
45
+ });
46
+ this.networkMonitor = new NetworkMonitor({
47
+ libp2p: options.libp2p,
48
+ events: options.events
49
+ });
50
+ this.connectionLimiter = new ConnectionLimiter({
51
+ libp2p: options.libp2p,
52
+ options: this.options
53
+ });
54
+ }
55
+ start() {
56
+ this.networkMonitor.start();
57
+ this.discoveryDialer.start();
58
+ this.keepAliveManager.start();
59
+ this.connectionLimiter.start();
60
+ }
61
+ stop() {
62
+ this.networkMonitor.stop();
63
+ this.discoveryDialer.stop();
64
+ this.keepAliveManager.stop();
65
+ this.connectionLimiter.stop();
66
+ }
67
+ isConnected() {
68
+ return this.networkMonitor.isConnected();
69
+ }
70
+ async dial(peer, protocolCodecs) {
71
+ const ma = mapToPeerIdOrMultiaddr(peer);
72
+ return this.libp2p.dialProtocol(ma, protocolCodecs);
73
+ }
74
+ async hangUp(peer) {
75
+ const peerId = mapToPeerId(peer);
76
+ try {
77
+ await this.libp2p.hangUp(peerId);
78
+ log.info(`Dropped connection with peer ${peerId.toString()}`);
79
+ return true;
80
+ }
81
+ catch (error) {
82
+ log.error(`Error dropping connection with peer ${peerId.toString()} - ${error}`);
83
+ return false;
84
+ }
125
85
  }
126
86
  async getConnectedPeers(codec) {
127
87
  const peerIDs = this.libp2p.getPeers();
@@ -141,409 +101,14 @@ export class ConnectionManager extends TypedEventEmitter {
141
101
  .filter((p) => (codec ? p.protocols.includes(codec) : true))
142
102
  .sort((left, right) => getPeerPing(left) - getPeerPing(right));
143
103
  }
144
- async dialPeerStorePeers() {
145
- const peerInfos = await this.libp2p.peerStore.all();
146
- const dialPromises = [];
147
- for (const peerInfo of peerInfos) {
148
- if (this.libp2p.getConnections().find((c) => c.remotePeer === peerInfo.id))
149
- continue;
150
- dialPromises.push(this.attemptDial(peerInfo.id));
151
- }
152
- try {
153
- await Promise.all(dialPromises);
154
- }
155
- catch (error) {
156
- log.error(`Unexpected error while dialing peer store peers`, error);
157
- }
104
+ isTopicConfigured(pubsubTopic) {
105
+ return this.pubsubTopics.includes(pubsubTopic);
158
106
  }
159
- async startEventListeners() {
160
- this.startPeerDiscoveryListener();
161
- this.startPeerConnectionListener();
162
- this.startPeerDisconnectionListener();
163
- this.startNetworkStatusListener();
107
+ async hasShardInfo(peerId) {
108
+ return this.shardReader.hasShardInfo(peerId);
164
109
  }
165
- /**
166
- * Attempts to establish a connection with a peer and set up specified protocols.
167
- * The method handles both PeerId and Multiaddr inputs, manages connection attempts,
168
- * and maintains the connection state.
169
- *
170
- * The dialing process includes:
171
- * 1. Converting input to dialable peer info
172
- * 2. Managing parallel dial attempts
173
- * 3. Attempting to establish protocol-specific connections
174
- * 4. Handling connection failures and retries
175
- * 5. Updating the peer store and connection state
176
- *
177
- * @param {PeerId | MultiaddrInput} peer - The peer to connect to, either as a PeerId or multiaddr
178
- * @param {string[]} [protocolCodecs] - Optional array of protocol-specific codec strings to establish
179
- * (e.g., for LightPush, Filter, Store protocols)
180
- *
181
- * @throws {Error} If the multiaddr is missing a peer ID
182
- * @throws {Error} If the maximum dial attempts are reached and the peer cannot be dialed
183
- * @throws {Error} If there's an error deleting an undialable peer from the peer store
184
- *
185
- * @example
186
- * ```typescript
187
- * // Dial using PeerId
188
- * await connectionManager.dialPeer(peerId);
189
- *
190
- * // Dial using multiaddr with specific protocols
191
- * await connectionManager.dialPeer(multiaddr, [
192
- * "/vac/waku/relay/2.0.0",
193
- * "/vac/waku/lightpush/2.0.0-beta1"
194
- * ]);
195
- * ```
196
- *
197
- * @remarks
198
- * - The method implements exponential backoff through multiple dial attempts
199
- * - Maintains a queue for parallel dial attempts (limited by maxParallelDials)
200
- * - Integrates with the KeepAliveManager for connection maintenance
201
- * - Updates the peer store and connection state after successful/failed attempts
202
- * - If all dial attempts fail, triggers DNS discovery as a fallback
203
- */
204
- async dialPeer(peer) {
205
- let connection;
206
- let peerId;
207
- const peerDialInfo = this.getDialablePeerInfo(peer);
208
- const peerIdStr = isPeerId(peerDialInfo)
209
- ? peerDialInfo.toString()
210
- : peerDialInfo.getPeerId();
211
- this.currentActiveParallelDialCount += 1;
212
- let dialAttempt = 0;
213
- while (dialAttempt < this.options.maxDialAttemptsForPeer) {
214
- try {
215
- log.info(`Dialing peer ${peerDialInfo} on attempt ${dialAttempt + 1}`);
216
- connection = await this.libp2p.dial(peerDialInfo);
217
- peerId = connection.remotePeer;
218
- const tags = await this.getTagNamesForPeer(peerId);
219
- // add tag to connection describing discovery mechanism
220
- // don't add duplicate tags
221
- this.libp2p.getConnections(peerId).forEach((conn) => {
222
- conn.tags = Array.from(new Set([...conn.tags, ...tags]));
223
- });
224
- // instead of deleting the peer from the peer store, we set the dial attempt to -1
225
- // this helps us keep track of peers that have been dialed before
226
- this.dialAttemptsForPeer.set(peerId.toString(), -1);
227
- // Dialing succeeded, break the loop
228
- this.keepAliveManager.start(peerId);
229
- break;
230
- }
231
- catch (error) {
232
- if (error instanceof AggregateError) {
233
- // Handle AggregateError
234
- log.error(`Error dialing peer ${peerIdStr} - ${error.errors}`);
235
- }
236
- else {
237
- // Handle generic error
238
- log.error(`Error dialing peer ${peerIdStr} - ${error.message}`);
239
- }
240
- this.dialErrorsForPeer.set(peerIdStr, error);
241
- dialAttempt++;
242
- this.dialAttemptsForPeer.set(peerIdStr, dialAttempt);
243
- }
244
- }
245
- // Always decrease the active dial count and process the dial queue
246
- this.currentActiveParallelDialCount--;
247
- this.processDialQueue();
248
- // If max dial attempts reached and dialing failed, delete the peer
249
- if (dialAttempt === this.options.maxDialAttemptsForPeer) {
250
- try {
251
- const error = this.dialErrorsForPeer.get(peerIdStr);
252
- if (error) {
253
- let errorMessage;
254
- if (error instanceof AggregateError) {
255
- if (!error.errors) {
256
- log.warn(`No errors array found for AggregateError`);
257
- }
258
- else if (error.errors.length === 0) {
259
- log.warn(`Errors array is empty for AggregateError`);
260
- }
261
- else {
262
- errorMessage = JSON.stringify(error.errors[0]);
263
- }
264
- }
265
- else {
266
- errorMessage = error.message;
267
- }
268
- log.info(`Deleting undialable peer ${peerIdStr} from peer store. Reason: ${errorMessage}`);
269
- }
270
- this.dialErrorsForPeer.delete(peerIdStr);
271
- if (peerId) {
272
- await this.libp2p.peerStore.delete(peerId);
273
- }
274
- // if it was last available peer - attempt DNS discovery
275
- await this.attemptDnsDiscovery();
276
- }
277
- catch (error) {
278
- throw new Error(`Error deleting undialable peer ${peerIdStr} from peer store - ${error}`);
279
- }
280
- }
281
- if (!connection) {
282
- throw new Error(`Failed to dial peer ${peerDialInfo}`);
283
- }
284
- return connection;
285
- }
286
- /**
287
- * Dial a peer with specific protocols.
288
- * This method is a raw proxy to the libp2p dialProtocol method.
289
- * @param peer - The peer to connect to, either as a PeerId or multiaddr
290
- * @param protocolCodecs - Optional array of protocol-specific codec strings to establish
291
- * @returns A stream to the peer
292
- */
293
- async rawDialPeerWithProtocols(peer, protocolCodecs) {
294
- const peerDialInfo = this.getDialablePeerInfo(peer);
295
- return await this.libp2p.dialProtocol(peerDialInfo, protocolCodecs);
296
- }
297
- /**
298
- * Internal utility to extract a PeerId or Multiaddr from a peer input.
299
- * This is used internally by the connection manager to handle different peer input formats.
300
- * @internal
301
- */
302
- getDialablePeerInfo(peer) {
303
- if (isPeerId(peer)) {
304
- return peer;
305
- }
306
- else {
307
- // peer is of MultiaddrInput type
308
- const ma = multiaddr(peer);
309
- const peerIdStr = ma.getPeerId();
310
- if (!peerIdStr) {
311
- throw new Error("Failed to dial multiaddr: missing peer ID");
312
- }
313
- return ma;
314
- }
315
- }
316
- async attemptDnsDiscovery() {
317
- if (this.libp2p.getConnections().length > 0)
318
- return;
319
- if ((await this.libp2p.peerStore.all()).length > 0)
320
- return;
321
- log.info("Attempting to trigger DNS discovery.");
322
- const dnsDiscovery = Object.values(this.libp2p.components.components).find((v) => {
323
- if (v && v.toString) {
324
- return v.toString().includes(DNS_DISCOVERY_TAG);
325
- }
326
- return false;
327
- });
328
- if (!dnsDiscovery)
329
- return;
330
- await dnsDiscovery.findPeers();
331
- }
332
- processDialQueue() {
333
- if (this.pendingPeerDialQueue.length > 0 &&
334
- this.currentActiveParallelDialCount < this.options.maxParallelDials) {
335
- const peerId = this.pendingPeerDialQueue.shift();
336
- if (!peerId)
337
- return;
338
- this.attemptDial(peerId).catch((error) => {
339
- log.error(error);
340
- });
341
- }
342
- }
343
- startPeerDiscoveryListener() {
344
- this.libp2p.addEventListener("peer:discovery", this.onEventHandlers["peer:discovery"]);
345
- }
346
- startPeerConnectionListener() {
347
- this.libp2p.addEventListener("peer:connect", this.onEventHandlers["peer:connect"]);
348
- }
349
- startPeerDisconnectionListener() {
350
- // TODO: ensure that these following issues are updated and confirmed
351
- /**
352
- * NOTE: Event is not being emitted on closing nor losing a connection.
353
- * @see https://github.com/libp2p/js-libp2p/issues/939
354
- * @see https://github.com/status-im/js-waku/issues/252
355
- *
356
- * >This event will be triggered anytime we are disconnected from another peer,
357
- * >regardless of the circumstances of that disconnection.
358
- * >If we happen to have multiple connections to a peer,
359
- * >this event will **only** be triggered when the last connection is closed.
360
- * @see https://github.com/libp2p/js-libp2p/blob/bad9e8c0ff58d60a78314077720c82ae331cc55b/doc/API.md?plain=1#L2100
361
- */
362
- this.libp2p.addEventListener("peer:disconnect", this.onEventHandlers["peer:disconnect"]);
363
- }
364
- async attemptDial(peerId) {
365
- if (!(await this.shouldDialPeer(peerId)))
366
- return;
367
- if (this.currentActiveParallelDialCount >= this.options.maxParallelDials) {
368
- this.pendingPeerDialQueue.push(peerId);
369
- return;
370
- }
371
- await this.dialPeer(peerId);
372
- }
373
- onEventHandlers = {
374
- "peer:discovery": (evt) => {
375
- void (async () => {
376
- const { id: peerId } = evt.detail;
377
- await this.dispatchDiscoveryEvent(peerId);
378
- try {
379
- await this.attemptDial(peerId);
380
- }
381
- catch (error) {
382
- log.error(`Error dialing peer ${peerId.toString()} : ${error}`);
383
- }
384
- })();
385
- },
386
- "peer:connect": (evt) => {
387
- void (async () => {
388
- log.info(`Connected to peer ${evt.detail.toString()}`);
389
- const peerId = evt.detail;
390
- this.keepAliveManager.start(peerId);
391
- const isBootstrap = (await this.getTagNamesForPeer(peerId)).includes(Tags.BOOTSTRAP);
392
- if (isBootstrap) {
393
- const bootstrapConnections = this.libp2p
394
- .getConnections()
395
- .filter((conn) => conn.tags.includes(Tags.BOOTSTRAP));
396
- // If we have too many bootstrap connections, drop one
397
- if (bootstrapConnections.length > this.options.maxBootstrapPeersAllowed) {
398
- await this.dropConnection(peerId);
399
- }
400
- else {
401
- this.dispatchEvent(new CustomEvent(EPeersByDiscoveryEvents.PEER_CONNECT_BOOTSTRAP, {
402
- detail: peerId
403
- }));
404
- }
405
- }
406
- else {
407
- this.dispatchEvent(new CustomEvent(EPeersByDiscoveryEvents.PEER_CONNECT_PEER_EXCHANGE, {
408
- detail: peerId
409
- }));
410
- }
411
- this.setP2PNetworkConnected();
412
- })();
413
- },
414
- "peer:disconnect": (evt) => {
415
- void (async () => {
416
- this.keepAliveManager.stop(evt.detail);
417
- this.setP2PNetworkDisconnected();
418
- })();
419
- },
420
- "browser:network": () => {
421
- this.dispatchWakuConnectionEvent();
422
- }
423
- };
424
- /**
425
- * Checks if the peer should be dialed based on the following conditions:
426
- * 1. If the peer is already connected, don't dial
427
- * 2. If the peer is not part of any of the configured pubsub topics, don't dial
428
- * 3. If the peer is not dialable based on bootstrap status, don't dial
429
- * 4. If the peer is already has an active dial attempt, or has been dialed before, don't dial it
430
- * @returns true if the peer should be dialed, false otherwise
431
- */
432
- async shouldDialPeer(peerId) {
433
- const isConnected = this.libp2p.getConnections(peerId).length > 0;
434
- if (isConnected) {
435
- log.warn(`Already connected to peer ${peerId.toString()}. Not dialing.`);
436
- return false;
437
- }
438
- const isSameShard = await this.isPeerTopicConfigured(peerId);
439
- if (!isSameShard) {
440
- const shardInfo = await this.getPeerShardInfo(peerId, this.libp2p.peerStore);
441
- log.warn(`Discovered peer ${peerId.toString()} with ShardInfo ${shardInfo} is not part of any of the configured pubsub topics (${this.pubsubTopics}).
442
- Not dialing.`);
443
- return false;
444
- }
445
- const isPreferredBasedOnBootstrap = await this.isPeerDialableBasedOnBootstrapStatus(peerId);
446
- if (!isPreferredBasedOnBootstrap) {
447
- log.warn(`Peer ${peerId.toString()} is not dialable based on bootstrap status. Not dialing.`);
448
- return false;
449
- }
450
- const hasBeenDialed = this.dialAttemptsForPeer.has(peerId.toString());
451
- if (hasBeenDialed) {
452
- log.warn(`Peer ${peerId.toString()} has already been attempted dial before, or already has a dial attempt in progress, skipping dial`);
453
- return false;
454
- }
455
- return true;
456
- }
457
- /**
458
- * Checks if the peer is dialable based on the following conditions:
459
- * 1. If the peer is a bootstrap peer, it is only dialable if the number of current bootstrap connections is less than the max allowed.
460
- * 2. If the peer is not a bootstrap peer
461
- */
462
- async isPeerDialableBasedOnBootstrapStatus(peerId) {
463
- const tagNames = await this.getTagNamesForPeer(peerId);
464
- const isBootstrap = tagNames.some((tagName) => tagName === Tags.BOOTSTRAP);
465
- if (!isBootstrap) {
466
- return true;
467
- }
468
- const currentBootstrapConnections = this.libp2p
469
- .getConnections()
470
- .filter((conn) => {
471
- return conn.tags.find((name) => name === Tags.BOOTSTRAP);
472
- }).length;
473
- return currentBootstrapConnections < this.options.maxBootstrapPeersAllowed;
474
- }
475
- async dispatchDiscoveryEvent(peerId) {
476
- const isBootstrap = (await this.getTagNamesForPeer(peerId)).includes(Tags.BOOTSTRAP);
477
- this.dispatchEvent(new CustomEvent(isBootstrap
478
- ? EPeersByDiscoveryEvents.PEER_DISCOVERY_BOOTSTRAP
479
- : EPeersByDiscoveryEvents.PEER_DISCOVERY_PEER_EXCHANGE, {
480
- detail: peerId
481
- }));
482
- }
483
- /**
484
- * Fetches the tag names for a given peer
485
- */
486
- async getTagNamesForPeer(peerId) {
487
- try {
488
- const peer = await this.libp2p.peerStore.get(peerId);
489
- return Array.from(peer.tags.keys());
490
- }
491
- catch (error) {
492
- log.error(`Failed to get peer ${peerId}, error: ${error}`);
493
- return [];
494
- }
495
- }
496
- async isPeerTopicConfigured(peerId) {
497
- const shardInfo = await this.getPeerShardInfo(peerId, this.libp2p.peerStore);
498
- // If there's no shard information, simply return true
499
- if (!shardInfo)
500
- return true;
501
- const pubsubTopics = shardInfoToPubsubTopics(shardInfo);
502
- const isTopicConfigured = pubsubTopics.some((topic) => this.pubsubTopics.includes(topic));
503
- return isTopicConfigured;
504
- }
505
- async getPeerShardInfo(peerId, peerStore) {
506
- const peer = await peerStore.get(peerId);
507
- const shardInfoBytes = peer.metadata.get("shardInfo");
508
- if (!shardInfoBytes)
509
- return undefined;
510
- return decodeRelayShard(shardInfoBytes);
511
- }
512
- startNetworkStatusListener() {
513
- try {
514
- globalThis.addEventListener("online", this.onEventHandlers["browser:network"]);
515
- globalThis.addEventListener("offline", this.onEventHandlers["browser:network"]);
516
- }
517
- catch (err) {
518
- log.error(`Failed to start network listener: ${err}`);
519
- }
520
- }
521
- stopNetworkStatusListener() {
522
- try {
523
- globalThis.removeEventListener("online", this.onEventHandlers["browser:network"]);
524
- globalThis.removeEventListener("offline", this.onEventHandlers["browser:network"]);
525
- }
526
- catch (err) {
527
- log.error(`Failed to stop network listener: ${err}`);
528
- }
529
- }
530
- setP2PNetworkConnected() {
531
- if (!this.isP2PNetworkConnected) {
532
- this.isP2PNetworkConnected = true;
533
- this.dispatchWakuConnectionEvent();
534
- }
535
- }
536
- setP2PNetworkDisconnected() {
537
- if (this.isP2PNetworkConnected &&
538
- this.libp2p.getConnections().length === 0) {
539
- this.isP2PNetworkConnected = false;
540
- this.dispatchWakuConnectionEvent();
541
- }
542
- }
543
- dispatchWakuConnectionEvent() {
544
- this.dispatchEvent(new CustomEvent(EConnectionStateEvents.CONNECTION_STATUS, {
545
- detail: this.isConnected()
546
- }));
110
+ async isPeerOnTopic(peerId, pubsubTopic) {
111
+ return this.shardReader.isPeerOnTopic(peerId, pubsubTopic);
547
112
  }
548
113
  }
549
114
  //# sourceMappingURL=connection_manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection_manager.js","sourceRoot":"","sources":["../../../src/lib/connection_manager/connection_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAMR,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAa,SAAS,EAAkB,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAGL,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EAQxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAU,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAE7C,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAC9C,MAAM,kCAAkC,GAAG,CAAC,CAAC;AAC7C,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAErC,MAAM,2BAA2B,GAAG,CAAC,GAAG,EAAE,CAAC;AAC3C,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE,CAAC;AAS5C,MAAM,OAAO,iBACX,SAAQ,iBAAmE;IAG3E,gCAAgC;IAChB,YAAY,CAAgB;IAEpC,gBAAgB,CAAmB;IACnC,OAAO,CAA2B;IAClC,MAAM,CAAS;IACf,mBAAmB,GAAwB,IAAI,GAAG,EAAE,CAAC;IACrD,iBAAiB,GAAqB,IAAI,GAAG,EAAE,CAAC;IAEhD,8BAA8B,GAAG,CAAC,CAAC;IACnC,oBAAoB,GAAkB,EAAE,CAAC;IAEzC,qBAAqB,GAAY,KAAK,CAAC;IAExC,WAAW;QAChB,IAAI,UAAU,EAAE,SAAS,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAC7B,cAAc,EACd,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CACrC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAC7B,iBAAiB,EACjB,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CACxC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAC7B,gBAAgB,EAChB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CACvC,CAAC;QACF,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,MAAc;QACxC,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,gCAAgC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CACP,uCAAuC,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,EAAE,CACtE,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,mBAAmB;QAC9B,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM;aAC/B,cAAc,EAAE;aAChB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAElC,MAAM,0BAA0B,GAAW,EAAE,CAAC;QAC9C,MAAM,6BAA6B,GAAW,EAAE,CAAC;QACjD,MAAM,sBAAsB,GAAW,EAAE,CAAC;QAE1C,MAAM,yBAAyB,GAAW,EAAE,CAAC;QAC7C,MAAM,4BAA4B,GAAW,EAAE,CAAC;QAChD,MAAM,qBAAqB,GAAW,EAAE,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEpD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC7C,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAEnD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC7C,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO;YACL,UAAU,EAAE;gBACV,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,0BAA0B;gBAC5C,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,6BAA6B;gBACnD,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,sBAAsB;aACrC;YACD,SAAS,EAAE;gBACT,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,yBAAyB;gBAC3C,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,4BAA4B;gBAClD,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,qBAAqB;aACpC;SACF,CAAC;IACJ,CAAC;IAED,YAAmB,OAA4C;QAC7D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG;YACb,sBAAsB,EAAE,kCAAkC;YAC1D,wBAAwB,EAAE,mCAAmC;YAC7D,gBAAgB,EAAE,0BAA0B;YAC5C,aAAa,EAAE,2BAA2B;YAC1C,cAAc,EAAE,4BAA4B;YAC5C,GAAG,OAAO,CAAC,MAAM;SAClB,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;YAC3C,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE;gBACP,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;gBACzC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;aAC5C;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE;aACvB,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;aACzD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CACf,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAC3D,CAAC;QAEJ,iEAAiE;QACjE,oGAAoG;QACpG,iIAAiI;QACjI,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CACxC,GAAG,CAAC,KAAK,CAAC,iDAAiD,EAAE,KAAK,CAAC,CACpE,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,KAAc;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAEvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YACvB,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,KAAK;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACrE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAW,CAAC;IAC7E,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IACE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,EAAE,CAAC;gBAEtE,SAAS;YAEX,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,8BAA8B,EAAE,CAAC;QAEtC,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACI,KAAK,CAAC,QAAQ,CAAC,IAA6B;QACjD,IAAI,UAAkC,CAAC;QACvC,IAAI,MAA0B,CAAC;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC;YACtC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE;YACzB,CAAC,CAAC,YAAY,CAAC,SAAS,EAAG,CAAC;QAE9B,IAAI,CAAC,8BAA8B,IAAI,CAAC,CAAC;QACzC,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,OAAO,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;YACzD,IAAI,CAAC;gBACH,GAAG,CAAC,IAAI,CAAC,gBAAgB,YAAY,eAAe,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC;gBACvE,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAClD,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC;gBAE/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBACnD,uDAAuD;gBACvD,2BAA2B;gBAC3B,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBAClD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,kFAAkF;gBAClF,iEAAiE;gBACjE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAEpD,oCAAoC;gBACpC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM;YACR,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;oBACpC,wBAAwB;oBACxB,GAAG,CAAC,KAAK,CAAC,sBAAsB,SAAS,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACN,uBAAuB;oBACvB,GAAG,CAAC,KAAK,CACP,sBAAsB,SAAS,MAAO,KAAa,CAAC,OAAO,EAAE,CAC9D,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAE7C,WAAW,EAAE,CAAC;gBACd,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,mEAAmE;QACnE,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,mEAAmE;QACnE,IAAI,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAEpD,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,YAAY,CAAC;oBACjB,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;wBACpC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;4BAClB,GAAG,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;wBACvD,CAAC;6BAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACrC,GAAG,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;wBACvD,CAAC;6BAAM,CAAC;4BACN,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBACjD,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;oBAC/B,CAAC;oBAED,GAAG,CAAC,IAAI,CACN,4BAA4B,SAAS,6BAA6B,YAAY,EAAE,CACjF,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACzC,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC7C,CAAC;gBAED,wDAAwD;gBACxD,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,kCAAkC,SAAS,sBAAsB,KAAK,EAAE,CACzE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,wBAAwB,CACnC,IAA6B,EAC7B,cAAwB;QAExB,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACK,mBAAmB,CACzB,IAA6B;QAE7B,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,iCAAiC;YACjC,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QACpD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QAE3D,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAEjD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CACxE,CAAC,CAAU,EAAE,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAClD,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CACkB,CAAC;QAEtB,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAEO,gBAAgB;QACtB,IACE,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;YACpC,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EACnE,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,0BAA0B;QAChC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAC1B,gBAAgB,EAChB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CACvC,CAAC;IACJ,CAAC;IAEO,2BAA2B;QACjC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAC1B,cAAc,EACd,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CACrC,CAAC;IACJ,CAAC;IAEO,8BAA8B;QACpC,qEAAqE;QACrE;;;;;;;;;;WAUG;QACH,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAC1B,iBAAiB,EACjB,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CACxC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,MAAc;QACrC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAAE,OAAO;QAEjD,IAAI,IAAI,CAAC,8BAA8B,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACzE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAEO,eAAe,GAAG;QACxB,gBAAgB,EAAE,CAAC,GAA0B,EAAQ,EAAE;YACrD,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;gBAElC,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBAE1C,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,GAAG,CAAC,KAAK,CAAC,sBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,cAAc,EAAE,CAAC,GAAwB,EAAQ,EAAE;YACjD,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,GAAG,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAEvD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;gBAE1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEpC,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAClE,IAAI,CAAC,SAAS,CACf,CAAC;gBAEF,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM;yBACrC,cAAc,EAAE;yBAChB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;oBAExD,sDAAsD;oBACtD,IACE,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,EACnE,CAAC;wBACD,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CACb,uBAAuB,CAAC,sBAAsB,EAC9C;4BACE,MAAM,EAAE,MAAM;yBACf,CACF,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CACb,uBAAuB,CAAC,0BAA0B,EAClD;wBACE,MAAM,EAAE,MAAM;qBACf,CACF,CACF,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,iBAAiB,EAAE,CAAC,GAAwB,EAAQ,EAAE;YACpD,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACvC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACnC,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,iBAAiB,EAAE,GAAS,EAAE;YAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC;KACF,CAAC;IAEF;;;;;;;OAOG;IACK,KAAK,CAAC,cAAc,CAAC,MAAc;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAClE,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YACzE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC3C,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,SAAS,CACtB,CAAC;YAEF,GAAG,CAAC,IAAI,CACN,mBAAmB,MAAM,CAAC,QAAQ,EAAE,mBAAmB,SAAS,wDAC9D,IAAI,CAAC,YACP;yBACiB,CAClB,CAAC;YAEF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,2BAA2B,GAC/B,MAAM,IAAI,CAAC,oCAAoC,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CACN,QAAQ,MAAM,CAAC,QAAQ,EAAE,0DAA0D,CACpF,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtE,IAAI,aAAa,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CACN,QAAQ,MAAM,CAAC,QAAQ,EAAE,mGAAmG,CAC7H,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,oCAAoC,CAChD,MAAc;QAEd,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEvD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;QAE3E,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,2BAA2B,GAAG,IAAI,CAAC,MAAM;aAC5C,cAAc,EAAE;aAChB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACf,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC,MAAM,CAAC;QAEZ,OAAO,2BAA2B,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC;IAC7E,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,MAAc;QACjD,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAClE,IAAI,CAAC,SAAS,CACf,CAAC;QAEF,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CACb,WAAW;YACT,CAAC,CAAC,uBAAuB,CAAC,wBAAwB;YAClD,CAAC,CAAC,uBAAuB,CAAC,4BAA4B,EACxD;YACE,MAAM,EAAE,MAAM;SACf,CACF,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,MAAc;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,KAAK,CAAC,sBAAsB,MAAM,YAAY,KAAK,EAAE,CAAC,CAAC;YAC3D,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,MAAc;QAChD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC3C,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,SAAS,CACtB,CAAC;QAEF,sDAAsD;QACtD,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAE5B,MAAM,YAAY,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAExD,MAAM,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACpD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAClC,CAAC;QACF,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,MAAc,EACd,SAAoB;QAEpB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc;YAAE,OAAO,SAAS,CAAC;QACtC,OAAO,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAEO,0BAA0B;QAChC,IAAI,CAAC;YACH,UAAU,CAAC,gBAAgB,CACzB,QAAQ,EACR,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CACxC,CAAC;YACF,UAAU,CAAC,gBAAgB,CACzB,SAAS,EACT,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CACxC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAEO,yBAAyB;QAC/B,IAAI,CAAC;YACH,UAAU,CAAC,mBAAmB,CAC5B,QAAQ,EACR,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CACxC,CAAC;YACF,UAAU,CAAC,mBAAmB,CAC5B,SAAS,EACT,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,CACxC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAClC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,yBAAyB;QAC/B,IACE,IAAI,CAAC,qBAAqB;YAC1B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,MAAM,KAAK,CAAC,EACzC,CAAC;YACD,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,2BAA2B;QACjC,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAU,sBAAsB,CAAC,iBAAiB,EAAE;YACjE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE;SAC3B,CAAC,CACH,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"connection_manager.js","sourceRoot":"","sources":["../../../src/lib/connection_manager/connection_manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { Libp2p } from "libp2p";
2
+ import type { ShardReader } from "./shard_reader.js";
3
+ type DiscoveryDialerConstructorOptions = {
4
+ libp2p: Libp2p;
5
+ shardReader: ShardReader;
6
+ };
7
+ interface IDiscoveryDialer {
8
+ start(): void;
9
+ stop(): void;
10
+ }
11
+ /**
12
+ * This class is responsible for dialing peers that are discovered by the libp2p node.
13
+ * Managing limits for the peers is out of scope for this class.
14
+ * Dialing after discovery is needed to identify the peer and get all other information: metadata, protocols, etc.
15
+ */
16
+ export declare class DiscoveryDialer implements IDiscoveryDialer {
17
+ private readonly libp2p;
18
+ private readonly shardReader;
19
+ private dialingInterval;
20
+ private dialingQueue;
21
+ private dialHistory;
22
+ constructor(options: DiscoveryDialerConstructorOptions);
23
+ start(): void;
24
+ stop(): void;
25
+ private onPeerDiscovery;
26
+ private processQueue;
27
+ private shouldSkipPeer;
28
+ private updatePeerStore;
29
+ private dialPeer;
30
+ private getPeer;
31
+ }
32
+ export {};