@peerbit/stream 1.0.7 → 1.0.9

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.
@@ -1,23 +1,23 @@
1
- import { EventEmitter } from "@libp2p/interfaces/events";
1
+ import { EventEmitter } from "@libp2p/interface/events";
2
2
  import Queue from "p-queue";
3
- import type { PeerId } from "@libp2p/interface-peer-id";
4
- import type { Connection } from "@libp2p/interface-connection";
3
+ import type { PeerId } from "@libp2p/interface/peer-id";
4
+ import type { Connection } from "@libp2p/interface/connection";
5
5
  import type { Pushable } from "it-pushable";
6
- import type { Stream } from "@libp2p/interface-connection";
6
+ import type { Stream } from "@libp2p/interface/connection";
7
7
  import { Uint8ArrayList } from "uint8arraylist";
8
8
  import { Routes } from "./routes.js";
9
9
  import { PeerMap } from "./peer-map.js";
10
- import type { IncomingStreamData, Registrar } from "@libp2p/interface-registrar";
11
- import { ConnectionManager } from "@libp2p/interface-connection-manager";
12
- import { PeerStore } from "@libp2p/interface-peer-store";
10
+ import type { IncomingStreamData, Registrar } from "@libp2p/interface-internal/registrar";
11
+ import type { AddressManager } from "@libp2p/interface-internal/address-manager";
12
+ import type { ConnectionManager } from "@libp2p/interface-internal/connection-manager";
13
+ import { PeerStore } from "@libp2p/interface/peer-store";
13
14
  import { waitFor } from "@peerbit/time";
14
15
  import { PublicSignKey, SignatureWithKey } from "@peerbit/crypto";
15
16
  export type SignaturePolicy = "StictSign" | "StrictNoSign";
16
- import type { AddressManager } from "@libp2p/interface-address-manager";
17
17
  import { logger } from "./logger.js";
18
18
  import { Cache } from "@peerbit/cache";
19
19
  export { logger };
20
- import type { Libp2pEvents } from "@libp2p/interface-libp2p";
20
+ import type { Libp2pEvents } from "@libp2p/interface";
21
21
  import { PeerEvents, Message as Message, Goodbye, Hello, DataMessage, PingPong, WaitForPeer } from "@peerbit/stream-interface";
22
22
  export interface PeerStreamsInit {
23
23
  peerId: PeerId;
@@ -91,7 +91,7 @@ export declare class PeerStreams extends EventEmitter<PeerStreamEvents> {
91
91
  /**
92
92
  * Closes the open connection to peer
93
93
  */
94
- close(): void;
94
+ close(): Promise<void>;
95
95
  }
96
96
  export interface MessageEvents {
97
97
  message: CustomEvent<Message>;
@@ -113,7 +113,8 @@ export type DirectStreamOptions = {
113
113
  pingInterval?: number;
114
114
  connectionManager?: ConnectionManagerOptions;
115
115
  };
116
- export interface DirectStreamComponents {
116
+ import { Components } from "libp2p/components";
117
+ export interface DirectStreamComponents extends Components {
117
118
  peerId: PeerId;
118
119
  addressManager: AddressManager;
119
120
  registrar: Registrar;
@@ -200,7 +201,7 @@ export declare abstract class DirectStream<Events extends {
200
201
  /**
201
202
  * Notifies the router that a peer has been disconnected
202
203
  */
203
- protected _removePeer(publicKey: PublicSignKey): PeerStreams | undefined;
204
+ protected _removePeer(publicKey: PublicSignKey): Promise<PeerStreams | undefined>;
204
205
  /**
205
206
  * Responsible for processing each RPC message received by other peers.
206
207
  */
package/lib/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { EventEmitter, CustomEvent } from "@libp2p/interfaces/events";
1
+ import { EventEmitter, CustomEvent } from "@libp2p/interface/events";
2
2
  import { pipe } from "it-pipe";
3
3
  import Queue from "p-queue";
4
4
  import { pushable } from "it-pushable";
@@ -11,7 +11,6 @@ import { delay, TimeoutError, waitFor } from "@peerbit/time";
11
11
  import { getKeypairFromPeerId, getPublicKeyFromPeerId, PublicSignKey, } from "@peerbit/crypto";
12
12
  import { logger } from "./logger.js";
13
13
  import { Cache } from "@peerbit/cache";
14
- import { createTopology } from "./topology.js";
15
14
  export { logger };
16
15
  import { Message as Message, Goodbye, Hello, DataMessage, Ping, PingPong, Pong, getMsgId, } from "@peerbit/stream-interface";
17
16
  const isWebsocketConnection = (c) => c.remoteAddr.protoNames().find((x) => x === "ws" || x === "wss");
@@ -154,12 +153,13 @@ export class PeerStreams extends EventEmitter {
154
153
  this.outboundStream = pushable({
155
154
  objectMode: true,
156
155
  onEnd: () => {
157
- stream.close();
158
- if (this._rawOutboundStream === stream) {
159
- this.dispatchEvent(new CustomEvent("close"));
160
- this._rawOutboundStream = undefined;
161
- this.outboundStream = undefined;
162
- }
156
+ return stream.close().then(() => {
157
+ if (this._rawOutboundStream === stream) {
158
+ this.dispatchEvent(new CustomEvent("close"));
159
+ this._rawOutboundStream = undefined;
160
+ this.outboundStream = undefined;
161
+ }
162
+ });
163
163
  },
164
164
  });
165
165
  pipe(this.outboundStream, (source) => lp.encode(source), this._rawOutboundStream).catch((err) => {
@@ -176,20 +176,20 @@ export class PeerStreams extends EventEmitter {
176
176
  /**
177
177
  * Closes the open connection to peer
178
178
  */
179
- close() {
179
+ async close() {
180
180
  if (this.closed) {
181
181
  return;
182
182
  }
183
183
  this.closed = true;
184
184
  // End the outbound stream
185
185
  if (this.outboundStream != null) {
186
- this.outboundStream.return();
187
- this._rawOutboundStream?.close();
186
+ await this.outboundStream.return();
187
+ await this._rawOutboundStream?.close();
188
188
  }
189
189
  // End the inbound stream
190
190
  if (this.inboundStream != null) {
191
191
  this.inboundAbortController.abort();
192
- this._rawInboundStream?.close();
192
+ await this._rawInboundStream?.close();
193
193
  }
194
194
  this.pingJob?.abort();
195
195
  this.pingLatency = undefined;
@@ -280,13 +280,12 @@ export class DirectStream extends EventEmitter {
280
280
  return;
281
281
  }
282
282
  logger.debug("starting");
283
- this.topology = createTopology({
284
- onConnect: this.onPeerConnected.bind(this),
285
- onDisconnect: this.onPeerDisconnected.bind(this),
286
- });
287
283
  // register protocol with topology
288
284
  // Topology callbacks called on connection manager changes
289
- this._registrarTopologyIds = await Promise.all(this.multicodecs.map((multicodec) => this.components.registrar.register(multicodec, this.topology)));
285
+ this._registrarTopologyIds = await Promise.all(this.multicodecs.map((multicodec) => this.components.registrar.register(multicodec, {
286
+ onConnect: this.onPeerConnected.bind(this),
287
+ onDisconnect: this.onPeerDisconnected.bind(this),
288
+ })));
290
289
  // Incoming streams
291
290
  // Called after a peer dials us
292
291
  await Promise.all(this.multicodecs.map((multicodec) => this.components.registrar.handle(multicodec, this._onIncomingStream, {
@@ -357,7 +356,7 @@ export class DirectStream extends EventEmitter {
357
356
  await Promise.all(this.multicodecs.map((x) => this.components.registrar.unhandle(x)));
358
357
  logger.debug("stopping");
359
358
  for (const peerStreams of this.peers.values()) {
360
- peerStreams.close();
359
+ await peerStreams.close();
361
360
  }
362
361
  // unregister protocol and handlers
363
362
  if (this._registrarTopologyIds != null) {
@@ -386,12 +385,12 @@ export class DirectStream extends EventEmitter {
386
385
  }
387
386
  const { stream, connection } = data;
388
387
  const peerId = connection.remotePeer;
389
- if (stream.stat.protocol == null) {
388
+ if (stream.protocol == null) {
390
389
  stream.abort(new Error("Stream was not multiplexed"));
391
390
  return;
392
391
  }
393
392
  const publicKey = getPublicKeyFromPeerId(peerId);
394
- const peer = this.addPeer(peerId, publicKey, stream.stat.protocol, connection.id);
393
+ const peer = this.addPeer(peerId, publicKey, stream.protocol, connection.id);
395
394
  const inboundStream = peer.attachInboundStream(stream);
396
395
  this.processMessages(peerId, inboundStream, peer).catch((err) => {
397
396
  logger.error(err);
@@ -401,21 +400,21 @@ export class DirectStream extends EventEmitter {
401
400
  * Registrar notifies an established connection with protocol
402
401
  */
403
402
  async onPeerConnected(peerId, conn, fromExisting) {
404
- if (!this.isStarted() || conn.stat.status !== "OPEN") {
403
+ if (!this.isStarted() || conn.status !== "open") {
405
404
  return;
406
405
  }
407
406
  try {
408
407
  const peerKey = getPublicKeyFromPeerId(peerId);
409
408
  const peerKeyHash = peerKey.hashcode();
410
409
  for (const existingStreams of conn.streams) {
411
- if (existingStreams.stat.protocol &&
412
- this.multicodecs.includes(existingStreams.stat.protocol) &&
413
- existingStreams.stat.direction === "outbound") {
410
+ if (existingStreams.protocol &&
411
+ this.multicodecs.includes(existingStreams.protocol) &&
412
+ existingStreams.direction === "outbound") {
414
413
  return;
415
414
  }
416
415
  }
417
416
  // This condition seem to work better than the one above, for some reason.
418
- // The reason we need this at all is because we will connect to existing connection and recieve connection that
417
+ // The reason we need this at all is because we will connect to existing connection and receive connection that
419
418
  // some times, yields a race connections where connection drop each other by reset
420
419
  let stream = undefined; // TODO types
421
420
  let tries = 0;
@@ -426,12 +425,14 @@ export class DirectStream extends EventEmitter {
426
425
  return;
427
426
  }
428
427
  try {
429
- stream = await conn.newStream(this.multicodecs);
430
- if (stream.stat.protocol == null) {
428
+ stream = await conn.newStream(this.multicodecs, {
429
+ runOnTransientConnection: true,
430
+ });
431
+ if (stream.protocol == null) {
431
432
  stream.abort(new Error("Stream was not multiplexed"));
432
433
  return;
433
434
  }
434
- peer = this.addPeer(peerId, peerKey, stream.stat.protocol, conn.id); // TODO types
435
+ peer = this.addPeer(peerId, peerKey, stream.protocol, conn.id); // TODO types
435
436
  await peer.attachOutboundStream(stream);
436
437
  // TODO do we want to do this?
437
438
  /* if (!peer.inboundStream) {
@@ -454,7 +455,7 @@ export class DirectStream extends EventEmitter {
454
455
  await delay(100);
455
456
  continue; // Retry
456
457
  }
457
- if (conn.stat.status !== "OPEN" ||
458
+ if (conn.status !== "open" ||
458
459
  error?.message === "Muxer already closed" ||
459
460
  error.code === "ERR_STREAM_RESET") {
460
461
  return; // fail silenty
@@ -560,7 +561,7 @@ export class DirectStream extends EventEmitter {
560
561
  return;
561
562
  }
562
563
  if (!this.publicKey.equals(peerKey)) {
563
- this._removePeer(peerKey);
564
+ await this._removePeer(peerKey);
564
565
  this.removeRouteConnection(this.publicKey, peerKey);
565
566
  // Notify network
566
567
  const earlyGoodBye = this.earlyGoodbyes.get(peerKeyHash);
@@ -622,14 +623,14 @@ export class DirectStream extends EventEmitter {
622
623
  /**
623
624
  * Notifies the router that a peer has been disconnected
624
625
  */
625
- _removePeer(publicKey) {
626
+ async _removePeer(publicKey) {
626
627
  const hash = publicKey.hashcode();
627
628
  const peerStreams = this.peers.get(hash);
628
629
  if (peerStreams == null) {
629
630
  return;
630
631
  }
631
632
  // close peer streams
632
- peerStreams.close();
633
+ await peerStreams.close();
633
634
  // delete peer streams
634
635
  logger.debug("delete peer" + publicKey.toString());
635
636
  this.peers.delete(hash);
@@ -850,7 +851,7 @@ export class DirectStream extends EventEmitter {
850
851
  await this.publishMessage(this.components.peerId, new Pong(message.pingBytes), [peerStream]);
851
852
  }
852
853
  else if (message instanceof Pong) {
853
- // Let the (waiting) thread know that we have recieved the pong
854
+ // Let the (waiting) thread know that we have received the pong
854
855
  peerStream.pingJob?.resolve();
855
856
  }
856
857
  else {
@@ -1070,7 +1071,7 @@ export class DirectStream extends EventEmitter {
1070
1071
  await id.waitForWrite(bytes);
1071
1072
  }
1072
1073
  if (!sentOnce && !relayed) {
1073
- throw new Error("Message did not have any valid recievers. ");
1074
+ throw new Error("Message did not have any valid receivers. ");
1074
1075
  }
1075
1076
  }
1076
1077
  async maybeConnectDirectly(path) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/stream",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "A building block for direct streaming protocols",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -50,22 +50,21 @@
50
50
  "dao.xyz"
51
51
  ],
52
52
  "devDependencies": {
53
- "@peerbit/libp2p-test-utils": "1.0.2",
53
+ "@peerbit/libp2p-test-utils": "1.0.3",
54
54
  "@types/yallist": "^4.0.1",
55
55
  "graphology-types": "^0.24.7"
56
56
  },
57
57
  "dependencies": {
58
58
  "@dao-xyz/borsh": "^5.1.5",
59
- "@libp2p/topology": "^4.0.1",
60
59
  "@peerbit/cache": "1.0.2",
61
- "@peerbit/crypto": "1.0.4",
62
- "@peerbit/stream-interface": "^1.0.5",
60
+ "@peerbit/crypto": "1.0.5",
61
+ "@peerbit/stream-interface": "^1.0.6",
63
62
  "abstract-level": "^1.0.3",
64
63
  "graphology": "0.25.1",
65
64
  "graphology-shortest-path": "2.0.2",
66
- "libp2p": "^0.45.9",
65
+ "libp2p": "^0.46.6",
67
66
  "memory-level": "^1.0.0",
68
67
  "yallist": "^4.0.0"
69
68
  },
70
- "gitHead": "4752c301fb49b2f937b4039533ff5bc3537da3e0"
69
+ "gitHead": "2efb4d5dc542ac84cfd79bb576506ba0ca392a72"
71
70
  }
package/src/index.ts CHANGED
@@ -1,11 +1,11 @@
1
- import { EventEmitter, CustomEvent } from "@libp2p/interfaces/events";
1
+ import { EventEmitter, CustomEvent } from "@libp2p/interface/events";
2
2
  import { pipe } from "it-pipe";
3
3
  import Queue from "p-queue";
4
- import type { PeerId } from "@libp2p/interface-peer-id";
5
- import type { Connection } from "@libp2p/interface-connection";
4
+ import type { PeerId } from "@libp2p/interface/peer-id";
5
+ import type { Connection } from "@libp2p/interface/connection";
6
6
  import type { Pushable } from "it-pushable";
7
7
  import { pushable } from "it-pushable";
8
- import type { Stream } from "@libp2p/interface-connection";
8
+ import type { Stream } from "@libp2p/interface/connection";
9
9
  import { Uint8ArrayList } from "uint8arraylist";
10
10
  import { abortableSource } from "abortable-iterator";
11
11
  import * as lp from "it-length-prefixed";
@@ -15,9 +15,11 @@ import { PeerMap } from "./peer-map.js";
15
15
  import type {
16
16
  IncomingStreamData,
17
17
  Registrar,
18
- } from "@libp2p/interface-registrar";
19
- import { ConnectionManager } from "@libp2p/interface-connection-manager";
20
- import { PeerStore } from "@libp2p/interface-peer-store";
18
+ } from "@libp2p/interface-internal/registrar";
19
+ import type { AddressManager } from "@libp2p/interface-internal/address-manager";
20
+ import type { ConnectionManager } from "@libp2p/interface-internal/connection-manager";
21
+
22
+ import { PeerStore } from "@libp2p/interface/peer-store";
21
23
 
22
24
  import { delay, TimeoutError, waitFor } from "@peerbit/time";
23
25
  import {
@@ -29,13 +31,10 @@ import {
29
31
  } from "@peerbit/crypto";
30
32
 
31
33
  export type SignaturePolicy = "StictSign" | "StrictNoSign";
32
- import type { AddressManager } from "@libp2p/interface-address-manager";
33
-
34
34
  import { logger } from "./logger.js";
35
35
  import { Cache } from "@peerbit/cache";
36
- import { createTopology } from "./topology.js";
37
36
  export { logger };
38
- import type { Libp2pEvents } from "@libp2p/interface-libp2p";
37
+ import type { Libp2pEvents } from "@libp2p/interface";
39
38
  import {
40
39
  PeerEvents,
41
40
  Message as Message,
@@ -220,18 +219,20 @@ export class PeerStreams extends EventEmitter<PeerStreamEvents> {
220
219
  async attachOutboundStream(stream: Stream) {
221
220
  // If an outbound stream already exists, gently close it
222
221
  const _prevStream = this.outboundStream;
222
+
223
223
  this._rawOutboundStream = stream;
224
224
  this.pingJob?.abort();
225
225
 
226
226
  this.outboundStream = pushable<Uint8ArrayList>({
227
227
  objectMode: true,
228
228
  onEnd: () => {
229
- stream.close();
230
- if (this._rawOutboundStream === stream) {
231
- this.dispatchEvent(new CustomEvent("close"));
232
- this._rawOutboundStream = undefined;
233
- this.outboundStream = undefined;
234
- }
229
+ return stream.close().then(() => {
230
+ if (this._rawOutboundStream === stream) {
231
+ this.dispatchEvent(new CustomEvent("close"));
232
+ this._rawOutboundStream = undefined;
233
+ this.outboundStream = undefined;
234
+ }
235
+ });
235
236
  },
236
237
  });
237
238
 
@@ -256,7 +257,7 @@ export class PeerStreams extends EventEmitter<PeerStreamEvents> {
256
257
  /**
257
258
  * Closes the open connection to peer
258
259
  */
259
- close() {
260
+ async close() {
260
261
  if (this.closed) {
261
262
  return;
262
263
  }
@@ -265,13 +266,13 @@ export class PeerStreams extends EventEmitter<PeerStreamEvents> {
265
266
 
266
267
  // End the outbound stream
267
268
  if (this.outboundStream != null) {
268
- this.outboundStream.return();
269
- this._rawOutboundStream?.close();
269
+ await this.outboundStream.return();
270
+ await this._rawOutboundStream?.close();
270
271
  }
271
272
  // End the inbound stream
272
273
  if (this.inboundStream != null) {
273
274
  this.inboundAbortController.abort();
274
- this._rawInboundStream?.close();
275
+ await this._rawInboundStream?.close();
275
276
  }
276
277
 
277
278
  this.pingJob?.abort();
@@ -308,7 +309,9 @@ export type DirectStreamOptions = {
308
309
  connectionManager?: ConnectionManagerOptions;
309
310
  };
310
311
 
311
- export interface DirectStreamComponents {
312
+ import { Components } from "libp2p/components";
313
+
314
+ export interface DirectStreamComponents extends Components {
312
315
  peerId: PeerId;
313
316
  addressManager: AddressManager;
314
317
  registrar: Registrar;
@@ -421,16 +424,14 @@ export abstract class DirectStream<
421
424
 
422
425
  logger.debug("starting");
423
426
 
424
- this.topology = createTopology({
425
- onConnect: this.onPeerConnected.bind(this),
426
- onDisconnect: this.onPeerDisconnected.bind(this),
427
- });
428
-
429
427
  // register protocol with topology
430
428
  // Topology callbacks called on connection manager changes
431
429
  this._registrarTopologyIds = await Promise.all(
432
430
  this.multicodecs.map((multicodec) =>
433
- this.components.registrar.register(multicodec, this.topology)
431
+ this.components.registrar.register(multicodec, {
432
+ onConnect: this.onPeerConnected.bind(this),
433
+ onDisconnect: this.onPeerDisconnected.bind(this),
434
+ })
434
435
  )
435
436
  );
436
437
 
@@ -520,7 +521,7 @@ export abstract class DirectStream<
520
521
 
521
522
  logger.debug("stopping");
522
523
  for (const peerStreams of this.peers.values()) {
523
- peerStreams.close();
524
+ await peerStreams.close();
524
525
  }
525
526
 
526
527
  // unregister protocol and handlers
@@ -557,7 +558,7 @@ export abstract class DirectStream<
557
558
 
558
559
  const { stream, connection } = data;
559
560
  const peerId = connection.remotePeer;
560
- if (stream.stat.protocol == null) {
561
+ if (stream.protocol == null) {
561
562
  stream.abort(new Error("Stream was not multiplexed"));
562
563
  return;
563
564
  }
@@ -566,7 +567,7 @@ export abstract class DirectStream<
566
567
  const peer = this.addPeer(
567
568
  peerId,
568
569
  publicKey,
569
- stream.stat.protocol,
570
+ stream.protocol,
570
571
  connection.id
571
572
  );
572
573
  const inboundStream = peer.attachInboundStream(stream);
@@ -583,7 +584,7 @@ export abstract class DirectStream<
583
584
  conn: Connection,
584
585
  fromExisting?: boolean
585
586
  ) {
586
- if (!this.isStarted() || conn.stat.status !== "OPEN") {
587
+ if (!this.isStarted() || conn.status !== "open") {
587
588
  return;
588
589
  }
589
590
  try {
@@ -592,16 +593,16 @@ export abstract class DirectStream<
592
593
 
593
594
  for (const existingStreams of conn.streams) {
594
595
  if (
595
- existingStreams.stat.protocol &&
596
- this.multicodecs.includes(existingStreams.stat.protocol) &&
597
- existingStreams.stat.direction === "outbound"
596
+ existingStreams.protocol &&
597
+ this.multicodecs.includes(existingStreams.protocol) &&
598
+ existingStreams.direction === "outbound"
598
599
  ) {
599
600
  return;
600
601
  }
601
602
  }
602
603
 
603
604
  // This condition seem to work better than the one above, for some reason.
604
- // The reason we need this at all is because we will connect to existing connection and recieve connection that
605
+ // The reason we need this at all is because we will connect to existing connection and receive connection that
605
606
  // some times, yields a race connections where connection drop each other by reset
606
607
 
607
608
  let stream: Stream = undefined as any; // TODO types
@@ -614,12 +615,14 @@ export abstract class DirectStream<
614
615
  }
615
616
 
616
617
  try {
617
- stream = await conn.newStream(this.multicodecs);
618
- if (stream.stat.protocol == null) {
618
+ stream = await conn.newStream(this.multicodecs, {
619
+ runOnTransientConnection: true,
620
+ });
621
+ if (stream.protocol == null) {
619
622
  stream.abort(new Error("Stream was not multiplexed"));
620
623
  return;
621
624
  }
622
- peer = this.addPeer(peerId, peerKey, stream.stat.protocol!, conn.id); // TODO types
625
+ peer = this.addPeer(peerId, peerKey, stream.protocol!, conn.id); // TODO types
623
626
  await peer.attachOutboundStream(stream);
624
627
 
625
628
  // TODO do we want to do this?
@@ -644,7 +647,7 @@ export abstract class DirectStream<
644
647
  }
645
648
 
646
649
  if (
647
- conn.stat.status !== "OPEN" ||
650
+ conn.status !== "open" ||
648
651
  error?.message === "Muxer already closed" ||
649
652
  error.code === "ERR_STREAM_RESET"
650
653
  ) {
@@ -788,7 +791,7 @@ export abstract class DirectStream<
788
791
  }
789
792
 
790
793
  if (!this.publicKey.equals(peerKey)) {
791
- this._removePeer(peerKey);
794
+ await this._removePeer(peerKey);
792
795
  this.removeRouteConnection(this.publicKey, peerKey);
793
796
 
794
797
  // Notify network
@@ -870,7 +873,7 @@ export abstract class DirectStream<
870
873
  /**
871
874
  * Notifies the router that a peer has been disconnected
872
875
  */
873
- protected _removePeer(publicKey: PublicSignKey) {
876
+ protected async _removePeer(publicKey: PublicSignKey) {
874
877
  const hash = publicKey.hashcode();
875
878
  const peerStreams = this.peers.get(hash);
876
879
 
@@ -879,7 +882,7 @@ export abstract class DirectStream<
879
882
  }
880
883
 
881
884
  // close peer streams
882
- peerStreams.close();
885
+ await peerStreams.close();
883
886
 
884
887
  // delete peer streams
885
888
  logger.debug("delete peer" + publicKey.toString());
@@ -1171,7 +1174,7 @@ export abstract class DirectStream<
1171
1174
  [peerStream]
1172
1175
  );
1173
1176
  } else if (message instanceof Pong) {
1174
- // Let the (waiting) thread know that we have recieved the pong
1177
+ // Let the (waiting) thread know that we have received the pong
1175
1178
  peerStream.pingJob?.resolve();
1176
1179
  } else {
1177
1180
  throw new Error("Unsupported");
@@ -1432,7 +1435,7 @@ export abstract class DirectStream<
1432
1435
  await id.waitForWrite(bytes);
1433
1436
  }
1434
1437
  if (!sentOnce && !relayed) {
1435
- throw new Error("Message did not have any valid recievers. ");
1438
+ throw new Error("Message did not have any valid receivers. ");
1436
1439
  }
1437
1440
  }
1438
1441
 
@@ -1,24 +0,0 @@
1
- import { topologySymbol as symbol } from "@libp2p/interface-registrar";
2
- import type { PeerId } from "@libp2p/interface-peer-id";
3
- import type { Topology, TopologyInit, onConnectHandler, onDisconnectHandler, Registrar } from "@libp2p/interface-registrar";
4
- import type { Connection } from "@libp2p/interface-connection";
5
- export declare class TopologyImpl implements Topology {
6
- min: number;
7
- max: number;
8
- /**
9
- * Set of peers that support the protocol
10
- */
11
- peers: Set<string>;
12
- onConnect: onConnectHandler;
13
- onDisconnect: onDisconnectHandler;
14
- protected registrar: Registrar | undefined;
15
- constructor(init: TopologyInit);
16
- get [Symbol.toStringTag](): string;
17
- get [symbol](): boolean;
18
- setRegistrar(registrar: Registrar): Promise<void>;
19
- /**
20
- * Notify about peer disconnected event
21
- */
22
- disconnect(peerId: PeerId, conn: Connection): void;
23
- }
24
- export declare function createTopology(init: TopologyInit): Topology;
@@ -1,39 +0,0 @@
1
- import { topologySymbol as symbol } from "@libp2p/interface-registrar";
2
- const noop = () => undefined;
3
- export class TopologyImpl {
4
- min;
5
- max;
6
- /**
7
- * Set of peers that support the protocol
8
- */
9
- peers;
10
- onConnect;
11
- onDisconnect;
12
- registrar;
13
- constructor(init) {
14
- this.min = init.min ?? 0;
15
- this.max = init.max ?? Infinity;
16
- this.peers = new Set();
17
- this.onConnect = init.onConnect ?? noop;
18
- this.onDisconnect = init.onDisconnect ?? noop;
19
- }
20
- get [Symbol.toStringTag]() {
21
- return symbol.toString();
22
- }
23
- get [symbol]() {
24
- return true;
25
- }
26
- async setRegistrar(registrar) {
27
- this.registrar = registrar;
28
- }
29
- /**
30
- * Notify about peer disconnected event
31
- */
32
- disconnect(peerId, conn) {
33
- this.onDisconnect(peerId, conn);
34
- }
35
- }
36
- export function createTopology(init) {
37
- return new TopologyImpl(init);
38
- }
39
- //# sourceMappingURL=topology.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"topology.js","sourceRoot":"","sources":["../../src/topology.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAWvE,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC;AAE7B,MAAM,OAAO,YAAY;IACjB,GAAG,CAAS;IACZ,GAAG,CAAS;IAEnB;;OAEG;IACI,KAAK,CAAc;IACnB,SAAS,CAAmB;IAC5B,YAAY,CAAsB;IAE/B,SAAS,CAAwB;IAE3C,YAAY,IAAkB;QAC7B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACvB,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,MAAM,CAAC;QACX,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAoB;QACtC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAc,EAAE,IAAgB;QAC1C,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;CACD;AAED,MAAM,UAAU,cAAc,CAAC,IAAkB;IAChD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC"}
package/src/topology.ts DELETED
@@ -1,58 +0,0 @@
1
- import { topologySymbol as symbol } from "@libp2p/interface-registrar";
2
- import type { PeerId } from "@libp2p/interface-peer-id";
3
- import type {
4
- Topology,
5
- TopologyInit,
6
- onConnectHandler,
7
- onDisconnectHandler,
8
- Registrar,
9
- } from "@libp2p/interface-registrar";
10
- import type { Connection, Stream } from "@libp2p/interface-connection";
11
-
12
- const noop = () => undefined;
13
-
14
- export class TopologyImpl implements Topology {
15
- public min: number;
16
- public max: number;
17
-
18
- /**
19
- * Set of peers that support the protocol
20
- */
21
- public peers: Set<string>;
22
- public onConnect: onConnectHandler;
23
- public onDisconnect: onDisconnectHandler;
24
-
25
- protected registrar: Registrar | undefined;
26
-
27
- constructor(init: TopologyInit) {
28
- this.min = init.min ?? 0;
29
- this.max = init.max ?? Infinity;
30
- this.peers = new Set();
31
-
32
- this.onConnect = init.onConnect ?? noop;
33
- this.onDisconnect = init.onDisconnect ?? noop;
34
- }
35
-
36
- get [Symbol.toStringTag]() {
37
- return symbol.toString();
38
- }
39
-
40
- get [symbol]() {
41
- return true;
42
- }
43
-
44
- async setRegistrar(registrar: Registrar) {
45
- this.registrar = registrar;
46
- }
47
-
48
- /**
49
- * Notify about peer disconnected event
50
- */
51
- disconnect(peerId: PeerId, conn: Connection) {
52
- this.onDisconnect(peerId, conn);
53
- }
54
- }
55
-
56
- export function createTopology(init: TopologyInit): Topology {
57
- return new TopologyImpl(init);
58
- }