@peerbit/react 1.0.11 → 1.1.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.
- package/dist/src/usePeer.d.ts +12 -1
- package/dist/src/usePeer.d.ts.map +1 -1
- package/dist/src/usePeer.js +67 -3
- package/dist/src/usePeer.js.map +1 -1
- package/package.json +5 -3
- package/src/usePeer.tsx +106 -7
package/dist/src/usePeer.d.ts
CHANGED
|
@@ -19,7 +19,13 @@ export type PeerbitLike = {
|
|
|
19
19
|
hangUp: (address: PeerId | PublicSignKey | string | Multiaddr) => Promise<void>;
|
|
20
20
|
start: () => Promise<void>;
|
|
21
21
|
stop: () => Promise<void>;
|
|
22
|
-
bootstrap?: (addresses?: string[] | Multiaddr[]) => Promise<void
|
|
22
|
+
bootstrap?: (addresses?: string[] | Multiaddr[]) => Promise<void | {
|
|
23
|
+
connectedPeerIds?: string[];
|
|
24
|
+
failures?: {
|
|
25
|
+
peerId?: string;
|
|
26
|
+
reason: string;
|
|
27
|
+
}[];
|
|
28
|
+
}>;
|
|
23
29
|
open: <S extends Program<any>>(storeOrAddress: S | Address | string, options?: CanonicalOpenOptions<S>) => Promise<S>;
|
|
24
30
|
};
|
|
25
31
|
export type PeerRuntime = "node" | "canonical";
|
|
@@ -71,6 +77,11 @@ export type IPeerContext = {
|
|
|
71
77
|
persisted?: boolean;
|
|
72
78
|
tabIndex?: number;
|
|
73
79
|
error?: Error;
|
|
80
|
+
warning?: {
|
|
81
|
+
type: "bootstrap-partial";
|
|
82
|
+
message: string;
|
|
83
|
+
failures: string[];
|
|
84
|
+
};
|
|
74
85
|
canonical?: {
|
|
75
86
|
client: CanonicalClient;
|
|
76
87
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePeer.d.ts","sourceRoot":"","sources":["../../src/usePeer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EACX,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,oBAAoB,EACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"usePeer.d.ts","sourceRoot":"","sources":["../../src/usePeer.tsx"],"names":[],"mappings":"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"}
|
package/dist/src/usePeer.js
CHANGED
|
@@ -12,6 +12,19 @@ const keypairLog = log.newScope("keypair");
|
|
|
12
12
|
const storageLog = log.newScope("storage");
|
|
13
13
|
const clientLog = log.newScope("client");
|
|
14
14
|
const bootstrapLog = log.newScope("bootstrap");
|
|
15
|
+
const hasBootstrapConnection = (peer, bootstrapPeerIds) => {
|
|
16
|
+
if (bootstrapPeerIds.size === 0) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
const connections = peer?.libp2p?.getConnections?.() ?? [];
|
|
20
|
+
for (const connection of connections) {
|
|
21
|
+
const remotePeer = connection?.remotePeer?.toString?.();
|
|
22
|
+
if (remotePeer && bootstrapPeerIds.has(remotePeer)) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return false;
|
|
27
|
+
};
|
|
15
28
|
const isInStandaloneMode = () => window.matchMedia("(display-mode: standalone)").matches ||
|
|
16
29
|
(window.navigator["standalone"] ??
|
|
17
30
|
false) ||
|
|
@@ -46,6 +59,7 @@ export const PeerProvider = ({ config, children }) => {
|
|
|
46
59
|
const [connectionState, setConnectionState] = React.useState("disconnected");
|
|
47
60
|
const [tabIndex, setTabIndex] = React.useState(undefined);
|
|
48
61
|
const [error, setError] = React.useState(undefined);
|
|
62
|
+
const [warning, setWarning] = React.useState(undefined);
|
|
49
63
|
const memo = React.useMemo(() => {
|
|
50
64
|
return {
|
|
51
65
|
runtime,
|
|
@@ -56,6 +70,7 @@ export const PeerProvider = ({ config, children }) => {
|
|
|
56
70
|
persisted,
|
|
57
71
|
tabIndex,
|
|
58
72
|
error,
|
|
73
|
+
warning,
|
|
59
74
|
canonical: canonicalClient ? { client: canonicalClient } : undefined,
|
|
60
75
|
};
|
|
61
76
|
}, [
|
|
@@ -68,6 +83,7 @@ export const PeerProvider = ({ config, children }) => {
|
|
|
68
83
|
promise,
|
|
69
84
|
runtime,
|
|
70
85
|
tabIndex,
|
|
86
|
+
warning,
|
|
71
87
|
]);
|
|
72
88
|
React.useEffect(() => {
|
|
73
89
|
let unmounted = false;
|
|
@@ -79,6 +95,7 @@ export const PeerProvider = ({ config, children }) => {
|
|
|
79
95
|
setConnectionState("connecting");
|
|
80
96
|
setLoading(true);
|
|
81
97
|
setError(undefined);
|
|
98
|
+
setWarning(undefined);
|
|
82
99
|
const fn = async () => {
|
|
83
100
|
if (selected.runtime === "canonical") {
|
|
84
101
|
const { connectServiceWorker, connectSharedWorker, connectWindow, PeerbitCanonicalClient, } = await import("@peerbit/canonical-client");
|
|
@@ -128,7 +145,7 @@ export const PeerProvider = ({ config, children }) => {
|
|
|
128
145
|
return;
|
|
129
146
|
}
|
|
130
147
|
const nodeOptions = selected;
|
|
131
|
-
const [{ detectIncognito }, sodiumModule, { Peerbit }, { noise }, { yamux }, { webSockets }, { keys },] = await Promise.all([
|
|
148
|
+
const [{ detectIncognito }, sodiumModule, { Peerbit, getBootstrapPeerId, resolveBootstrapAddresses }, { noise }, { yamux }, { webSockets }, { keys },] = await Promise.all([
|
|
132
149
|
import("detectincognitojs"),
|
|
133
150
|
import("libsodium-wrappers"),
|
|
134
151
|
import("peerbit"),
|
|
@@ -235,24 +252,31 @@ export const PeerProvider = ({ config, children }) => {
|
|
|
235
252
|
indexer: nodeOptions.indexer,
|
|
236
253
|
});
|
|
237
254
|
newPeer = created;
|
|
255
|
+
closePeer = () => {
|
|
256
|
+
keepAliveRef.current = false;
|
|
257
|
+
void created?.stop?.().catch(() => { });
|
|
258
|
+
};
|
|
238
259
|
window.__peerInfo = {
|
|
239
260
|
peerHash: created?.identity?.publicKey?.hashcode?.(),
|
|
240
261
|
persisted: persistedResolved,
|
|
241
262
|
};
|
|
242
263
|
window.dispatchEvent(new CustomEvent("peer:ready", { detail: window.__peerInfo }));
|
|
243
264
|
const connectFn = async () => {
|
|
265
|
+
let bootstrapTargets = [];
|
|
244
266
|
try {
|
|
245
267
|
const network = nodeOptions.network;
|
|
268
|
+
let bootstrapResult = undefined;
|
|
246
269
|
if (typeof network !== "string" &&
|
|
247
270
|
network?.bootstrap !== undefined) {
|
|
248
271
|
const list = network.bootstrap;
|
|
272
|
+
bootstrapTargets = list;
|
|
249
273
|
if (list.length === 0) {
|
|
250
274
|
bootstrapLog("offline: skipping relay dialing");
|
|
251
275
|
}
|
|
252
276
|
else {
|
|
253
277
|
if (typeof created.bootstrap === "function") {
|
|
254
278
|
bootstrapLog("bootstrapping explicit addresses", list);
|
|
255
|
-
await created.bootstrap(list.map((addr) => typeof addr === "string" ? addr : addr.toString()));
|
|
279
|
+
bootstrapResult = await created.bootstrap(list.map((addr) => typeof addr === "string" ? addr : addr.toString()));
|
|
256
280
|
}
|
|
257
281
|
else {
|
|
258
282
|
for (const addr of list) {
|
|
@@ -265,15 +289,55 @@ export const PeerProvider = ({ config, children }) => {
|
|
|
265
289
|
(typeof network !== "string" && network?.type === "local")) {
|
|
266
290
|
const localAddress = "/ip4/127.0.0.1/tcp/8002/ws/p2p/" +
|
|
267
291
|
(await (await fetch("http://localhost:8082/peer/id")).text());
|
|
292
|
+
bootstrapTargets = [localAddress];
|
|
268
293
|
bootstrapLog("dialing local address", localAddress);
|
|
269
294
|
await created.dial(localAddress);
|
|
270
295
|
}
|
|
271
296
|
else {
|
|
272
|
-
await
|
|
297
|
+
const resolvedBootstrapAddresses = (await resolveBootstrapAddresses?.()) ?? [];
|
|
298
|
+
bootstrapTargets = resolvedBootstrapAddresses;
|
|
299
|
+
bootstrapResult =
|
|
300
|
+
await created.bootstrap?.(resolvedBootstrapAddresses);
|
|
301
|
+
}
|
|
302
|
+
if ((bootstrapResult?.failures?.length ?? 0) > 0) {
|
|
303
|
+
const failureSummaries = bootstrapResult.failures.map((failure) => {
|
|
304
|
+
const target = failure.peerId ?? "unknown bootstrap target";
|
|
305
|
+
return `${target}: ${failure.reason}`;
|
|
306
|
+
});
|
|
307
|
+
const message = `Connected to ${bootstrapResult?.connectedPeerIds?.length ?? 0} bootstrap peer(s), ` +
|
|
308
|
+
`but failed to reach ${bootstrapResult?.failures?.length ?? 0} peer(s)`;
|
|
309
|
+
bootstrapLog("bootstrap partial warning", {
|
|
310
|
+
connectedPeerIds: bootstrapResult?.connectedPeerIds ?? [],
|
|
311
|
+
failures: failureSummaries,
|
|
312
|
+
});
|
|
313
|
+
console.warn(message, failureSummaries);
|
|
314
|
+
setWarning({
|
|
315
|
+
type: "bootstrap-partial",
|
|
316
|
+
message,
|
|
317
|
+
failures: failureSummaries,
|
|
318
|
+
});
|
|
273
319
|
}
|
|
274
320
|
setConnectionState("connected");
|
|
275
321
|
}
|
|
276
322
|
catch (err) {
|
|
323
|
+
const bootstrapPeerIds = new Set(bootstrapTargets
|
|
324
|
+
.map((address) => getBootstrapPeerId(address))
|
|
325
|
+
.filter((address) => !!address));
|
|
326
|
+
if (unmounted) {
|
|
327
|
+
bootstrapLog("ignoring bootstrap failure after unmount", {
|
|
328
|
+
error: err?.message ?? String(err),
|
|
329
|
+
bootstrapPeerIds: [...bootstrapPeerIds],
|
|
330
|
+
});
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
if (hasBootstrapConnection(created, bootstrapPeerIds)) {
|
|
334
|
+
bootstrapLog("ignoring bootstrap failure with active bootstrap connection", {
|
|
335
|
+
error: err?.message ?? String(err),
|
|
336
|
+
bootstrapPeerIds: [...bootstrapPeerIds],
|
|
337
|
+
});
|
|
338
|
+
setConnectionState("connected");
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
277
341
|
console.error("Failed to bootstrap:", err);
|
|
278
342
|
setConnectionState("failed");
|
|
279
343
|
}
|
package/dist/src/usePeer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePeer.js","sourceRoot":"","sources":["../../src/usePeer.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usePeer.js","sourceRoot":"","sources":["../../src/usePeer.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/react",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "React bindings for Peerbit clients",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -54,11 +54,11 @@
|
|
|
54
54
|
"uuid": "^10.0.0",
|
|
55
55
|
"@peerbit/canonical-client": "1.1.11",
|
|
56
56
|
"@peerbit/logger": "2.0.0",
|
|
57
|
+
"@peerbit/program": "6.0.8",
|
|
57
58
|
"@peerbit/program-react": "0.4.11",
|
|
58
59
|
"@peerbit/crypto": "3.0.1",
|
|
59
|
-
"@peerbit/program": "6.0.8",
|
|
60
60
|
"@peerbit/indexer-interface": "3.0.1",
|
|
61
|
-
"peerbit": "5.0
|
|
61
|
+
"peerbit": "5.1.0"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@vitest/coverage-v8": "^4.0.12",
|
|
@@ -67,8 +67,10 @@
|
|
|
67
67
|
"@types/libsodium-wrappers": "^0.7.14",
|
|
68
68
|
"@types/node-localstorage": "^1.3.3",
|
|
69
69
|
"@types/react": "^18.3.11",
|
|
70
|
+
"@types/react-dom": "^18.3.5",
|
|
70
71
|
"chai": "^5.2.0",
|
|
71
72
|
"node-localstorage": "^3.0.5",
|
|
73
|
+
"react-dom": "^19.1.0",
|
|
72
74
|
"sinon": "^21.0.0",
|
|
73
75
|
"vitest": "^4.0.12",
|
|
74
76
|
"@peerbit/time": "3.0.0"
|
package/src/usePeer.tsx
CHANGED
|
@@ -32,6 +32,25 @@ const storageLog = log.newScope("storage");
|
|
|
32
32
|
const clientLog = log.newScope("client");
|
|
33
33
|
const bootstrapLog = log.newScope("bootstrap");
|
|
34
34
|
|
|
35
|
+
const hasBootstrapConnection = (
|
|
36
|
+
peer: PeerbitLike,
|
|
37
|
+
bootstrapPeerIds: Set<string>,
|
|
38
|
+
): boolean => {
|
|
39
|
+
if (bootstrapPeerIds.size === 0) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const connections = (peer as any)?.libp2p?.getConnections?.() ?? [];
|
|
44
|
+
for (const connection of connections) {
|
|
45
|
+
const remotePeer = connection?.remotePeer?.toString?.();
|
|
46
|
+
if (remotePeer && bootstrapPeerIds.has(remotePeer)) {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return false;
|
|
52
|
+
};
|
|
53
|
+
|
|
35
54
|
const isInStandaloneMode = () =>
|
|
36
55
|
window.matchMedia("(display-mode: standalone)").matches ||
|
|
37
56
|
((window.navigator as unknown as Record<string, unknown>)["standalone"] ??
|
|
@@ -61,7 +80,15 @@ export type PeerbitLike = {
|
|
|
61
80
|
) => Promise<void>;
|
|
62
81
|
start: () => Promise<void>;
|
|
63
82
|
stop: () => Promise<void>;
|
|
64
|
-
bootstrap?: (
|
|
83
|
+
bootstrap?: (
|
|
84
|
+
addresses?: string[] | Multiaddr[],
|
|
85
|
+
) => Promise<
|
|
86
|
+
| void
|
|
87
|
+
| {
|
|
88
|
+
connectedPeerIds?: string[];
|
|
89
|
+
failures?: { peerId?: string; reason: string }[];
|
|
90
|
+
}
|
|
91
|
+
>;
|
|
65
92
|
open: <S extends Program<any>>(
|
|
66
93
|
storeOrAddress: S | Address | string,
|
|
67
94
|
options?: CanonicalOpenOptions<S>,
|
|
@@ -125,6 +152,7 @@ export type IPeerContext = {
|
|
|
125
152
|
persisted?: boolean;
|
|
126
153
|
tabIndex?: number;
|
|
127
154
|
error?: Error;
|
|
155
|
+
warning?: { type: "bootstrap-partial"; message: string; failures: string[] };
|
|
128
156
|
canonical?: {
|
|
129
157
|
client: CanonicalClient;
|
|
130
158
|
};
|
|
@@ -184,6 +212,9 @@ export const PeerProvider = ({ config, children }: PeerProviderProps) => {
|
|
|
184
212
|
React.useState<ConnectionStatus>("disconnected");
|
|
185
213
|
const [tabIndex, setTabIndex] = React.useState<number | undefined>(undefined);
|
|
186
214
|
const [error, setError] = React.useState<Error | undefined>(undefined);
|
|
215
|
+
const [warning, setWarning] = React.useState<
|
|
216
|
+
IPeerContext["warning"] | undefined
|
|
217
|
+
>(undefined);
|
|
187
218
|
|
|
188
219
|
const memo = React.useMemo<IPeerContext>(() => {
|
|
189
220
|
return {
|
|
@@ -195,6 +226,7 @@ export const PeerProvider = ({ config, children }: PeerProviderProps) => {
|
|
|
195
226
|
persisted,
|
|
196
227
|
tabIndex,
|
|
197
228
|
error,
|
|
229
|
+
warning,
|
|
198
230
|
canonical: canonicalClient ? { client: canonicalClient } : undefined,
|
|
199
231
|
};
|
|
200
232
|
}, [
|
|
@@ -207,6 +239,7 @@ export const PeerProvider = ({ config, children }: PeerProviderProps) => {
|
|
|
207
239
|
promise,
|
|
208
240
|
runtime,
|
|
209
241
|
tabIndex,
|
|
242
|
+
warning,
|
|
210
243
|
]);
|
|
211
244
|
|
|
212
245
|
React.useEffect(() => {
|
|
@@ -220,6 +253,7 @@ export const PeerProvider = ({ config, children }: PeerProviderProps) => {
|
|
|
220
253
|
setConnectionState("connecting");
|
|
221
254
|
setLoading(true);
|
|
222
255
|
setError(undefined);
|
|
256
|
+
setWarning(undefined);
|
|
223
257
|
|
|
224
258
|
const fn = async () => {
|
|
225
259
|
if (selected.runtime === "canonical") {
|
|
@@ -283,7 +317,7 @@ export const PeerProvider = ({ config, children }: PeerProviderProps) => {
|
|
|
283
317
|
const [
|
|
284
318
|
{ detectIncognito },
|
|
285
319
|
sodiumModule,
|
|
286
|
-
{ Peerbit },
|
|
320
|
+
{ Peerbit, getBootstrapPeerId, resolveBootstrapAddresses },
|
|
287
321
|
{ noise },
|
|
288
322
|
{ yamux },
|
|
289
323
|
{ webSockets },
|
|
@@ -402,6 +436,10 @@ export const PeerProvider = ({ config, children }: PeerProviderProps) => {
|
|
|
402
436
|
});
|
|
403
437
|
|
|
404
438
|
newPeer = created as unknown as PeerbitLike;
|
|
439
|
+
closePeer = () => {
|
|
440
|
+
keepAliveRef.current = false;
|
|
441
|
+
void (created as any)?.stop?.().catch(() => {});
|
|
442
|
+
};
|
|
405
443
|
|
|
406
444
|
(window as any).__peerInfo = {
|
|
407
445
|
peerHash: created?.identity?.publicKey?.hashcode?.(),
|
|
@@ -412,19 +450,28 @@ export const PeerProvider = ({ config, children }: PeerProviderProps) => {
|
|
|
412
450
|
);
|
|
413
451
|
|
|
414
452
|
const connectFn = async () => {
|
|
453
|
+
let bootstrapTargets: (Multiaddr | string)[] = [];
|
|
415
454
|
try {
|
|
416
455
|
const network = nodeOptions.network;
|
|
456
|
+
let bootstrapResult:
|
|
457
|
+
| void
|
|
458
|
+
| {
|
|
459
|
+
connectedPeerIds?: string[];
|
|
460
|
+
failures?: { peerId?: string; reason: string }[];
|
|
461
|
+
}
|
|
462
|
+
| undefined = undefined;
|
|
417
463
|
if (
|
|
418
464
|
typeof network !== "string" &&
|
|
419
465
|
(network as any)?.bootstrap !== undefined
|
|
420
466
|
) {
|
|
421
467
|
const list = (network as any).bootstrap as (Multiaddr | string)[];
|
|
468
|
+
bootstrapTargets = list;
|
|
422
469
|
if (list.length === 0) {
|
|
423
470
|
bootstrapLog("offline: skipping relay dialing");
|
|
424
471
|
} else {
|
|
425
472
|
if (typeof created.bootstrap === "function") {
|
|
426
473
|
bootstrapLog("bootstrapping explicit addresses", list);
|
|
427
|
-
await created.bootstrap(
|
|
474
|
+
bootstrapResult = await created.bootstrap(
|
|
428
475
|
list.map((addr) =>
|
|
429
476
|
typeof addr === "string" ? addr : addr.toString(),
|
|
430
477
|
),
|
|
@@ -442,13 +489,65 @@ export const PeerProvider = ({ config, children }: PeerProviderProps) => {
|
|
|
442
489
|
const localAddress =
|
|
443
490
|
"/ip4/127.0.0.1/tcp/8002/ws/p2p/" +
|
|
444
491
|
(await (await fetch("http://localhost:8082/peer/id")).text());
|
|
492
|
+
bootstrapTargets = [localAddress];
|
|
445
493
|
bootstrapLog("dialing local address", localAddress);
|
|
446
494
|
await created.dial(localAddress);
|
|
447
|
-
|
|
448
|
-
|
|
495
|
+
} else {
|
|
496
|
+
const resolvedBootstrapAddresses =
|
|
497
|
+
(await resolveBootstrapAddresses?.()) ?? [];
|
|
498
|
+
bootstrapTargets = resolvedBootstrapAddresses;
|
|
499
|
+
bootstrapResult =
|
|
500
|
+
await created.bootstrap?.(resolvedBootstrapAddresses);
|
|
501
|
+
}
|
|
502
|
+
if ((bootstrapResult?.failures?.length ?? 0) > 0) {
|
|
503
|
+
const failureSummaries = bootstrapResult!.failures!.map((failure) => {
|
|
504
|
+
const target = failure.peerId ?? "unknown bootstrap target";
|
|
505
|
+
return `${target}: ${failure.reason}`;
|
|
506
|
+
});
|
|
507
|
+
const message =
|
|
508
|
+
`Connected to ${bootstrapResult?.connectedPeerIds?.length ?? 0} bootstrap peer(s), ` +
|
|
509
|
+
`but failed to reach ${bootstrapResult?.failures?.length ?? 0} peer(s)`;
|
|
510
|
+
bootstrapLog("bootstrap partial warning", {
|
|
511
|
+
connectedPeerIds: bootstrapResult?.connectedPeerIds ?? [],
|
|
512
|
+
failures: failureSummaries,
|
|
513
|
+
});
|
|
514
|
+
console.warn(message, failureSummaries);
|
|
515
|
+
setWarning({
|
|
516
|
+
type: "bootstrap-partial",
|
|
517
|
+
message,
|
|
518
|
+
failures: failureSummaries,
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
setConnectionState("connected");
|
|
522
|
+
} catch (err: any) {
|
|
523
|
+
const bootstrapPeerIds = new Set(
|
|
524
|
+
bootstrapTargets
|
|
525
|
+
.map((address) => getBootstrapPeerId(address))
|
|
526
|
+
.filter((address): address is string => !!address),
|
|
527
|
+
);
|
|
528
|
+
if (unmounted) {
|
|
529
|
+
bootstrapLog("ignoring bootstrap failure after unmount", {
|
|
530
|
+
error: err?.message ?? String(err),
|
|
531
|
+
bootstrapPeerIds: [...bootstrapPeerIds],
|
|
532
|
+
});
|
|
533
|
+
return;
|
|
534
|
+
}
|
|
535
|
+
if (
|
|
536
|
+
hasBootstrapConnection(
|
|
537
|
+
created as unknown as PeerbitLike,
|
|
538
|
+
bootstrapPeerIds,
|
|
539
|
+
)
|
|
540
|
+
) {
|
|
541
|
+
bootstrapLog(
|
|
542
|
+
"ignoring bootstrap failure with active bootstrap connection",
|
|
543
|
+
{
|
|
544
|
+
error: err?.message ?? String(err),
|
|
545
|
+
bootstrapPeerIds: [...bootstrapPeerIds],
|
|
546
|
+
},
|
|
547
|
+
);
|
|
548
|
+
setConnectionState("connected");
|
|
549
|
+
return;
|
|
449
550
|
}
|
|
450
|
-
setConnectionState("connected");
|
|
451
|
-
} catch (err: any) {
|
|
452
551
|
console.error("Failed to bootstrap:", err);
|
|
453
552
|
setConnectionState("failed");
|
|
454
553
|
}
|