@peerbit/program 6.0.11 → 6.0.12
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/dist/src/program.d.ts +1 -0
- package/dist/src/program.d.ts.map +1 -1
- package/dist/src/program.js +63 -18
- package/dist/src/program.js.map +1 -1
- package/package.json +5 -5
- package/src/program.ts +72 -23
package/dist/src/program.d.ts
CHANGED
|
@@ -73,6 +73,7 @@ export declare abstract class Program<Args = any, Events extends ProgramEvents =
|
|
|
73
73
|
private peerHasAllTopics;
|
|
74
74
|
private getAllTopicsIncludingThis;
|
|
75
75
|
private seedPeerTopicsSnapshot;
|
|
76
|
+
private emitJoinIfReady;
|
|
76
77
|
private _emitJoinNetworkEvents;
|
|
77
78
|
private _emitLeaveNetworkEvents;
|
|
78
79
|
private _subscriptionEventListener;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
package/dist/src/program.js
CHANGED
|
@@ -309,18 +309,18 @@ let Program = (() => {
|
|
|
309
309
|
continue;
|
|
310
310
|
for (const subscriber of subscribers) {
|
|
311
311
|
this.recordPeerSubscription(subscriber, [topic]);
|
|
312
|
+
this.emitJoinIfReady(subscriber);
|
|
312
313
|
}
|
|
313
314
|
}
|
|
314
315
|
})();
|
|
315
316
|
return this._seedPeerTopicsFromSubscribers;
|
|
316
317
|
}
|
|
317
|
-
|
|
318
|
+
emitJoinIfReady(from) {
|
|
318
319
|
const allTopics = this.getAllTopicsIncludingThis();
|
|
319
320
|
if (allTopics.length === 0) {
|
|
320
|
-
return;
|
|
321
|
+
return;
|
|
321
322
|
}
|
|
322
|
-
|
|
323
|
-
const fromHash = s.from.hashcode();
|
|
323
|
+
const fromHash = from.hashcode();
|
|
324
324
|
if (this.emittedEventsFor.has(fromHash)) {
|
|
325
325
|
return;
|
|
326
326
|
}
|
|
@@ -330,7 +330,11 @@ let Program = (() => {
|
|
|
330
330
|
if (!this.peerHasAllTopics(entry, allTopics))
|
|
331
331
|
return;
|
|
332
332
|
this.emittedEventsFor.add(fromHash);
|
|
333
|
-
this.events.dispatchEvent(new CustomEvent("join", { detail:
|
|
333
|
+
this.events.dispatchEvent(new CustomEvent("join", { detail: from }));
|
|
334
|
+
}
|
|
335
|
+
_emitJoinNetworkEvents(s) {
|
|
336
|
+
this.recordPeerSubscription(s.from, s.topics);
|
|
337
|
+
this.emitJoinIfReady(s.from);
|
|
334
338
|
}
|
|
335
339
|
_emitLeaveNetworkEvents(s) {
|
|
336
340
|
const allTopics = this.getAllTopicsIncludingThis();
|
|
@@ -465,6 +469,35 @@ let Program = (() => {
|
|
|
465
469
|
throw new Error("Program has no topics, cannot get ready");
|
|
466
470
|
}
|
|
467
471
|
const pubsub = this.node.services.pubsub;
|
|
472
|
+
const collectProvidedPublicKeys = (refs) => {
|
|
473
|
+
const providedPublicKeysByHash = new Map();
|
|
474
|
+
const rememberPublicKey = (ref) => {
|
|
475
|
+
if (ref instanceof PublicSignKey) {
|
|
476
|
+
providedPublicKeysByHash.set(ref.hashcode(), ref);
|
|
477
|
+
}
|
|
478
|
+
};
|
|
479
|
+
if (refs instanceof PublicSignKey || typeof refs === "string") {
|
|
480
|
+
rememberPublicKey(refs);
|
|
481
|
+
return providedPublicKeysByHash;
|
|
482
|
+
}
|
|
483
|
+
if (refs instanceof Array || refs instanceof Set) {
|
|
484
|
+
for (const ref of refs) {
|
|
485
|
+
rememberPublicKey(ref);
|
|
486
|
+
}
|
|
487
|
+
return providedPublicKeysByHash;
|
|
488
|
+
}
|
|
489
|
+
if (typeof refs?.[Symbol.iterator] === "function") {
|
|
490
|
+
for (const ref of refs) {
|
|
491
|
+
rememberPublicKey(ref);
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
return providedPublicKeysByHash;
|
|
495
|
+
};
|
|
496
|
+
const providedKeysByHash = collectProvidedPublicKeys(other);
|
|
497
|
+
// Seed a current subscriber snapshot after reachability is established so callers
|
|
498
|
+
// don't depend solely on edge-triggered subscribe events or follow-up snapshot
|
|
499
|
+
// requests to observe peers that were already ready.
|
|
500
|
+
await this.seedPeerTopicsSnapshot(allTopics);
|
|
468
501
|
// Prefer a direct neighbour stream when available. This avoids cases where
|
|
469
502
|
// peers are "reachable" via the routing table but we haven't established
|
|
470
503
|
// a writable protocol stream yet (initial control-plane gossip can be dropped).
|
|
@@ -479,12 +512,15 @@ let Program = (() => {
|
|
|
479
512
|
// snapshots while waiting, but rate-limit to avoid fanout in larger overlays.
|
|
480
513
|
const REQUEST_MIN_INTERVAL_MS = 500;
|
|
481
514
|
const lastRequestAtByPeer = new Map();
|
|
482
|
-
const
|
|
483
|
-
const
|
|
484
|
-
let existing =
|
|
515
|
+
const publicKeyPromisesByHash = new Map();
|
|
516
|
+
const getPublicKeyForHash = (hash) => {
|
|
517
|
+
let existing = publicKeyPromisesByHash.get(hash);
|
|
485
518
|
if (!existing) {
|
|
486
|
-
|
|
487
|
-
|
|
519
|
+
const providedKey = providedKeysByHash.get(hash);
|
|
520
|
+
existing = providedKey
|
|
521
|
+
? Promise.resolve(providedKey)
|
|
522
|
+
: Promise.resolve(pubsub.getPublicKey(hash)).catch(() => undefined);
|
|
523
|
+
publicKeyPromisesByHash.set(hash, existing);
|
|
488
524
|
}
|
|
489
525
|
return existing;
|
|
490
526
|
};
|
|
@@ -494,7 +530,7 @@ let Program = (() => {
|
|
|
494
530
|
if (now - last < REQUEST_MIN_INTERVAL_MS)
|
|
495
531
|
return;
|
|
496
532
|
lastRequestAtByPeer.set(hash, now);
|
|
497
|
-
void
|
|
533
|
+
void getPublicKeyForHash(hash).then((publicKey) => {
|
|
498
534
|
for (const topic of allTopics) {
|
|
499
535
|
void Promise.resolve(pubsub.requestSubscribers(topic, publicKey)).catch(() => {
|
|
500
536
|
// best-effort; the wait loop will retry and/or time out
|
|
@@ -563,6 +599,7 @@ let Program = (() => {
|
|
|
563
599
|
options?.signal?.addEventListener("abort", abortListener, { once: true });
|
|
564
600
|
this.events.addEventListener("close", closeListener, { once: true });
|
|
565
601
|
this.events.addEventListener("drop", dropListener, { once: true });
|
|
602
|
+
const pubsubTopicIndex = pubsub;
|
|
566
603
|
const isPeerReady = async (hash) => {
|
|
567
604
|
const cached = this._peerTopicsByHash?.get(hash);
|
|
568
605
|
if (cached && this.peerHasAllTopics(cached, allTopics)) {
|
|
@@ -571,29 +608,37 @@ let Program = (() => {
|
|
|
571
608
|
// Subscription events are edge-triggered: we may have missed earlier subscribe
|
|
572
609
|
// events (e.g. if they arrived during program open). Fall back to best-effort
|
|
573
610
|
// pubsub snapshots to avoid false timeouts.
|
|
574
|
-
|
|
575
|
-
|
|
611
|
+
let key = providedKeysByHash.get(hash);
|
|
612
|
+
const observedTopics = [];
|
|
613
|
+
const recordObservedTopics = () => {
|
|
614
|
+
if (key && observedTopics.length > 0) {
|
|
615
|
+
this.recordPeerSubscription(key, observedTopics);
|
|
616
|
+
this.emitJoinIfReady(key);
|
|
617
|
+
}
|
|
618
|
+
};
|
|
576
619
|
for (const topic of allTopics) {
|
|
577
620
|
// Fast path for TopicControlPlane: O(1) membership check without allocations.
|
|
578
|
-
const topicPeers =
|
|
621
|
+
const topicPeers = pubsubTopicIndex.topics?.get(topic);
|
|
579
622
|
if (topicPeers?.has?.(hash)) {
|
|
580
623
|
key ||= topicPeers.get(hash)?.publicKey;
|
|
624
|
+
observedTopics.push(topic);
|
|
581
625
|
continue;
|
|
582
626
|
}
|
|
583
627
|
const subscribers = await this.node.services.pubsub.getSubscribers(topic);
|
|
584
628
|
if (!subscribers || subscribers.length === 0) {
|
|
629
|
+
recordObservedTopics();
|
|
585
630
|
return false;
|
|
586
631
|
}
|
|
587
632
|
const found = subscribers.find((x) => x.hashcode() === hash);
|
|
588
633
|
if (!found) {
|
|
634
|
+
recordObservedTopics();
|
|
589
635
|
return false;
|
|
590
636
|
}
|
|
591
637
|
key ||= found;
|
|
638
|
+
observedTopics.push(topic);
|
|
592
639
|
}
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
}
|
|
596
|
-
return true;
|
|
640
|
+
recordObservedTopics();
|
|
641
|
+
return observedTopics.length === allTopics.length;
|
|
597
642
|
};
|
|
598
643
|
const checkReady = async () => {
|
|
599
644
|
if (settled) {
|
package/dist/src/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/program.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/program",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.12",
|
|
4
4
|
"description": "Program interface",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -58,17 +58,17 @@
|
|
|
58
58
|
"multiformats": "^13.4.1",
|
|
59
59
|
"p-queue": "^8.0.1",
|
|
60
60
|
"@peerbit/crypto": "3.1.0",
|
|
61
|
-
"@peerbit/blocks-interface": "2.0.6",
|
|
62
61
|
"@peerbit/keychain": "1.2.7",
|
|
62
|
+
"@peerbit/blocks-interface": "2.0.6",
|
|
63
63
|
"@peerbit/any-store-interface": "1.1.0",
|
|
64
64
|
"@peerbit/pubsub-interface": "5.1.0",
|
|
65
65
|
"@peerbit/libp2p-test-utils": "3.0.2",
|
|
66
|
-
"@peerbit/stream-interface": "6.0.6",
|
|
67
66
|
"@peerbit/indexer-interface": "3.0.2",
|
|
68
67
|
"@peerbit/time": "3.0.0",
|
|
69
68
|
"@peerbit/logger": "2.0.0",
|
|
70
|
-
"@peerbit/
|
|
71
|
-
"@peerbit/
|
|
69
|
+
"@peerbit/stream-interface": "6.0.6",
|
|
70
|
+
"@peerbit/blocks": "4.0.9",
|
|
71
|
+
"@peerbit/pubsub": "5.1.1"
|
|
72
72
|
},
|
|
73
73
|
"scripts": {
|
|
74
74
|
"clean": "aegir clean",
|
package/src/program.ts
CHANGED
|
@@ -355,20 +355,19 @@ export abstract class Program<
|
|
|
355
355
|
if (!subscribers || subscribers.length === 0) continue;
|
|
356
356
|
for (const subscriber of subscribers) {
|
|
357
357
|
this.recordPeerSubscription(subscriber, [topic]);
|
|
358
|
+
this.emitJoinIfReady(subscriber);
|
|
358
359
|
}
|
|
359
360
|
}
|
|
360
361
|
})();
|
|
361
362
|
return this._seedPeerTopicsFromSubscribers;
|
|
362
363
|
}
|
|
363
|
-
private
|
|
364
|
+
private emitJoinIfReady(from: PublicSignKey) {
|
|
364
365
|
const allTopics = this.getAllTopicsIncludingThis();
|
|
365
366
|
if (allTopics.length === 0) {
|
|
366
|
-
return;
|
|
367
|
+
return;
|
|
367
368
|
}
|
|
368
369
|
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
const fromHash = s.from.hashcode();
|
|
370
|
+
const fromHash = from.hashcode();
|
|
372
371
|
if (this.emittedEventsFor.has(fromHash)) {
|
|
373
372
|
return;
|
|
374
373
|
}
|
|
@@ -378,7 +377,11 @@ export abstract class Program<
|
|
|
378
377
|
if (!this.peerHasAllTopics(entry, allTopics)) return;
|
|
379
378
|
|
|
380
379
|
this.emittedEventsFor.add(fromHash);
|
|
381
|
-
this.events.dispatchEvent(new CustomEvent("join", { detail:
|
|
380
|
+
this.events.dispatchEvent(new CustomEvent("join", { detail: from }));
|
|
381
|
+
}
|
|
382
|
+
private _emitJoinNetworkEvents(s: SubscriptionEvent) {
|
|
383
|
+
this.recordPeerSubscription(s.from, s.topics);
|
|
384
|
+
this.emitJoinIfReady(s.from);
|
|
382
385
|
}
|
|
383
386
|
|
|
384
387
|
private _emitLeaveNetworkEvents(s: UnsubcriptionEvent) {
|
|
@@ -544,6 +547,38 @@ export abstract class Program<
|
|
|
544
547
|
throw new Error("Program has no topics, cannot get ready");
|
|
545
548
|
}
|
|
546
549
|
const pubsub = this.node.services.pubsub;
|
|
550
|
+
const collectProvidedPublicKeys = (refs: PeerRefs): Map<string, PublicSignKey> => {
|
|
551
|
+
const providedPublicKeysByHash = new Map<string, PublicSignKey>();
|
|
552
|
+
const rememberPublicKey = (ref: unknown) => {
|
|
553
|
+
if (ref instanceof PublicSignKey) {
|
|
554
|
+
providedPublicKeysByHash.set(ref.hashcode(), ref);
|
|
555
|
+
}
|
|
556
|
+
};
|
|
557
|
+
|
|
558
|
+
if (refs instanceof PublicSignKey || typeof refs === "string") {
|
|
559
|
+
rememberPublicKey(refs);
|
|
560
|
+
return providedPublicKeysByHash;
|
|
561
|
+
}
|
|
562
|
+
if (refs instanceof Array || refs instanceof Set) {
|
|
563
|
+
for (const ref of refs) {
|
|
564
|
+
rememberPublicKey(ref);
|
|
565
|
+
}
|
|
566
|
+
return providedPublicKeysByHash;
|
|
567
|
+
}
|
|
568
|
+
if (typeof (refs as Iterable<unknown>)?.[Symbol.iterator] === "function") {
|
|
569
|
+
for (const ref of refs as Iterable<unknown>) {
|
|
570
|
+
rememberPublicKey(ref);
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
return providedPublicKeysByHash;
|
|
575
|
+
};
|
|
576
|
+
const providedKeysByHash = collectProvidedPublicKeys(other);
|
|
577
|
+
|
|
578
|
+
// Seed a current subscriber snapshot after reachability is established so callers
|
|
579
|
+
// don't depend solely on edge-triggered subscribe events or follow-up snapshot
|
|
580
|
+
// requests to observe peers that were already ready.
|
|
581
|
+
await this.seedPeerTopicsSnapshot(allTopics);
|
|
547
582
|
|
|
548
583
|
// Prefer a direct neighbour stream when available. This avoids cases where
|
|
549
584
|
// peers are "reachable" via the routing table but we haven't established
|
|
@@ -564,19 +599,22 @@ export abstract class Program<
|
|
|
564
599
|
// snapshots while waiting, but rate-limit to avoid fanout in larger overlays.
|
|
565
600
|
const REQUEST_MIN_INTERVAL_MS = 500;
|
|
566
601
|
const lastRequestAtByPeer = new Map<string, number>();
|
|
567
|
-
const
|
|
602
|
+
const publicKeyPromisesByHash = new Map<
|
|
568
603
|
string,
|
|
569
604
|
Promise<PublicSignKey | undefined>
|
|
570
605
|
>();
|
|
571
|
-
const
|
|
606
|
+
const getPublicKeyForHash = (
|
|
572
607
|
hash: string,
|
|
573
608
|
): Promise<PublicSignKey | undefined> => {
|
|
574
|
-
let existing =
|
|
609
|
+
let existing = publicKeyPromisesByHash.get(hash);
|
|
575
610
|
if (!existing) {
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
611
|
+
const providedKey = providedKeysByHash.get(hash);
|
|
612
|
+
existing = providedKey
|
|
613
|
+
? Promise.resolve(providedKey)
|
|
614
|
+
: Promise.resolve(pubsub.getPublicKey(hash)).catch(
|
|
615
|
+
(): PublicSignKey | undefined => undefined,
|
|
616
|
+
);
|
|
617
|
+
publicKeyPromisesByHash.set(hash, existing);
|
|
580
618
|
}
|
|
581
619
|
return existing;
|
|
582
620
|
};
|
|
@@ -586,7 +624,7 @@ export abstract class Program<
|
|
|
586
624
|
if (now - last < REQUEST_MIN_INTERVAL_MS) return;
|
|
587
625
|
lastRequestAtByPeer.set(hash, now);
|
|
588
626
|
|
|
589
|
-
void
|
|
627
|
+
void getPublicKeyForHash(hash).then((publicKey) => {
|
|
590
628
|
for (const topic of allTopics) {
|
|
591
629
|
void Promise.resolve(
|
|
592
630
|
pubsub.requestSubscribers(topic, publicKey),
|
|
@@ -670,6 +708,11 @@ export abstract class Program<
|
|
|
670
708
|
this.events.addEventListener("close", closeListener, { once: true });
|
|
671
709
|
this.events.addEventListener("drop", dropListener, { once: true });
|
|
672
710
|
|
|
711
|
+
type PubSubTopicIndex = {
|
|
712
|
+
topics?: Map<string, Map<string, { publicKey: PublicSignKey }>>;
|
|
713
|
+
};
|
|
714
|
+
const pubsubTopicIndex = pubsub as PubSubTopicIndex;
|
|
715
|
+
|
|
673
716
|
const isPeerReady = async (hash: string) => {
|
|
674
717
|
const cached = this._peerTopicsByHash?.get(hash);
|
|
675
718
|
if (cached && this.peerHasAllTopics(cached, allTopics)) {
|
|
@@ -679,35 +722,41 @@ export abstract class Program<
|
|
|
679
722
|
// Subscription events are edge-triggered: we may have missed earlier subscribe
|
|
680
723
|
// events (e.g. if they arrived during program open). Fall back to best-effort
|
|
681
724
|
// pubsub snapshots to avoid false timeouts.
|
|
682
|
-
|
|
683
|
-
|
|
725
|
+
let key: PublicSignKey | undefined = providedKeysByHash.get(hash);
|
|
726
|
+
const observedTopics: string[] = [];
|
|
727
|
+
const recordObservedTopics = () => {
|
|
728
|
+
if (key && observedTopics.length > 0) {
|
|
729
|
+
this.recordPeerSubscription(key, observedTopics);
|
|
730
|
+
this.emitJoinIfReady(key);
|
|
731
|
+
}
|
|
732
|
+
};
|
|
684
733
|
|
|
685
734
|
for (const topic of allTopics) {
|
|
686
735
|
// Fast path for TopicControlPlane: O(1) membership check without allocations.
|
|
687
|
-
const topicPeers
|
|
688
|
-
| Map<string, { publicKey: PublicSignKey }>
|
|
689
|
-
| undefined = pubsubAny?.topics?.get?.(topic);
|
|
736
|
+
const topicPeers = pubsubTopicIndex.topics?.get(topic);
|
|
690
737
|
if (topicPeers?.has?.(hash)) {
|
|
691
738
|
key ||= topicPeers.get(hash)?.publicKey;
|
|
739
|
+
observedTopics.push(topic);
|
|
692
740
|
continue;
|
|
693
741
|
}
|
|
694
742
|
|
|
695
743
|
const subscribers =
|
|
696
744
|
await this.node.services.pubsub.getSubscribers(topic);
|
|
697
745
|
if (!subscribers || subscribers.length === 0) {
|
|
746
|
+
recordObservedTopics();
|
|
698
747
|
return false;
|
|
699
748
|
}
|
|
700
749
|
const found = subscribers.find((x) => x.hashcode() === hash);
|
|
701
750
|
if (!found) {
|
|
751
|
+
recordObservedTopics();
|
|
702
752
|
return false;
|
|
703
753
|
}
|
|
704
754
|
key ||= found;
|
|
755
|
+
observedTopics.push(topic);
|
|
705
756
|
}
|
|
706
757
|
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
}
|
|
710
|
-
return true;
|
|
758
|
+
recordObservedTopics();
|
|
759
|
+
return observedTopics.length === allTopics.length;
|
|
711
760
|
};
|
|
712
761
|
|
|
713
762
|
const checkReady = async () => {
|