@peerbit/stream 2.0.4 → 2.0.6
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.
- package/lib/esm/index.d.ts +4 -1
- package/lib/esm/index.js +31 -31
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/routes.d.ts +20 -27
- package/lib/esm/routes.js +103 -86
- package/lib/esm/routes.js.map +1 -1
- package/package.json +7 -6
- package/src/index.ts +42 -34
- package/src/routes.ts +131 -127
package/lib/esm/index.d.ts
CHANGED
|
@@ -123,6 +123,7 @@ export type DirectStreamOptions = {
|
|
|
123
123
|
connectionManager?: ConnectionManagerArguments;
|
|
124
124
|
routeSeekInterval?: number;
|
|
125
125
|
seekTimeout?: number;
|
|
126
|
+
routeMaxRetentionPeriod?: number;
|
|
126
127
|
};
|
|
127
128
|
export interface DirectStreamComponents extends Components {
|
|
128
129
|
peerId: PeerId;
|
|
@@ -171,6 +172,7 @@ export declare abstract class DirectStream<Events extends {
|
|
|
171
172
|
private healthChecks;
|
|
172
173
|
private pruneConnectionsTimeout;
|
|
173
174
|
private prunedConnectionsCache?;
|
|
175
|
+
private routeMaxRetentionPeriod;
|
|
174
176
|
routeSeekInterval: number;
|
|
175
177
|
seekTimeout: number;
|
|
176
178
|
closeController: AbortController;
|
|
@@ -195,7 +197,7 @@ export declare abstract class DirectStream<Events extends {
|
|
|
195
197
|
*/
|
|
196
198
|
protected onPeerDisconnected(peerId: PeerId, conn?: Connection): Promise<void>;
|
|
197
199
|
removeRouteConnection(hash: string, neigbour: boolean): void;
|
|
198
|
-
addRouteConnection(from: string, neighbour: string, target: PublicSignKey, distance: number, session: number
|
|
200
|
+
addRouteConnection(from: string, neighbour: string, target: PublicSignKey, distance: number, session: number): void;
|
|
199
201
|
/**
|
|
200
202
|
* invoked when a new peer becomes reachable
|
|
201
203
|
* @param publicKeyHash
|
|
@@ -240,6 +242,7 @@ export declare abstract class DirectStream<Events extends {
|
|
|
240
242
|
*/
|
|
241
243
|
publish(data: Uint8Array | Uint8ArrayList | undefined, options?: WithMode | WithTo): Promise<Uint8Array>;
|
|
242
244
|
relayMessage(from: PublicSignKey, message: Message, to?: PeerStreams[] | Map<string, PeerStreams>): Promise<void>;
|
|
245
|
+
private clearHealthcheckTimer;
|
|
243
246
|
private createDeliveryPromise;
|
|
244
247
|
publishMessage(from: PublicSignKey, message: Message, to?: PeerStreams[] | Map<string, PeerStreams>, relayed?: boolean): Promise<void>;
|
|
245
248
|
maybeConnectDirectly(toHash: string, origin: MultiAddrinfo): Promise<void>;
|
package/lib/esm/index.js
CHANGED
|
@@ -24,6 +24,7 @@ const DEFAULT_SEEK_MESSAGE_REDUDANCY = 2;
|
|
|
24
24
|
const DEFAULT_SILENT_MESSAGE_REDUDANCY = 1;
|
|
25
25
|
const isWebsocketConnection = (c) => c.remoteAddr.protoNames().find((x) => x === "ws" || x === "wss");
|
|
26
26
|
const SEEK_DELIVERY_TIMEOUT = 15e3;
|
|
27
|
+
const ROUTE_MAX_RETANTION_PERIOD = 10 * 1000;
|
|
27
28
|
const MAX_DATA_LENGTH = 1e7 + 1000; // 10 mb and some metadata
|
|
28
29
|
const MAX_QUEUED_BYTES = MAX_DATA_LENGTH * 50;
|
|
29
30
|
const DEFAULT_PRUNE_CONNECTIONS_INTERVAL = 2e4;
|
|
@@ -253,6 +254,7 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
253
254
|
healthChecks;
|
|
254
255
|
pruneConnectionsTimeout;
|
|
255
256
|
prunedConnectionsCache;
|
|
257
|
+
routeMaxRetentionPeriod;
|
|
256
258
|
routeSeekInterval;
|
|
257
259
|
seekTimeout;
|
|
258
260
|
closeController;
|
|
@@ -260,7 +262,7 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
260
262
|
constructor(components, multicodecs, options) {
|
|
261
263
|
super();
|
|
262
264
|
this.components = components;
|
|
263
|
-
const { canRelayMessage = true, messageProcessingConcurrency = 10, maxInboundStreams, maxOutboundStreams, signaturePolicy = "StictSign", connectionManager, routeSeekInterval = ROUTE_UPDATE_DELAY_FACTOR, seekTimeout = SEEK_DELIVERY_TIMEOUT } = options || {};
|
|
265
|
+
const { canRelayMessage = true, messageProcessingConcurrency = 10, maxInboundStreams, maxOutboundStreams, signaturePolicy = "StictSign", connectionManager, routeSeekInterval = ROUTE_UPDATE_DELAY_FACTOR, seekTimeout = SEEK_DELIVERY_TIMEOUT, routeMaxRetentionPeriod = ROUTE_MAX_RETANTION_PERIOD } = options || {};
|
|
264
266
|
const signKey = getKeypairFromPeerId(components.peerId);
|
|
265
267
|
this.seekTimeout = seekTimeout;
|
|
266
268
|
this.sign = signKey.sign.bind(signKey);
|
|
@@ -270,7 +272,6 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
270
272
|
this.multicodecs = multicodecs;
|
|
271
273
|
this.started = false;
|
|
272
274
|
this.peers = new Map();
|
|
273
|
-
this.routes = new Routes(this.publicKeyHash);
|
|
274
275
|
this.canRelayMessage = canRelayMessage;
|
|
275
276
|
this.healthChecks = new Map();
|
|
276
277
|
this.routeSeekInterval = routeSeekInterval;
|
|
@@ -278,6 +279,7 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
278
279
|
this.maxInboundStreams = maxInboundStreams;
|
|
279
280
|
this.maxOutboundStreams = maxOutboundStreams;
|
|
280
281
|
this.seenCache = new Cache({ max: 1e6, ttl: 10 * 60 * 1e3 });
|
|
282
|
+
this.routeMaxRetentionPeriod = routeMaxRetentionPeriod;
|
|
281
283
|
this.peerKeyHashToPublicKey = new Map();
|
|
282
284
|
this._onIncomingStream = this._onIncomingStream.bind(this);
|
|
283
285
|
this.onPeerConnected = this.onPeerConnected.bind(this);
|
|
@@ -330,6 +332,10 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
330
332
|
}
|
|
331
333
|
await ready;
|
|
332
334
|
this.closeController = new AbortController();
|
|
335
|
+
this.routes = new Routes(this.publicKeyHash, {
|
|
336
|
+
routeMaxRetentionPeriod: this.routeMaxRetentionPeriod,
|
|
337
|
+
signal: this.closeController.signal
|
|
338
|
+
});
|
|
333
339
|
this.started = true;
|
|
334
340
|
logger.debug("starting");
|
|
335
341
|
// Incoming streams
|
|
@@ -506,7 +512,7 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
506
512
|
if (!stream) {
|
|
507
513
|
return;
|
|
508
514
|
}
|
|
509
|
-
this.addRouteConnection(this.publicKeyHash, peerKey.hashcode(), peerKey,
|
|
515
|
+
this.addRouteConnection(this.publicKeyHash, peerKey.hashcode(), peerKey, -1, +new Date());
|
|
510
516
|
}
|
|
511
517
|
catch (err) {
|
|
512
518
|
logger.error(err);
|
|
@@ -556,22 +562,12 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
556
562
|
this.peerKeyHashToPublicKey.delete(node);
|
|
557
563
|
}
|
|
558
564
|
}
|
|
559
|
-
addRouteConnection(from, neighbour, target, distance, session
|
|
565
|
+
addRouteConnection(from, neighbour, target, distance, session) {
|
|
560
566
|
const targetHash = typeof target === "string" ? target : target.hashcode();
|
|
561
567
|
const wasReachable = from === this.publicKeyHash
|
|
562
568
|
? this.routes.isReachable(from, targetHash)
|
|
563
569
|
: true;
|
|
564
|
-
|
|
565
|
-
this.routes.addPendingRouteConnection(session, {
|
|
566
|
-
distance,
|
|
567
|
-
from,
|
|
568
|
-
neighbour,
|
|
569
|
-
target: targetHash
|
|
570
|
-
});
|
|
571
|
-
}
|
|
572
|
-
else {
|
|
573
|
-
this.routes.add(from, neighbour, targetHash, distance, session);
|
|
574
|
-
}
|
|
570
|
+
this.routes.add(from, neighbour, targetHash, distance, session);
|
|
575
571
|
const newPeer = wasReachable === false && this.routes.isReachable(from, targetHash);
|
|
576
572
|
if (newPeer) {
|
|
577
573
|
this.peerKeyHashToPublicKey.set(target.hashcode(), target);
|
|
@@ -603,11 +599,7 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
603
599
|
*/
|
|
604
600
|
addPeer(peerId, publicKey, protocol, connId) {
|
|
605
601
|
const publicKeyHash = publicKey.hashcode();
|
|
606
|
-
|
|
607
|
-
if (hc) {
|
|
608
|
-
clearTimeout(hc);
|
|
609
|
-
this.healthChecks.delete(publicKeyHash);
|
|
610
|
-
}
|
|
602
|
+
this.clearHealthcheckTimer(publicKeyHash);
|
|
611
603
|
const existing = this.peers.get(publicKeyHash);
|
|
612
604
|
// If peer streams already exists, do nothing
|
|
613
605
|
if (existing != null) {
|
|
@@ -636,6 +628,7 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
636
628
|
async _removePeer(publicKey) {
|
|
637
629
|
const hash = publicKey.hashcode();
|
|
638
630
|
const peerStreams = this.peers.get(hash);
|
|
631
|
+
this.clearHealthcheckTimer(hash);
|
|
639
632
|
if (peerStreams == null) {
|
|
640
633
|
return;
|
|
641
634
|
}
|
|
@@ -821,7 +814,7 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
821
814
|
const seenBefore = await this.modifySeenCache(messageBytes instanceof Uint8Array
|
|
822
815
|
? messageBytes
|
|
823
816
|
: messageBytes.subarray(), (bytes) => sha256Base64(bytes));
|
|
824
|
-
if (seenBefore >
|
|
817
|
+
if (seenBefore > 0) {
|
|
825
818
|
logger.debug("Received message already seen of type: " + message.constructor.name);
|
|
826
819
|
return false;
|
|
827
820
|
}
|
|
@@ -842,6 +835,9 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
842
835
|
await this.publishMessage(this.publicKey, message, [nextStream], true);
|
|
843
836
|
}
|
|
844
837
|
else {
|
|
838
|
+
if (myIndex !== 0) {
|
|
839
|
+
throw new Error("Unexpected");
|
|
840
|
+
}
|
|
845
841
|
// if origin exist (we can connect to remote peer) && we have autodialer turned on
|
|
846
842
|
if (message.header.origin && this.connectionManagerOptions.dialer) {
|
|
847
843
|
this.maybeConnectDirectly(message.header.signatures.publicKeys[0].hashcode(), message.header.origin);
|
|
@@ -908,7 +904,7 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
908
904
|
.get(this.publicKeyHash)
|
|
909
905
|
?.get(hash);
|
|
910
906
|
if (!neighbourRoutes ||
|
|
911
|
-
now - neighbourRoutes.
|
|
907
|
+
now - neighbourRoutes.latestSession >
|
|
912
908
|
neighbourRoutes.list.length * this.routeSeekInterval) {
|
|
913
909
|
mode = new SeekDelivery({
|
|
914
910
|
to: mode.to,
|
|
@@ -939,6 +935,9 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
939
935
|
if (!this.started) {
|
|
940
936
|
throw new Error("Not started");
|
|
941
937
|
}
|
|
938
|
+
if (options.mode && options.to) {
|
|
939
|
+
throw new Error("Expecting either 'to' or 'mode' to be provided not both");
|
|
940
|
+
}
|
|
942
941
|
const message = await this.createMessage(data, options);
|
|
943
942
|
await this.publishMessage(this.publicKey, message, undefined);
|
|
944
943
|
return message.id;
|
|
@@ -957,6 +956,11 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
957
956
|
logger.debug("Received a message to relay but canRelayMessage is false");
|
|
958
957
|
}
|
|
959
958
|
}
|
|
959
|
+
clearHealthcheckTimer(to) {
|
|
960
|
+
const timer = this.healthChecks.get(to);
|
|
961
|
+
clearTimeout(timer);
|
|
962
|
+
this.healthChecks.delete(to);
|
|
963
|
+
}
|
|
960
964
|
async createDeliveryPromise(from, message, relayed) {
|
|
961
965
|
if (message.header.mode instanceof AnyWhere) {
|
|
962
966
|
return { promise: Promise.resolve() };
|
|
@@ -994,9 +998,6 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
994
998
|
: 1; /* message.deliveryMode instanceof SeekDelivery ? Math.min(this.peers.size - (relayed ? 1 : 0), message.deliveryMode.redundancy) : 1 */
|
|
995
999
|
const finalize = () => {
|
|
996
1000
|
this._ackCallbacks.delete(idString);
|
|
997
|
-
if (message.header.mode instanceof SeekDelivery) {
|
|
998
|
-
this.routes.commitPendingRouteConnection(session);
|
|
999
|
-
}
|
|
1000
1001
|
};
|
|
1001
1002
|
const uniqueAcks = new Set();
|
|
1002
1003
|
const session = +new Date();
|
|
@@ -1017,7 +1018,7 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
1017
1018
|
if (!hasAll && willGetAllAcknowledgements) {
|
|
1018
1019
|
deliveryDeferredPromise.reject(new TimeoutError(`${this.publicKeyHash} Failed to get message ${idString} ${filterMessageForSeenCounter} ${[
|
|
1019
1020
|
...messageToSet
|
|
1020
|
-
]} delivery acknowledges from all nodes (${fastestNodesReached.size}/${messageToSet.size}). Mode: ${message.header.mode.constructor.name}`));
|
|
1021
|
+
]} delivery acknowledges from all nodes (${fastestNodesReached.size}/${messageToSet.size}). Mode: ${message.header.mode.constructor.name}. Redundancy: ${message.header.mode["redundancy"]}`));
|
|
1021
1022
|
}
|
|
1022
1023
|
else {
|
|
1023
1024
|
deliveryDeferredPromise.resolve();
|
|
@@ -1030,13 +1031,11 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
1030
1031
|
const messageTargetHash = messageTarget.hashcode();
|
|
1031
1032
|
const seenCounter = ack.seenCounter;
|
|
1032
1033
|
// remove the automatic removal of route timeout since we have observed lifesigns of a peer
|
|
1033
|
-
|
|
1034
|
-
clearTimeout(timer);
|
|
1035
|
-
this.healthChecks.delete(messageTargetHash);
|
|
1034
|
+
this.clearHealthcheckTimer(messageTargetHash);
|
|
1036
1035
|
// if the target is not inside the original message to, we still ad the target to our routes
|
|
1037
1036
|
// this because a relay might modify the 'to' list and we might receive more answers than initially set
|
|
1038
1037
|
if (message.header.mode instanceof SeekDelivery) {
|
|
1039
|
-
this.addRouteConnection(messageFrom?.publicKey.hashcode() || this.publicKeyHash, messageThrough.publicKey.hashcode(), messageTarget, seenCounter, session
|
|
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
|
|
1040
1039
|
}
|
|
1041
1040
|
if (messageToSet.has(messageTargetHash)) {
|
|
1042
1041
|
// Only keep track of relevant acks
|
|
@@ -1108,7 +1107,7 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
1108
1107
|
message.header.mode instanceof SilentDelivery) &&
|
|
1109
1108
|
!to &&
|
|
1110
1109
|
message.header.mode.to) {
|
|
1111
|
-
const fanout = this.routes.getFanout(from, message.header.mode.to, message.header.mode.redundancy);
|
|
1110
|
+
const fanout = this.routes.getFanout(from.hashcode(), message.header.mode.to, message.header.mode.redundancy);
|
|
1112
1111
|
if (fanout) {
|
|
1113
1112
|
if (fanout.size > 0) {
|
|
1114
1113
|
for (const [neighbour, _distantPeers] of fanout) {
|
|
@@ -1255,6 +1254,7 @@ export class DirectStream extends TypedEventEmitter {
|
|
|
1255
1254
|
if (this.peers.size <= this.connectionManagerOptions.minConnections) {
|
|
1256
1255
|
return;
|
|
1257
1256
|
}
|
|
1257
|
+
console.log("PRUNE CONNECTIONS");
|
|
1258
1258
|
const sorted = [...this.peers.values()]
|
|
1259
1259
|
.sort((x, y) => x.usedBandwidth - y.usedBandwidth)
|
|
1260
1260
|
.map((x) => x.publicKey.hashcode());
|
package/lib/esm/index.js.map
CHANGED
|
@@ -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/lib/esm/routes.d.ts
CHANGED
|
@@ -1,31 +1,30 @@
|
|
|
1
|
-
import { PublicSignKey } from "@peerbit/crypto";
|
|
2
1
|
export declare const MAX_ROUTE_DISTANCE: number;
|
|
2
|
+
type RouteInfo = {
|
|
3
|
+
session: number;
|
|
4
|
+
hash: string;
|
|
5
|
+
expireAt?: number;
|
|
6
|
+
distance: number;
|
|
7
|
+
};
|
|
3
8
|
export declare class Routes {
|
|
4
9
|
readonly me: string;
|
|
5
10
|
routes: Map<string, Map<string, {
|
|
6
|
-
|
|
7
|
-
list:
|
|
8
|
-
hash: string;
|
|
9
|
-
distance: number;
|
|
10
|
-
}[];
|
|
11
|
+
latestSession: number;
|
|
12
|
+
list: RouteInfo[];
|
|
11
13
|
}>>;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
constructor(me: string);
|
|
14
|
+
routeMaxRetentionPeriod: number;
|
|
15
|
+
signal: AbortSignal;
|
|
16
|
+
constructor(me: string, options: {
|
|
17
|
+
routeMaxRetentionPeriod: number;
|
|
18
|
+
signal: AbortSignal;
|
|
19
|
+
});
|
|
19
20
|
clear(): void;
|
|
21
|
+
private cleanup;
|
|
20
22
|
add(from: string, neighbour: string, target: string, distance: number, session: number): void;
|
|
21
23
|
removeTarget(target: string): string[];
|
|
22
24
|
removeNeighbour(target: string): string[];
|
|
23
25
|
findNeighbor(from: string, target: string): {
|
|
24
|
-
|
|
25
|
-
list:
|
|
26
|
-
hash: string;
|
|
27
|
-
distance: number;
|
|
28
|
-
}[];
|
|
26
|
+
latestSession: number;
|
|
27
|
+
list: RouteInfo[];
|
|
29
28
|
} | undefined;
|
|
30
29
|
isReachable(from: string, target: string, maxDistance?: number): boolean;
|
|
31
30
|
hasShortestPath(target: string): boolean;
|
|
@@ -33,19 +32,13 @@ export declare class Routes {
|
|
|
33
32
|
getDependent(target: string): string[];
|
|
34
33
|
count(from?: string): number;
|
|
35
34
|
countAll(): number;
|
|
36
|
-
getFanout(from:
|
|
35
|
+
getFanout(from: string, tos: string[], redundancy: number): Map<string, Map<string, {
|
|
37
36
|
to: string;
|
|
38
37
|
timestamp: number;
|
|
39
|
-
}
|
|
38
|
+
}>> | undefined;
|
|
40
39
|
/**
|
|
41
40
|
* Returns a list of a prunable nodes that are not needed to reach all remote nodes
|
|
42
41
|
*/
|
|
43
42
|
getPrunable(neighbours: string[]): string[];
|
|
44
|
-
addPendingRouteConnection(session: number, route: {
|
|
45
|
-
from: string;
|
|
46
|
-
neighbour: string;
|
|
47
|
-
target: string;
|
|
48
|
-
distance: number;
|
|
49
|
-
}): void;
|
|
50
|
-
commitPendingRouteConnection(session: number, target?: string): void;
|
|
51
43
|
}
|
|
44
|
+
export {};
|