@peerbit/stream 2.0.5 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42,7 +42,6 @@ type WithMode = {
42
42
  * Thin wrapper around a peer's inbound / outbound pubsub streams
43
43
  */
44
44
  export declare class PeerStreams extends TypedEventEmitter<PeerStreamEvents> {
45
- counter: number;
46
45
  readonly peerId: PeerId;
47
46
  readonly publicKey: PublicSignKey;
48
47
  readonly protocol: string;
@@ -160,7 +159,6 @@ export declare abstract class DirectStream<Events extends {
160
159
  /**
161
160
  * if publish should emit to self, if subscribed
162
161
  */
163
- signaturePolicy: SignaturePolicy;
164
162
  queue: Queue;
165
163
  multicodecs: string[];
166
164
  seenCache: Cache<number>;
@@ -176,6 +174,7 @@ export declare abstract class DirectStream<Events extends {
176
174
  routeSeekInterval: number;
177
175
  seekTimeout: number;
178
176
  closeController: AbortController;
177
+ session: number;
179
178
  private _ackCallbacks;
180
179
  constructor(components: DirectStreamComponents, multicodecs: string[], options?: DirectStreamOptions);
181
180
  start(): Promise<void>;
@@ -196,8 +195,8 @@ export declare abstract class DirectStream<Events extends {
196
195
  * Registrar notifies a closing connection with pubsub protocol
197
196
  */
198
197
  protected onPeerDisconnected(peerId: PeerId, conn?: Connection): Promise<void>;
199
- removeRouteConnection(hash: string, neigbour: boolean): void;
200
- addRouteConnection(from: string, neighbour: string, target: PublicSignKey, distance: number, session: number): void;
198
+ removeRouteConnection(hash: string, asNeigh?: boolean): void;
199
+ addRouteConnection(from: string, neighbour: string, target: PublicSignKey, distance: number, session: number, remoteSession: number): void;
201
200
  /**
202
201
  * invoked when a new peer becomes reachable
203
202
  * @param publicKeyHash
@@ -208,6 +207,9 @@ export declare abstract class DirectStream<Events extends {
208
207
  * @param publicKeyHash
209
208
  */
210
209
  onPeerUnreachable(hash: string): void;
210
+ updateSession(key: PublicSignKey, session?: number): void;
211
+ invalidateSession(key: string): void;
212
+ onPeerSession(key: PublicSignKey, session: number): void;
211
213
  /**
212
214
  * Notifies the router that a peer has been connected
213
215
  */
@@ -231,7 +233,7 @@ export declare abstract class DirectStream<Events extends {
231
233
  processMessage(from: PublicSignKey, peerStream: PeerStreams, msg: Uint8ArrayList): Promise<void>;
232
234
  shouldIgnore(message: DataMessage, seenBefore: number): boolean;
233
235
  onDataMessage(from: PublicSignKey, peerStream: PeerStreams, message: DataMessage, seenBefore: number): Promise<boolean | undefined>;
234
- maybeVerifyMessage(message: DataMessage): Promise<boolean>;
236
+ verifyAndProcess(message: Message<any>): Promise<boolean>;
235
237
  acknowledgeMessage(peerStream: PeerStreams, message: DataMessage, seenBefore: number): Promise<void>;
236
238
  private _onDataMessage;
237
239
  onAck(publicKey: PublicSignKey, peerStream: PeerStreams, messageBytes: Uint8ArrayList | Uint8Array, message: ACK): Promise<false | undefined>;
@@ -252,7 +254,6 @@ export declare abstract class DirectStream<Events extends {
252
254
  neighbour?: boolean;
253
255
  }): Promise<void>;
254
256
  get pending(): boolean;
255
- lastQueuedBytes: number;
256
257
  maybePruneConnections(): Promise<void>;
257
258
  pruneConnections(): Promise<void>;
258
259
  getQueuedBytes(): number;
package/lib/esm/index.js CHANGED
@@ -36,7 +36,6 @@ const ROUTE_UPDATE_DELAY_FACTOR = 3e4;
36
36
  * Thin wrapper around a peer's inbound / outbound pubsub streams
37
37
  */
38
38
  export class PeerStreams extends TypedEventEmitter {
39
- counter = 0;
40
39
  peerId;
41
40
  publicKey;
42
41
  protocol;
@@ -72,7 +71,6 @@ export class PeerStreams extends TypedEventEmitter {
72
71
  this.inboundAbortController = new AbortController();
73
72
  this.closed = false;
74
73
  this.connId = init.connId;
75
- this.counter = 1;
76
74
  this.usedBandWidthTracker = new MovingAverageTracker();
77
75
  }
78
76
  /**
@@ -242,7 +240,6 @@ export class DirectStream extends TypedEventEmitter {
242
240
  /**
243
241
  * if publish should emit to self, if subscribed
244
242
  */
245
- signaturePolicy;
246
243
  queue;
247
244
  multicodecs;
248
245
  seenCache;
@@ -258,7 +255,8 @@ export class DirectStream extends TypedEventEmitter {
258
255
  routeSeekInterval;
259
256
  seekTimeout;
260
257
  closeController;
261
- _ackCallbacks = new Map();
258
+ session;
259
+ _ackCallbacks;
262
260
  constructor(components, multicodecs, options) {
263
261
  super();
264
262
  this.components = components;
@@ -284,7 +282,7 @@ export class DirectStream extends TypedEventEmitter {
284
282
  this._onIncomingStream = this._onIncomingStream.bind(this);
285
283
  this.onPeerConnected = this.onPeerConnected.bind(this);
286
284
  this.onPeerDisconnected = this.onPeerDisconnected.bind(this);
287
- this.signaturePolicy = signaturePolicy;
285
+ this._ackCallbacks = new Map();
288
286
  if (connectionManager === false || connectionManager === null) {
289
287
  this.connectionManagerOptions = {
290
288
  maxConnections: Number.MAX_SAFE_INTEGER,
@@ -330,6 +328,7 @@ export class DirectStream extends TypedEventEmitter {
330
328
  if (this.started) {
331
329
  return;
332
330
  }
331
+ this.session = +new Date();
333
332
  await ready;
334
333
  this.closeController = new AbortController();
335
334
  this.routes = new Routes(this.publicKeyHash, {
@@ -512,7 +511,7 @@ export class DirectStream extends TypedEventEmitter {
512
511
  if (!stream) {
513
512
  return;
514
513
  }
515
- this.addRouteConnection(this.publicKeyHash, peerKey.hashcode(), peerKey, -1, +new Date());
514
+ this.addRouteConnection(this.publicKeyHash, peerKey.hashcode(), peerKey, -1, +new Date(), -1);
516
515
  }
517
516
  catch (err) {
518
517
  logger.error(err);
@@ -541,11 +540,12 @@ export class DirectStream extends TypedEventEmitter {
541
540
  await this._removePeer(peerKey);
542
541
  // Notify network
543
542
  const dependent = this.routes.getDependent(peerKeyHash);
544
- this.removeRouteConnection(peerKeyHash, true);
543
+ this.removeRouteConnection(peerKeyHash);
545
544
  if (dependent.length > 0) {
546
545
  await this.publishMessage(this.publicKey, await new Goodbye({
547
546
  leaving: [peerKeyHash],
548
547
  header: new MessageHeader({
548
+ session: this.session,
549
549
  mode: new SilentDelivery({ to: dependent, redundancy: 2 })
550
550
  })
551
551
  }).sign(this.sign));
@@ -553,25 +553,23 @@ export class DirectStream extends TypedEventEmitter {
553
553
  }
554
554
  logger.debug("connection ended:" + peerKey.toString());
555
555
  }
556
- removeRouteConnection(hash, neigbour) {
557
- const unreachable = neigbour
558
- ? this.routes.removeNeighbour(hash)
559
- : this.routes.removeTarget(hash);
556
+ removeRouteConnection(hash, asNeigh = true) {
557
+ const unreachable = this.routes.remove(hash);
560
558
  for (const node of unreachable) {
561
559
  this.onPeerUnreachable(node); // TODO types
562
560
  this.peerKeyHashToPublicKey.delete(node);
563
561
  }
564
562
  }
565
- addRouteConnection(from, neighbour, target, distance, session) {
563
+ addRouteConnection(from, neighbour, target, distance, session, remoteSession) {
566
564
  const targetHash = typeof target === "string" ? target : target.hashcode();
567
- const wasReachable = from === this.publicKeyHash
568
- ? this.routes.isReachable(from, targetHash)
569
- : true;
570
- this.routes.add(from, neighbour, targetHash, distance, session);
571
- const newPeer = wasReachable === false && this.routes.isReachable(from, targetHash);
572
- if (newPeer) {
573
- this.peerKeyHashToPublicKey.set(target.hashcode(), target);
574
- this.onPeerReachable(target); // TODO types
565
+ const update = this.routes.add(from, neighbour, targetHash, distance, session, remoteSession);
566
+ // second condition is that we don't want to emit 'reachable' events for routes where we act only as a relay
567
+ // in this case, from is != this.publicKeyhash
568
+ if (from === this.publicKeyHash) {
569
+ if (update === "new") {
570
+ this.peerKeyHashToPublicKey.set(target.hashcode(), target);
571
+ this.onPeerReachable(target);
572
+ }
575
573
  }
576
574
  }
577
575
  /**
@@ -594,6 +592,21 @@ export class DirectStream extends TypedEventEmitter {
594
592
  detail: this.peerKeyHashToPublicKey.get(hash)
595
593
  }));
596
594
  }
595
+ updateSession(key, session) {
596
+ if (this.routes.updateSession(key.hashcode(), session)) {
597
+ return this.onPeerSession(key, session);
598
+ }
599
+ }
600
+ invalidateSession(key) {
601
+ this.routes.updateSession(key, undefined);
602
+ }
603
+ onPeerSession(key, session) {
604
+ this.dispatchEvent(
605
+ // TODO types
606
+ new CustomEvent("peer:session", {
607
+ detail: key
608
+ }));
609
+ }
597
610
  /**
598
611
  * Notifies the router that a peer has been connected
599
612
  */
@@ -603,7 +616,6 @@ export class DirectStream extends TypedEventEmitter {
603
616
  const existing = this.peers.get(publicKeyHash);
604
617
  // If peer streams already exists, do nothing
605
618
  if (existing != null) {
606
- existing.counter += 1;
607
619
  existing.connId = connId;
608
620
  return existing;
609
621
  }
@@ -617,6 +629,7 @@ export class DirectStream extends TypedEventEmitter {
617
629
  connId
618
630
  });
619
631
  this.peers.set(publicKeyHash, peerStreams);
632
+ this.updateSession(publicKey, -1);
620
633
  peerStreams.addEventListener("close", () => this._removePeer(publicKey), {
621
634
  once: true
622
635
  });
@@ -743,7 +756,7 @@ export class DirectStream extends TypedEventEmitter {
743
756
  }
744
757
  }
745
758
  if (isForMe) {
746
- if ((await this.maybeVerifyMessage(message)) === false) {
759
+ if (!(await this.verifyAndProcess(message))) {
747
760
  // we don't verify messages we don't dispatch because of the performance penalty // TODO add opts for this
748
761
  logger.warn("Recieved message with invalid signature or timestamp");
749
762
  return false;
@@ -780,10 +793,24 @@ export class DirectStream extends TypedEventEmitter {
780
793
  }
781
794
  }
782
795
  }
783
- async maybeVerifyMessage(message) {
784
- return message.verify(this.signaturePolicy === "StictSign");
796
+ async verifyAndProcess(message) {
797
+ const verified = await message.verify(true);
798
+ if (!verified) {
799
+ return false;
800
+ }
801
+ const from = message.header.signatures.publicKeys[0];
802
+ if (this.peers.has(from.hashcode())) {
803
+ // do nothing
804
+ }
805
+ else {
806
+ this.updateSession(from, Number(message.header.session));
807
+ }
808
+ return true;
785
809
  }
786
810
  async acknowledgeMessage(peerStream, message, seenBefore) {
811
+ const signers = message.header.signatures.publicKeys.map((x) => x.hashcode());
812
+ const from = signers[0];
813
+ this.routes.remoteInfo.get(from)?.session;
787
814
  if ((message.header.mode instanceof SeekDelivery ||
788
815
  message.header.mode instanceof AcknowledgeDelivery) &&
789
816
  seenBefore < message.header.mode.redundancy) {
@@ -792,7 +819,8 @@ export class DirectStream extends TypedEventEmitter {
792
819
  seenCounter: seenBefore,
793
820
  // TODO only give origin info to peers we want to connect to us
794
821
  header: new MessageHeader({
795
- mode: new TracedDelivery(message.header.signatures.publicKeys.map((x) => x.hashcode())),
822
+ mode: new TracedDelivery(signers),
823
+ session: this.session,
796
824
  // include our origin if message is SeekDelivery and we have not recently pruned a connection to this peer
797
825
  origin: message.header.mode instanceof SeekDelivery &&
798
826
  !message.header.signatures.publicKeys.find((x) => this.prunedConnectionsCache?.has(x.hashcode()))
@@ -818,7 +846,7 @@ export class DirectStream extends TypedEventEmitter {
818
846
  logger.debug("Received message already seen of type: " + message.constructor.name);
819
847
  return false;
820
848
  }
821
- if (!(await message.verify(true))) {
849
+ if (!(await this.verifyAndProcess(message))) {
822
850
  logger.warn(`Recieved ACK message that did not verify`);
823
851
  return false;
824
852
  }
@@ -836,7 +864,9 @@ export class DirectStream extends TypedEventEmitter {
836
864
  }
837
865
  else {
838
866
  if (myIndex !== 0) {
839
- throw new Error("Unexpected");
867
+ // TODO should we throw something, or log?
868
+ // we could arrive here if the ACK target does not exist any more...
869
+ return;
840
870
  }
841
871
  // if origin exist (we can connect to remote peer) && we have autodialer turned on
842
872
  if (message.header.origin && this.connectionManagerOptions.dialer) {
@@ -852,11 +882,14 @@ export class DirectStream extends TypedEventEmitter {
852
882
  logger.debug("Received message already seen of type: " + message.constructor.name);
853
883
  return;
854
884
  }
855
- if (!(await message.verify(true))) {
885
+ if (!(await this.verifyAndProcess(message))) {
856
886
  logger.warn(`Recieved ACK message that did not verify`);
857
887
  return false;
858
888
  }
859
889
  const filteredLeaving = message.leaving.filter((x) => this.routes.hasTarget(x));
890
+ for (const remote of filteredLeaving) {
891
+ this.invalidateSession(remote);
892
+ }
860
893
  if (filteredLeaving.length > 0) {
861
894
  this.publish(new Uint8Array(0), {
862
895
  mode: new SeekDelivery({
@@ -904,8 +937,9 @@ export class DirectStream extends TypedEventEmitter {
904
937
  .get(this.publicKeyHash)
905
938
  ?.get(hash);
906
939
  if (!neighbourRoutes ||
907
- now - neighbourRoutes.latestSession >
908
- neighbourRoutes.list.length * this.routeSeekInterval) {
940
+ now - neighbourRoutes.session >
941
+ neighbourRoutes.list.length * this.routeSeekInterval ||
942
+ !this.routes.isUpToDate(hash, neighbourRoutes)) {
909
943
  mode = new SeekDelivery({
910
944
  to: mode.to,
911
945
  redundancy: DEFAULT_SEEK_MESSAGE_REDUDANCY
@@ -916,14 +950,10 @@ export class DirectStream extends TypedEventEmitter {
916
950
  }
917
951
  const message = new DataMessage({
918
952
  data: data instanceof Uint8ArrayList ? data.subarray() : data,
919
- header: new MessageHeader({ mode })
953
+ header: new MessageHeader({ mode, session: this.session })
920
954
  });
921
- if (this.signaturePolicy === "StictSign" ||
922
- mode instanceof SeekDelivery ||
923
- mode instanceof AcknowledgeDelivery ||
924
- mode instanceof AnyWhere) {
925
- await message.sign(this.sign);
926
- }
955
+ // TODO allow messages to also be sent unsigned (signaturePolicy property)
956
+ await message.sign(this.sign);
927
957
  return message;
928
958
  }
929
959
  /**
@@ -1035,7 +1065,7 @@ export class DirectStream extends TypedEventEmitter {
1035
1065
  // if the target is not inside the original message to, we still ad the target to our routes
1036
1066
  // this because a relay might modify the 'to' list and we might receive more answers than initially set
1037
1067
  if (message.header.mode instanceof SeekDelivery) {
1038
- this.addRouteConnection(messageFrom?.publicKey.hashcode() || this.publicKeyHash, messageThrough.publicKey.hashcode(), messageTarget, seenCounter, session); // we assume the seenCounter = distance. The more the message has been seen by the target the longer the path is to the target
1068
+ this.addRouteConnection(messageFrom?.publicKey.hashcode() || this.publicKeyHash, messageThrough.publicKey.hashcode(), messageTarget, seenCounter, session, Number(ack.header.session)); // we assume the seenCounter = distance. The more the message has been seen by the target the longer the path is to the target
1039
1069
  }
1040
1070
  if (messageToSet.has(messageTargetHash)) {
1041
1071
  // Only keep track of relevant acks
@@ -1224,7 +1254,6 @@ export class DirectStream extends TypedEventEmitter {
1224
1254
  get pending() {
1225
1255
  return this._ackCallbacks.size > 0;
1226
1256
  }
1227
- lastQueuedBytes = 0;
1228
1257
  // make this into a job? run every few ms
1229
1258
  maybePruneConnections() {
1230
1259
  if (this.connectionManagerOptions.pruner) {
@@ -1254,7 +1283,6 @@ export class DirectStream extends TypedEventEmitter {
1254
1283
  if (this.peers.size <= this.connectionManagerOptions.minConnections) {
1255
1284
  return;
1256
1285
  }
1257
- console.log("PRUNE CONNECTIONS");
1258
1286
  const sorted = [...this.peers.values()]
1259
1287
  .sort((x, y) => x.usedBandwidth - y.usedBandwidth)
1260
1288
  .map((x) => x.publicKey.hashcode());
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,oBAAoB;IAKX;IAJb,MAAM,GAAG,CAAC,CAAC;IAEnB,KAAK,GAAG,CAAC,CAAC;IAEV,YAAqB,MAAM,EAAE;QAAR,QAAG,GAAH,GAAG,CAAK;QAC5B,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,GAAG,CAAC,MAAc;QACjB,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QACtC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QAClE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;IACnB,CAAC;CACD"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAoB;IAKX;IAJb,MAAM,GAAG,CAAC,CAAC;IAEnB,KAAK,GAAG,CAAC,CAAC;IAEV,YAAqB,MAAM,EAAE;QAAR,QAAG,GAAH,GAAG,CAAK;QAC5B,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,GAAG,CAAC,MAAc;QACjB,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QACtC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QAClE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;IACnB,CAAC;CACD"}
@@ -1,35 +1,43 @@
1
1
  export declare const MAX_ROUTE_DISTANCE: number;
2
- type RouteInfo = {
2
+ type RelayInfo = {
3
3
  session: number;
4
4
  hash: string;
5
5
  expireAt?: number;
6
6
  distance: number;
7
7
  };
8
+ type RouteInfo = {
9
+ remoteSession: number;
10
+ session: number;
11
+ list: RelayInfo[];
12
+ };
8
13
  export declare class Routes {
9
14
  readonly me: string;
10
- routes: Map<string, Map<string, {
11
- latestSession: number;
12
- list: RouteInfo[];
13
- }>>;
15
+ routes: Map<string, Map<string, RouteInfo>>;
16
+ remoteInfo: Map<string, {
17
+ session?: number;
18
+ }>;
14
19
  routeMaxRetentionPeriod: number;
15
- signal: AbortSignal;
16
- constructor(me: string, options: {
17
- routeMaxRetentionPeriod: number;
18
- signal: AbortSignal;
20
+ signal?: AbortSignal;
21
+ constructor(me: string, options?: {
22
+ routeMaxRetentionPeriod?: number;
23
+ signal?: AbortSignal;
19
24
  });
20
25
  clear(): void;
21
26
  private cleanup;
22
- add(from: string, neighbour: string, target: string, distance: number, session: number): void;
23
- removeTarget(target: string): string[];
24
- removeNeighbour(target: string): string[];
25
- findNeighbor(from: string, target: string): {
26
- latestSession: number;
27
- list: RouteInfo[];
28
- } | undefined;
27
+ add(from: string, neighbour: string, target: string, distance: number, session: number, remoteSession: number): "new" | "updated" | "restart";
28
+ /**
29
+ *
30
+ * @param target
31
+ * @returns unreachable nodes (from me) after removal
32
+ */
33
+ remove(target: string): string[];
34
+ findNeighbor(from: string, target: string): RouteInfo | undefined;
29
35
  isReachable(from: string, target: string, maxDistance?: number): boolean;
30
- hasShortestPath(target: string): boolean;
31
36
  hasTarget(target: string): boolean;
32
- getDependent(target: string): string[];
37
+ updateSession(remote: string, session?: number): boolean;
38
+ getSession(remote: string): number | undefined;
39
+ isUpToDate(target: string, route: RouteInfo): boolean;
40
+ getDependent(peer: string): string[];
33
41
  count(from?: string): number;
34
42
  countAll(): number;
35
43
  getFanout(from: string, tos: string[], redundancy: number): Map<string, Map<string, {