@peerbit/pubsub 2.0.15 → 2.0.16
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 +2 -0
- package/lib/esm/index.js +26 -29
- package/lib/esm/index.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +29 -38
package/lib/esm/index.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ import { AcknowledgeDelivery, DataMessage, SeekDelivery, SilentDelivery } from "
|
|
|
3
3
|
import { DirectStream, DirectStreamComponents, DirectStreamOptions, PeerStreams } from "@peerbit/stream";
|
|
4
4
|
import { PubSub, SubscriptionData, PubSubEvents } from "@peerbit/pubsub-interface";
|
|
5
5
|
import { PublicSignKey } from "@peerbit/crypto";
|
|
6
|
+
import { Uint8ArrayList } from "uint8arraylist";
|
|
7
|
+
export declare const toUint8Array: (arr: Uint8ArrayList | Uint8Array) => Uint8Array;
|
|
6
8
|
export declare const logger: import("pino").Logger<never>;
|
|
7
9
|
export interface PeerStreamsInit {
|
|
8
10
|
id: Libp2pPeerId;
|
package/lib/esm/index.js
CHANGED
|
@@ -2,9 +2,11 @@ import { logger as logFn } from "@peerbit/logger";
|
|
|
2
2
|
import { AcknowledgeDelivery, AnyWhere, DataMessage, MessageHeader, SeekDelivery, SilentDelivery, deliveryModeHasReceiver, NotStartedError } from "@peerbit/stream-interface";
|
|
3
3
|
import { DirectStream } from "@peerbit/stream";
|
|
4
4
|
import { CodeError } from "@libp2p/interface";
|
|
5
|
-
import { PubSubMessage, Subscribe, PubSubData,
|
|
5
|
+
import { PubSubMessage, Subscribe, PubSubData, Unsubscribe, GetSubscribers, UnsubcriptionEvent, SubscriptionEvent, DataEvent, SubscriptionData, PublishEvent } from "@peerbit/pubsub-interface";
|
|
6
6
|
import { getPublicKeyFromPeerId, PublicSignKey } from "@peerbit/crypto";
|
|
7
7
|
import { CustomEvent } from "@libp2p/interface";
|
|
8
|
+
import { Uint8ArrayList } from "uint8arraylist";
|
|
9
|
+
export const toUint8Array = (arr) => arr instanceof Uint8ArrayList ? arr.subarray() : arr;
|
|
8
10
|
export const logger = logFn({ module: "lazysub", level: "warn" });
|
|
9
11
|
const logError = (e) => {
|
|
10
12
|
logger.error(e?.message);
|
|
@@ -150,7 +152,7 @@ export class DirectSub extends DirectStream {
|
|
|
150
152
|
data: toUint8Array(new GetSubscribers({ topics }).bytes()),
|
|
151
153
|
header: new MessageHeader({
|
|
152
154
|
mode: new SeekDelivery({
|
|
153
|
-
to: to ? [to.hashcode()] :
|
|
155
|
+
to: to ? [to.hashcode()] : undefined,
|
|
154
156
|
redundancy: 2
|
|
155
157
|
}),
|
|
156
158
|
session: this.session
|
|
@@ -242,49 +244,53 @@ export class DirectSub extends DirectStream {
|
|
|
242
244
|
}
|
|
243
245
|
onPeerSession(key, session) {
|
|
244
246
|
// reset subs, the peer has restarted
|
|
245
|
-
this.removeSubscriptions(key
|
|
247
|
+
this.removeSubscriptions(key);
|
|
246
248
|
}
|
|
247
249
|
async onPeerReachable(publicKey) {
|
|
248
250
|
// Aggregate subscribers for my topics through this new peer because if we don't do this we might end up with a situtation where
|
|
249
251
|
// we act as a relay and relay messages for a topic, but don't forward it to this new peer because we never learned about their subscriptions
|
|
250
252
|
const resp = super.onPeerReachable(publicKey);
|
|
251
253
|
const stream = this.peers.get(publicKey.hashcode());
|
|
252
|
-
|
|
253
|
-
|
|
254
|
+
const isNeigbour = !!stream;
|
|
255
|
+
if (this.subscriptions.size > 0) {
|
|
254
256
|
// tell the peer about all topics we subscribe to
|
|
255
257
|
this.publishMessage(this.publicKey, await new DataMessage({
|
|
256
258
|
data: toUint8Array(new Subscribe({
|
|
257
|
-
topics: this.getSubscriptionOverlap(),
|
|
259
|
+
topics: this.getSubscriptionOverlap(), // TODO make the protocol more efficient, do we really need to share *everything* ?
|
|
258
260
|
requestSubscribers: true
|
|
259
261
|
}).bytes()),
|
|
260
262
|
header: new MessageHeader({
|
|
261
|
-
|
|
263
|
+
// is new neighbour ? then send to all, though that connection (potentially find new peers)
|
|
264
|
+
// , else just try to reach the remote
|
|
265
|
+
mode: new SeekDelivery({
|
|
266
|
+
redundancy: 2,
|
|
267
|
+
to: isNeigbour ? undefined : [publicKey.hashcode()]
|
|
268
|
+
}),
|
|
262
269
|
session: this.session
|
|
263
270
|
})
|
|
264
|
-
}).sign(this.sign))
|
|
265
|
-
[stream];
|
|
271
|
+
}).sign(this.sign));
|
|
266
272
|
}
|
|
267
273
|
return resp;
|
|
268
274
|
}
|
|
269
275
|
onPeerUnreachable(publicKeyHash) {
|
|
270
276
|
super.onPeerUnreachable(publicKeyHash);
|
|
271
|
-
this.removeSubscriptions(publicKeyHash);
|
|
277
|
+
this.removeSubscriptions(this.peerKeyHashToPublicKey.get(publicKeyHash));
|
|
272
278
|
}
|
|
273
|
-
removeSubscriptions(
|
|
274
|
-
const peerTopics = this.peerToTopic.get(
|
|
279
|
+
removeSubscriptions(publicKey) {
|
|
280
|
+
const peerTopics = this.peerToTopic.get(publicKey.hashcode());
|
|
275
281
|
const changed = [];
|
|
276
282
|
if (peerTopics) {
|
|
277
283
|
for (const topic of peerTopics) {
|
|
278
|
-
const change = this.deletePeerFromTopic(topic,
|
|
284
|
+
const change = this.deletePeerFromTopic(topic, publicKey.hashcode());
|
|
279
285
|
if (change) {
|
|
280
286
|
changed.push(topic);
|
|
281
287
|
}
|
|
282
288
|
}
|
|
283
289
|
}
|
|
284
|
-
this.lastSubscriptionMessages.delete(
|
|
290
|
+
this.lastSubscriptionMessages.delete(publicKey.hashcode());
|
|
285
291
|
if (changed.length > 0) {
|
|
286
292
|
this.dispatchEvent(new CustomEvent("unsubscribe", {
|
|
287
|
-
detail: new UnsubcriptionEvent(
|
|
293
|
+
detail: new UnsubcriptionEvent(publicKey, changed)
|
|
288
294
|
}));
|
|
289
295
|
}
|
|
290
296
|
}
|
|
@@ -348,9 +354,7 @@ export class DirectSub extends DirectStream {
|
|
|
348
354
|
return false;
|
|
349
355
|
}
|
|
350
356
|
}
|
|
351
|
-
|
|
352
|
-
await this.acknowledgeMessage(stream, message, seenBefore);
|
|
353
|
-
}
|
|
357
|
+
await this.maybeAcknowledgeMessage(stream, message, seenBefore);
|
|
354
358
|
if (isForMe) {
|
|
355
359
|
if (seenBefore === 0) {
|
|
356
360
|
this.dispatchEvent(new CustomEvent("data", {
|
|
@@ -361,9 +365,6 @@ export class DirectSub extends DirectStream {
|
|
|
361
365
|
}));
|
|
362
366
|
}
|
|
363
367
|
}
|
|
364
|
-
if (message.header.mode.to) {
|
|
365
|
-
message.header.mode.to = message.header.mode.to.filter((x) => x !== this.publicKeyHash);
|
|
366
|
-
}
|
|
367
368
|
// Forward
|
|
368
369
|
if (!pubsubMessage.strict) {
|
|
369
370
|
this.addPeersOnTopic(message, pubsubMessage.topics);
|
|
@@ -372,7 +373,6 @@ export class DirectSub extends DirectStream {
|
|
|
372
373
|
// or we are NOT subscribing ourselves (if we are not subscribing ourselves we are)
|
|
373
374
|
// If we are not subscribing ourselves, then we don't have enough information to "stop" message propagation here
|
|
374
375
|
if (message.header.mode.to?.length ||
|
|
375
|
-
0 > 0 ||
|
|
376
376
|
!pubsubMessage.topics.find((topic) => this.topics.has(topic)) ||
|
|
377
377
|
message.header.mode instanceof SeekDelivery) {
|
|
378
378
|
// DONT await this since it might introduce a dead-lock
|
|
@@ -388,16 +388,13 @@ export class DirectSub extends DirectStream {
|
|
|
388
388
|
logger.warn("Recieved subscription message with no signers");
|
|
389
389
|
return false;
|
|
390
390
|
}
|
|
391
|
-
await this.
|
|
391
|
+
await this.maybeAcknowledgeMessage(stream, message, seenBefore);
|
|
392
392
|
const sender = message.header.signatures.signatures[0].publicKey;
|
|
393
393
|
const senderKey = sender.hashcode(); // Assume first signature is the one who is signing
|
|
394
394
|
if (pubsubMessage instanceof Subscribe) {
|
|
395
|
-
if (pubsubMessage.topics.length === 0) {
|
|
396
|
-
logger.info("Recieved subscription message with no topics");
|
|
397
|
-
return false;
|
|
398
|
-
}
|
|
399
395
|
if (seenBefore === 0 &&
|
|
400
|
-
this.subscriptionMessageIsLatest(message, pubsubMessage)
|
|
396
|
+
this.subscriptionMessageIsLatest(message, pubsubMessage) &&
|
|
397
|
+
pubsubMessage.topics.length > 0) {
|
|
401
398
|
const changed = [];
|
|
402
399
|
pubsubMessage.topics.forEach((topic) => {
|
|
403
400
|
const peers = this.topics.get(topic);
|
|
@@ -445,7 +442,7 @@ export class DirectSub extends DirectStream {
|
|
|
445
442
|
})
|
|
446
443
|
})
|
|
447
444
|
});
|
|
448
|
-
|
|
445
|
+
this.publishMessage(this.publicKey, await response.sign(this.sign));
|
|
449
446
|
}
|
|
450
447
|
}
|
|
451
448
|
}
|
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/pubsub",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.16",
|
|
4
4
|
"description": "Direct streaming for libp2p",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -53,9 +53,9 @@
|
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@peerbit/logger": "1.0.2",
|
|
56
|
-
"@peerbit/stream": "3.0.
|
|
56
|
+
"@peerbit/stream": "3.0.9",
|
|
57
57
|
"@peerbit/uint8arrays": "3.0.1",
|
|
58
58
|
"libp2p": "^1.1.0"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "3ee064de9b5cf0d8a8da2e62c3d3ec0d6c799f05"
|
|
61
61
|
}
|
package/src/index.ts
CHANGED
|
@@ -4,8 +4,6 @@ import {
|
|
|
4
4
|
AcknowledgeDelivery,
|
|
5
5
|
AnyWhere,
|
|
6
6
|
DataMessage,
|
|
7
|
-
DeliveryMode,
|
|
8
|
-
Message,
|
|
9
7
|
MessageHeader,
|
|
10
8
|
SeekDelivery,
|
|
11
9
|
SilentDelivery,
|
|
@@ -23,7 +21,6 @@ import {
|
|
|
23
21
|
PubSubMessage,
|
|
24
22
|
Subscribe,
|
|
25
23
|
PubSubData,
|
|
26
|
-
toUint8Array,
|
|
27
24
|
Unsubscribe,
|
|
28
25
|
GetSubscribers,
|
|
29
26
|
UnsubcriptionEvent,
|
|
@@ -36,6 +33,9 @@ import {
|
|
|
36
33
|
} from "@peerbit/pubsub-interface";
|
|
37
34
|
import { getPublicKeyFromPeerId, PublicSignKey } from "@peerbit/crypto";
|
|
38
35
|
import { CustomEvent } from "@libp2p/interface";
|
|
36
|
+
import { Uint8ArrayList } from "uint8arraylist";
|
|
37
|
+
export const toUint8Array = (arr: Uint8ArrayList | Uint8Array) =>
|
|
38
|
+
arr instanceof Uint8ArrayList ? arr.subarray() : arr;
|
|
39
39
|
|
|
40
40
|
export const logger = logFn({ module: "lazysub", level: "warn" });
|
|
41
41
|
const logError = (e?: { message: string }) => {
|
|
@@ -239,7 +239,7 @@ export class DirectSub extends DirectStream<PubSubEvents> implements PubSub {
|
|
|
239
239
|
data: toUint8Array(new GetSubscribers({ topics }).bytes()),
|
|
240
240
|
header: new MessageHeader({
|
|
241
241
|
mode: new SeekDelivery({
|
|
242
|
-
to: to ? [to.hashcode()] :
|
|
242
|
+
to: to ? [to.hashcode()] : undefined,
|
|
243
243
|
redundancy: 2
|
|
244
244
|
}),
|
|
245
245
|
session: this.session
|
|
@@ -364,33 +364,39 @@ export class DirectSub extends DirectStream<PubSubEvents> implements PubSub {
|
|
|
364
364
|
|
|
365
365
|
public onPeerSession(key: PublicSignKey, session: number): void {
|
|
366
366
|
// reset subs, the peer has restarted
|
|
367
|
-
this.removeSubscriptions(key
|
|
367
|
+
this.removeSubscriptions(key);
|
|
368
368
|
}
|
|
369
369
|
|
|
370
370
|
public async onPeerReachable(publicKey: PublicSignKey) {
|
|
371
371
|
// Aggregate subscribers for my topics through this new peer because if we don't do this we might end up with a situtation where
|
|
372
372
|
// we act as a relay and relay messages for a topic, but don't forward it to this new peer because we never learned about their subscriptions
|
|
373
|
+
|
|
373
374
|
const resp = super.onPeerReachable(publicKey);
|
|
374
375
|
const stream = this.peers.get(publicKey.hashcode());
|
|
375
|
-
|
|
376
|
-
|
|
376
|
+
const isNeigbour = !!stream;
|
|
377
|
+
|
|
378
|
+
if (this.subscriptions.size > 0) {
|
|
377
379
|
// tell the peer about all topics we subscribe to
|
|
378
380
|
this.publishMessage(
|
|
379
381
|
this.publicKey,
|
|
380
382
|
await new DataMessage({
|
|
381
383
|
data: toUint8Array(
|
|
382
384
|
new Subscribe({
|
|
383
|
-
topics: this.getSubscriptionOverlap(),
|
|
385
|
+
topics: this.getSubscriptionOverlap(), // TODO make the protocol more efficient, do we really need to share *everything* ?
|
|
384
386
|
requestSubscribers: true
|
|
385
387
|
}).bytes()
|
|
386
388
|
),
|
|
387
389
|
header: new MessageHeader({
|
|
388
|
-
|
|
390
|
+
// is new neighbour ? then send to all, though that connection (potentially find new peers)
|
|
391
|
+
// , else just try to reach the remote
|
|
392
|
+
mode: new SeekDelivery({
|
|
393
|
+
redundancy: 2,
|
|
394
|
+
to: isNeigbour ? undefined : [publicKey.hashcode()]
|
|
395
|
+
}),
|
|
389
396
|
session: this.session
|
|
390
397
|
})
|
|
391
398
|
}).sign(this.sign)
|
|
392
|
-
)
|
|
393
|
-
[stream];
|
|
399
|
+
);
|
|
394
400
|
}
|
|
395
401
|
|
|
396
402
|
return resp;
|
|
@@ -398,30 +404,27 @@ export class DirectSub extends DirectStream<PubSubEvents> implements PubSub {
|
|
|
398
404
|
|
|
399
405
|
public onPeerUnreachable(publicKeyHash: string) {
|
|
400
406
|
super.onPeerUnreachable(publicKeyHash);
|
|
401
|
-
this.removeSubscriptions(publicKeyHash);
|
|
407
|
+
this.removeSubscriptions(this.peerKeyHashToPublicKey.get(publicKeyHash)!);
|
|
402
408
|
}
|
|
403
409
|
|
|
404
|
-
private removeSubscriptions(
|
|
405
|
-
const peerTopics = this.peerToTopic.get(
|
|
410
|
+
private removeSubscriptions(publicKey: PublicSignKey) {
|
|
411
|
+
const peerTopics = this.peerToTopic.get(publicKey.hashcode());
|
|
406
412
|
|
|
407
413
|
const changed: string[] = [];
|
|
408
414
|
if (peerTopics) {
|
|
409
415
|
for (const topic of peerTopics) {
|
|
410
|
-
const change = this.deletePeerFromTopic(topic,
|
|
416
|
+
const change = this.deletePeerFromTopic(topic, publicKey.hashcode());
|
|
411
417
|
if (change) {
|
|
412
418
|
changed.push(topic);
|
|
413
419
|
}
|
|
414
420
|
}
|
|
415
421
|
}
|
|
416
|
-
this.lastSubscriptionMessages.delete(
|
|
422
|
+
this.lastSubscriptionMessages.delete(publicKey.hashcode());
|
|
417
423
|
|
|
418
424
|
if (changed.length > 0) {
|
|
419
425
|
this.dispatchEvent(
|
|
420
426
|
new CustomEvent<UnsubcriptionEvent>("unsubscribe", {
|
|
421
|
-
detail: new UnsubcriptionEvent(
|
|
422
|
-
this.peerKeyHashToPublicKey.get(publicKeyHash)!,
|
|
423
|
-
changed
|
|
424
|
-
)
|
|
427
|
+
detail: new UnsubcriptionEvent(publicKey, changed)
|
|
425
428
|
})
|
|
426
429
|
);
|
|
427
430
|
}
|
|
@@ -515,9 +518,8 @@ export class DirectSub extends DirectStream<PubSubEvents> implements PubSub {
|
|
|
515
518
|
return false;
|
|
516
519
|
}
|
|
517
520
|
}
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
}
|
|
521
|
+
|
|
522
|
+
await this.maybeAcknowledgeMessage(stream, message, seenBefore);
|
|
521
523
|
|
|
522
524
|
if (isForMe) {
|
|
523
525
|
if (seenBefore === 0) {
|
|
@@ -532,12 +534,6 @@ export class DirectSub extends DirectStream<PubSubEvents> implements PubSub {
|
|
|
532
534
|
}
|
|
533
535
|
}
|
|
534
536
|
|
|
535
|
-
if (message.header.mode.to) {
|
|
536
|
-
message.header.mode.to = message.header.mode.to.filter(
|
|
537
|
-
(x) => x !== this.publicKeyHash
|
|
538
|
-
);
|
|
539
|
-
}
|
|
540
|
-
|
|
541
537
|
// Forward
|
|
542
538
|
if (!pubsubMessage.strict) {
|
|
543
539
|
this.addPeersOnTopic(
|
|
@@ -553,7 +549,6 @@ export class DirectSub extends DirectStream<PubSubEvents> implements PubSub {
|
|
|
553
549
|
// If we are not subscribing ourselves, then we don't have enough information to "stop" message propagation here
|
|
554
550
|
if (
|
|
555
551
|
message.header.mode.to?.length ||
|
|
556
|
-
0 > 0 ||
|
|
557
552
|
!pubsubMessage.topics.find((topic) => this.topics.has(topic)) ||
|
|
558
553
|
message.header.mode instanceof SeekDelivery
|
|
559
554
|
) {
|
|
@@ -571,20 +566,16 @@ export class DirectSub extends DirectStream<PubSubEvents> implements PubSub {
|
|
|
571
566
|
return false;
|
|
572
567
|
}
|
|
573
568
|
|
|
574
|
-
await this.
|
|
569
|
+
await this.maybeAcknowledgeMessage(stream, message, seenBefore);
|
|
575
570
|
|
|
576
571
|
const sender = message.header.signatures!.signatures[0].publicKey!;
|
|
577
572
|
const senderKey = sender.hashcode(); // Assume first signature is the one who is signing
|
|
578
573
|
|
|
579
574
|
if (pubsubMessage instanceof Subscribe) {
|
|
580
|
-
if (pubsubMessage.topics.length === 0) {
|
|
581
|
-
logger.info("Recieved subscription message with no topics");
|
|
582
|
-
return false;
|
|
583
|
-
}
|
|
584
|
-
|
|
585
575
|
if (
|
|
586
576
|
seenBefore === 0 &&
|
|
587
|
-
this.subscriptionMessageIsLatest(message, pubsubMessage)
|
|
577
|
+
this.subscriptionMessageIsLatest(message, pubsubMessage) &&
|
|
578
|
+
pubsubMessage.topics.length > 0
|
|
588
579
|
) {
|
|
589
580
|
const changed: string[] = [];
|
|
590
581
|
pubsubMessage.topics.forEach((topic) => {
|
|
@@ -652,7 +643,7 @@ export class DirectSub extends DirectStream<PubSubEvents> implements PubSub {
|
|
|
652
643
|
})
|
|
653
644
|
});
|
|
654
645
|
|
|
655
|
-
|
|
646
|
+
this.publishMessage(
|
|
656
647
|
this.publicKey,
|
|
657
648
|
await response.sign(this.sign)
|
|
658
649
|
);
|