@peerbit/pubsub 5.3.9 → 5.3.11
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/fanout-tree.d.ts +1 -0
- package/dist/src/fanout-tree.d.ts.map +1 -1
- package/dist/src/fanout-tree.js +43 -12
- package/dist/src/fanout-tree.js.map +1 -1
- package/dist/src/index.d.ts +15 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +256 -82
- package/dist/src/index.js.map +1 -1
- package/dist/src/topic-root-control-plane.d.ts +11 -8
- package/dist/src/topic-root-control-plane.d.ts.map +1 -1
- package/dist/src/topic-root-control-plane.js +51 -15
- package/dist/src/topic-root-control-plane.js.map +1 -1
- package/package.json +4 -4
- package/src/fanout-tree.ts +51 -12
- package/src/index.ts +356 -109
- package/src/topic-root-control-plane.ts +89 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topic-root-control-plane.js","sourceRoot":"","sources":["../../src/topic-root-control-plane.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"topic-root-control-plane.js","sourceRoot":"","sources":["../../src/topic-root-control-plane.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/pubsub",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.11",
|
|
4
4
|
"description": "Direct streaming for libp2p",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -84,11 +84,11 @@
|
|
|
84
84
|
"p-defer": "^4.0.0",
|
|
85
85
|
"uint8arraylist": "^2.4.8",
|
|
86
86
|
"uint8arrays": "^5.1.0",
|
|
87
|
-
"@peerbit/any-store-interface": "1.1.2",
|
|
88
|
-
"@peerbit/crypto": "3.1.4",
|
|
89
|
-
"@peerbit/logger": "2.0.1",
|
|
90
87
|
"@peerbit/pubsub-interface": "5.1.9",
|
|
88
|
+
"@peerbit/any-store-interface": "1.1.2",
|
|
91
89
|
"@peerbit/stream": "5.1.5",
|
|
90
|
+
"@peerbit/logger": "2.0.1",
|
|
91
|
+
"@peerbit/crypto": "3.1.4",
|
|
92
92
|
"@peerbit/stream-interface": "6.0.14",
|
|
93
93
|
"@peerbit/time": "3.0.1"
|
|
94
94
|
},
|
package/src/fanout-tree.ts
CHANGED
|
@@ -956,6 +956,7 @@ type ProviderAnnounceState = {
|
|
|
956
956
|
bootstrapOverride?: Multiaddr[];
|
|
957
957
|
bootstrapDialTimeoutMs: number;
|
|
958
958
|
bootstrapMaxPeers: number;
|
|
959
|
+
closeController: AbortController;
|
|
959
960
|
closed: boolean;
|
|
960
961
|
loop?: Promise<void>;
|
|
961
962
|
};
|
|
@@ -970,6 +971,7 @@ type ProviderWatchState = {
|
|
|
970
971
|
bootstrapMaxPeers: number;
|
|
971
972
|
onProviders: (providers: FanoutProviderCandidate[]) => void;
|
|
972
973
|
signal?: AbortSignal;
|
|
974
|
+
closeController: AbortController;
|
|
973
975
|
closed: boolean;
|
|
974
976
|
trackerPeers: string[];
|
|
975
977
|
loop?: Promise<void>;
|
|
@@ -1000,6 +1002,7 @@ type ChannelState = {
|
|
|
1000
1002
|
metrics: FanoutTreeChannelMetrics;
|
|
1001
1003
|
level: number;
|
|
1002
1004
|
isRoot: boolean;
|
|
1005
|
+
closeController: AbortController;
|
|
1003
1006
|
closed: boolean;
|
|
1004
1007
|
parent?: string;
|
|
1005
1008
|
children: Map<string, ChildInfo>;
|
|
@@ -1399,7 +1402,36 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
1399
1402
|
);
|
|
1400
1403
|
}
|
|
1401
1404
|
|
|
1405
|
+
private createLoopCloseController(): AbortController {
|
|
1406
|
+
const controller = new AbortController();
|
|
1407
|
+
const stopSignal = this.closeController.signal;
|
|
1408
|
+
const abortOnStop = () => controller.abort();
|
|
1409
|
+
|
|
1410
|
+
if (stopSignal.aborted) {
|
|
1411
|
+
abortOnStop();
|
|
1412
|
+
} else {
|
|
1413
|
+
stopSignal.addEventListener("abort", abortOnStop, { once: true });
|
|
1414
|
+
controller.signal.addEventListener(
|
|
1415
|
+
"abort",
|
|
1416
|
+
() => stopSignal.removeEventListener("abort", abortOnStop),
|
|
1417
|
+
{ once: true },
|
|
1418
|
+
);
|
|
1419
|
+
}
|
|
1420
|
+
return controller;
|
|
1421
|
+
}
|
|
1422
|
+
|
|
1402
1423
|
public override async stop() {
|
|
1424
|
+
for (const state of this.providerAnnounceBySuffixKey.values()) {
|
|
1425
|
+
state.closeController.abort();
|
|
1426
|
+
}
|
|
1427
|
+
for (const watches of this.providerWatchesBySuffixKey.values()) {
|
|
1428
|
+
for (const watch of watches) {
|
|
1429
|
+
watch.closeController.abort();
|
|
1430
|
+
}
|
|
1431
|
+
}
|
|
1432
|
+
for (const channel of this.channelsBySuffixKey.values()) {
|
|
1433
|
+
channel.closeController.abort();
|
|
1434
|
+
}
|
|
1403
1435
|
if (this.underlayPeerDisconnectHandler) {
|
|
1404
1436
|
this.components.events.removeEventListener(
|
|
1405
1437
|
"peer:disconnect",
|
|
@@ -1668,6 +1700,7 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
1668
1700
|
bootstrapOverride,
|
|
1669
1701
|
bootstrapDialTimeoutMs,
|
|
1670
1702
|
bootstrapMaxPeers,
|
|
1703
|
+
closeController: this.createLoopCloseController(),
|
|
1671
1704
|
closed: false,
|
|
1672
1705
|
};
|
|
1673
1706
|
this.providerAnnounceBySuffixKey.set(id.suffixKey, state);
|
|
@@ -1685,6 +1718,7 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
1685
1718
|
const current = this.providerAnnounceBySuffixKey.get(id.suffixKey);
|
|
1686
1719
|
if (!current) return;
|
|
1687
1720
|
current.closed = true;
|
|
1721
|
+
current.closeController.abort();
|
|
1688
1722
|
this.providerAnnounceBySuffixKey.delete(id.suffixKey);
|
|
1689
1723
|
// Best-effort immediate withdrawal (ttl=0).
|
|
1690
1724
|
void this.announceProviderOnce(
|
|
@@ -1739,6 +1773,7 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
1739
1773
|
bootstrapOverride,
|
|
1740
1774
|
bootstrapDialTimeoutMs,
|
|
1741
1775
|
bootstrapMaxPeers,
|
|
1776
|
+
closeController: new AbortController(),
|
|
1742
1777
|
closed: false,
|
|
1743
1778
|
};
|
|
1744
1779
|
|
|
@@ -1748,7 +1783,7 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
1748
1783
|
private async _providerAnnounceLoop(
|
|
1749
1784
|
state: ProviderAnnounceState,
|
|
1750
1785
|
): Promise<void> {
|
|
1751
|
-
const signal =
|
|
1786
|
+
const signal = state.closeController.signal;
|
|
1752
1787
|
for (;;) {
|
|
1753
1788
|
if (signal.aborted || state.closed) return;
|
|
1754
1789
|
try {
|
|
@@ -1756,7 +1791,7 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
1756
1791
|
} catch {
|
|
1757
1792
|
// ignore
|
|
1758
1793
|
}
|
|
1759
|
-
await delay(Math.max(50, state.announceIntervalMs));
|
|
1794
|
+
await delay(Math.max(50, state.announceIntervalMs), { signal });
|
|
1760
1795
|
}
|
|
1761
1796
|
}
|
|
1762
1797
|
|
|
@@ -2008,6 +2043,7 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
2008
2043
|
),
|
|
2009
2044
|
onProviders: options.onProviders,
|
|
2010
2045
|
signal: options.signal,
|
|
2046
|
+
closeController: this.createLoopCloseController(),
|
|
2011
2047
|
closed: false,
|
|
2012
2048
|
trackerPeers: [],
|
|
2013
2049
|
};
|
|
@@ -2036,6 +2072,7 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
2036
2072
|
const close = () => {
|
|
2037
2073
|
if (watch.closed) return;
|
|
2038
2074
|
watch.closed = true;
|
|
2075
|
+
watch.closeController.abort();
|
|
2039
2076
|
localWatches?.delete(watch);
|
|
2040
2077
|
if (localWatches && localWatches.size === 0) {
|
|
2041
2078
|
this.providerWatchesBySuffixKey.delete(id.suffixKey);
|
|
@@ -2053,8 +2090,8 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
2053
2090
|
watch.signal?.addEventListener("abort", onAbort, { once: true });
|
|
2054
2091
|
|
|
2055
2092
|
const loopSignal = watch.signal
|
|
2056
|
-
? anySignal([
|
|
2057
|
-
:
|
|
2093
|
+
? anySignal([watch.closeController.signal, watch.signal])
|
|
2094
|
+
: watch.closeController.signal;
|
|
2058
2095
|
|
|
2059
2096
|
watch.loop = (async () => {
|
|
2060
2097
|
for (;;) {
|
|
@@ -2268,6 +2305,7 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
2268
2305
|
metrics: this.getMetricsForSuffixKey(id.suffixKey),
|
|
2269
2306
|
level: opts.role === "root" ? 0 : Number.POSITIVE_INFINITY,
|
|
2270
2307
|
isRoot: opts.role === "root",
|
|
2308
|
+
closeController: this.createLoopCloseController(),
|
|
2271
2309
|
closed: false,
|
|
2272
2310
|
parent: undefined,
|
|
2273
2311
|
children: new Map(),
|
|
@@ -2624,6 +2662,7 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
2624
2662
|
if (!ch) return;
|
|
2625
2663
|
if (ch.closed) return;
|
|
2626
2664
|
ch.closed = true;
|
|
2665
|
+
ch.closeController.abort();
|
|
2627
2666
|
|
|
2628
2667
|
// If a join is in-flight, surface that it won't complete.
|
|
2629
2668
|
try {
|
|
@@ -4900,7 +4939,7 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
4900
4939
|
}
|
|
4901
4940
|
|
|
4902
4941
|
private async _announceLoop(ch: ChannelState): Promise<void> {
|
|
4903
|
-
const signal =
|
|
4942
|
+
const signal = ch.closeController.signal;
|
|
4904
4943
|
for (;;) {
|
|
4905
4944
|
if (signal.aborted || ch.closed) return;
|
|
4906
4945
|
try {
|
|
@@ -4925,12 +4964,12 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
4925
4964
|
// ignore
|
|
4926
4965
|
}
|
|
4927
4966
|
const sleepMs = ch.announceIntervalMs > 0 ? ch.announceIntervalMs : 1_000;
|
|
4928
|
-
await delay(sleepMs);
|
|
4967
|
+
await delay(sleepMs, { signal });
|
|
4929
4968
|
}
|
|
4930
4969
|
}
|
|
4931
4970
|
|
|
4932
4971
|
private async _repairLoop(ch: ChannelState): Promise<void> {
|
|
4933
|
-
const signal =
|
|
4972
|
+
const signal = ch.closeController.signal;
|
|
4934
4973
|
for (;;) {
|
|
4935
4974
|
if (signal.aborted || ch.closed) return;
|
|
4936
4975
|
try {
|
|
@@ -4941,7 +4980,7 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
4941
4980
|
const activeMs = ch.repairIntervalMs > 0 ? ch.repairIntervalMs : 200;
|
|
4942
4981
|
const sleepMs =
|
|
4943
4982
|
ch.missingSeqs.size > 0 ? activeMs : Math.max(activeMs, 1_000);
|
|
4944
|
-
await delay(sleepMs);
|
|
4983
|
+
await delay(sleepMs, { signal });
|
|
4945
4984
|
}
|
|
4946
4985
|
}
|
|
4947
4986
|
|
|
@@ -5179,7 +5218,7 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
5179
5218
|
}
|
|
5180
5219
|
|
|
5181
5220
|
private async _meshLoop(ch: ChannelState): Promise<void> {
|
|
5182
|
-
const signal =
|
|
5221
|
+
const signal = ch.closeController.signal;
|
|
5183
5222
|
let lastRefreshAt = 0;
|
|
5184
5223
|
for (;;) {
|
|
5185
5224
|
if (signal.aborted || ch.closed) return;
|
|
@@ -5209,7 +5248,7 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
5209
5248
|
ch.neighborMeshRefreshIntervalMs,
|
|
5210
5249
|
].filter((v) => v > 0);
|
|
5211
5250
|
const sleepMs = intervals.length > 0 ? Math.min(...intervals) : 500;
|
|
5212
|
-
await delay(Math.max(50, sleepMs));
|
|
5251
|
+
await delay(Math.max(50, sleepMs), { signal });
|
|
5213
5252
|
}
|
|
5214
5253
|
}
|
|
5215
5254
|
|
|
@@ -5678,8 +5717,8 @@ export class FanoutTree extends DirectStream<FanoutTreeEvents> {
|
|
|
5678
5717
|
const start = Date.now();
|
|
5679
5718
|
const cooldownUntilByHash = new Map<string, number>();
|
|
5680
5719
|
const combinedSignal = joinOpts.signal
|
|
5681
|
-
? anySignal([
|
|
5682
|
-
:
|
|
5720
|
+
? anySignal([ch.closeController.signal, joinOpts.signal])
|
|
5721
|
+
: ch.closeController.signal;
|
|
5683
5722
|
const signal = combinedSignal as AbortSignal & { clear?: () => void };
|
|
5684
5723
|
let nextParentUpgradeCheckAt = 0;
|
|
5685
5724
|
let parentUpgradeCheckSeq = 0;
|