@peerbit/react 0.0.49 → 0.1.0-369b236

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.
@@ -1,19 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { noise } from "@chainsafe/libp2p-noise";
3
- import { yamux } from "@chainsafe/libp2p-yamux";
4
- import { keys } from "@libp2p/crypto";
5
- import { webSockets } from "@libp2p/websockets";
6
2
  import { Ed25519Keypair } from "@peerbit/crypto";
7
3
  import { logger as createLogger } from "@peerbit/logger";
8
- import { createClient, createHost } from "@peerbit/proxy-window";
9
4
  import { waitFor } from "@peerbit/time";
10
- import { detectIncognito } from "detectincognitojs";
11
- import sodium from "libsodium-wrappers";
12
- import { Peerbit } from "peerbit";
13
5
  import * as React from "react";
14
6
  import { v4 as uuid } from "uuid";
15
7
  import { FastMutex } from "./lockstorage.js";
16
- import { useMount } from "./useMount.js";
17
8
  import { cookiesWhereClearedJustNow, getClientId, getFreeKeypair, inIframe, } from "./utils.js";
18
9
  const log = createLogger("peerbit:react:usePeer");
19
10
  const singletonLog = log.newScope("singleton");
@@ -39,304 +30,274 @@ export const usePeer = () => React.useContext(PeerContext);
39
30
  const subscribeToUnload = (fn) => {
40
31
  window.addEventListener("pagehide", fn);
41
32
  window.addEventListener("beforeunload", fn);
33
+ return () => {
34
+ window.removeEventListener("pagehide", fn);
35
+ window.removeEventListener("beforeunload", fn);
36
+ };
42
37
  };
43
- export const PeerProvider = (options) => {
38
+ const resolveConfig = (input) => typeof input === "function" ? input({ inIframe: inIframe() }) : input;
39
+ export const PeerProvider = ({ config, children }) => {
40
+ const [runtime, setRuntime] = React.useState("node");
44
41
  const [peer, setPeer] = React.useState(undefined);
42
+ const [canonicalClient, setCanonicalClient] = React.useState(undefined);
45
43
  const [promise, setPromise] = React.useState(undefined);
46
- const [persisted, setPersisted] = React.useState(false);
44
+ const [persisted, setPersisted] = React.useState(undefined);
47
45
  const [loading, setLoading] = React.useState(true);
48
46
  const [connectionState, setConnectionState] = React.useState("disconnected");
49
- const [tabIndex, setTabIndex] = React.useState(-1);
50
- const [error, setError] = React.useState(undefined); // <-- error state
51
- // Decide which options to use based on whether we're in an iframe.
52
- // If options.top is defined, assume we have separate settings for iframe vs. host.
53
- const nodeOptions = options.top
54
- ? inIframe()
55
- ? options.iframe
56
- : { ...options, ...options.top } // we merge root and top options, TODO should this be made in a different way to prevent confusion about top props?
57
- : options;
58
- // If running as a proxy (iframe), expect a targetOrigin.
59
- const computedTargetOrigin = nodeOptions.type === "proxy"
60
- ? nodeOptions.targetOrigin
61
- : undefined;
47
+ const [tabIndex, setTabIndex] = React.useState(undefined);
48
+ const [error, setError] = React.useState(undefined);
62
49
  const memo = React.useMemo(() => {
63
- if (nodeOptions.type === "proxy") {
64
- return {
65
- type: "proxy",
66
- peer,
67
- promise,
68
- loading,
69
- status: connectionState,
70
- persisted,
71
- targetOrigin: computedTargetOrigin,
72
- error,
73
- };
74
- }
75
- else {
76
- return {
77
- type: "node",
78
- peer,
79
- promise,
80
- loading,
81
- status: connectionState,
82
- persisted,
83
- tabIndex,
84
- error,
85
- };
86
- }
50
+ return {
51
+ runtime,
52
+ peer,
53
+ promise,
54
+ loading,
55
+ status: connectionState,
56
+ persisted,
57
+ tabIndex,
58
+ error,
59
+ canonical: canonicalClient ? { client: canonicalClient } : undefined,
60
+ };
87
61
  }, [
88
- loading,
89
- promise,
62
+ canonicalClient,
90
63
  connectionState,
64
+ error,
65
+ loading,
91
66
  peer,
92
67
  persisted,
68
+ promise,
69
+ runtime,
93
70
  tabIndex,
94
- computedTargetOrigin,
95
- error,
96
71
  ]);
97
- useMount(() => {
72
+ React.useEffect(() => {
73
+ let unmounted = false;
74
+ let unloadUnsubscribe;
75
+ let stopKeepAlive;
76
+ let closePeer;
77
+ const selected = resolveConfig(config);
78
+ setRuntime(selected.runtime);
79
+ setConnectionState("connecting");
98
80
  setLoading(true);
81
+ setError(undefined);
99
82
  const fn = async () => {
83
+ if (selected.runtime === "canonical") {
84
+ const { connectServiceWorker, connectSharedWorker, connectWindow, PeerbitCanonicalClient, } = await import("@peerbit/canonical-client");
85
+ let canonical;
86
+ if (selected.transport.kind === "service-worker") {
87
+ canonical = await connectServiceWorker(selected.transport.options);
88
+ }
89
+ else if (selected.transport.kind === "window") {
90
+ canonical = await connectWindow(selected.transport.options ?? {});
91
+ }
92
+ else if (selected.transport.kind === "shared-worker") {
93
+ const workerSpec = selected.transport.worker;
94
+ const worker = typeof workerSpec === "function"
95
+ ? workerSpec()
96
+ : workerSpec instanceof SharedWorker
97
+ ? workerSpec
98
+ : new SharedWorker(workerSpec.url, {
99
+ name: workerSpec.name,
100
+ type: workerSpec.type,
101
+ });
102
+ canonical = await connectSharedWorker(worker);
103
+ }
104
+ else {
105
+ canonical = await selected.transport.connect();
106
+ }
107
+ setCanonicalClient(canonical);
108
+ stopKeepAlive =
109
+ selected.keepAlive === false
110
+ ? undefined
111
+ : canonical.startKeepAlive(selected.keepAlive);
112
+ const peer = await PeerbitCanonicalClient.create(canonical, selected.open);
113
+ closePeer = () => {
114
+ stopKeepAlive?.();
115
+ try {
116
+ peer.close();
117
+ }
118
+ catch { }
119
+ };
120
+ unloadUnsubscribe = subscribeToUnload(() => closePeer?.());
121
+ if (unmounted) {
122
+ closePeer();
123
+ return;
124
+ }
125
+ setPeer(peer);
126
+ setConnectionState("connected");
127
+ setLoading(false);
128
+ return;
129
+ }
130
+ const nodeOptions = selected;
131
+ const [{ detectIncognito }, sodiumModule, { Peerbit }, { noise }, { yamux }, { webSockets }, { keys },] = await Promise.all([
132
+ import("detectincognitojs"),
133
+ import("libsodium-wrappers"),
134
+ import("peerbit"),
135
+ import("@chainsafe/libp2p-noise"),
136
+ import("@chainsafe/libp2p-yamux"),
137
+ import("@libp2p/websockets"),
138
+ import("@libp2p/crypto"),
139
+ ]);
140
+ const sodium = sodiumModule.default ?? sodiumModule;
100
141
  await sodium.ready;
101
142
  let newPeer;
102
- // Track resolved persistence status during client creation
103
143
  let persistedResolved = false;
104
- // Controls how long we keep locks alive; flipped to false on close/hidden
105
144
  const keepAliveRef = { current: true };
106
- if (nodeOptions.type !== "proxy") {
107
- const releaseFirstLock = cookiesWhereClearedJustNow();
108
- const sessionId = getClientId("session");
109
- const mutex = new FastMutex({
110
- clientId: sessionId,
111
- timeout: 1e3,
112
- });
113
- if (nodeOptions.singleton) {
114
- singletonLog("acquiring lock");
115
- const localId = getClientId("local");
116
- try {
117
- const lockKey = localId + "-singleton";
118
- subscribeToUnload(function () {
119
- // Immediate release on page close
145
+ const releaseFirstLock = cookiesWhereClearedJustNow();
146
+ const sessionId = getClientId("session");
147
+ const mutex = new FastMutex({ clientId: sessionId, timeout: 1e3 });
148
+ if (nodeOptions.singleton) {
149
+ singletonLog("acquiring lock");
150
+ const localId = getClientId("local");
151
+ try {
152
+ const lockKey = localId + "-singleton";
153
+ const unsubscribeUnload = subscribeToUnload(() => {
154
+ keepAliveRef.current = false;
155
+ mutex.release(lockKey);
156
+ });
157
+ const onVisibility = () => {
158
+ if (document.visibilityState === "hidden") {
120
159
  keepAliveRef.current = false;
121
- mutex.release(lockKey);
122
- });
123
- // Also release when page is hidden to reduce flakiness between sequential tests
124
- const onVisibility = () => {
125
- if (document.visibilityState === "hidden") {
126
- keepAliveRef.current = false;
127
- // Mark expired and remove proactively
128
- try {
129
- mutex.release(lockKey);
130
- }
131
- catch { }
160
+ try {
161
+ mutex.release(lockKey);
132
162
  }
133
- };
134
- document.addEventListener("visibilitychange", onVisibility);
135
- if (isInStandaloneMode()) {
136
- // PWA issue fix (? TODO is this needed ?
137
- keepAliveRef.current = false;
138
- mutex.release(lockKey);
163
+ catch { }
139
164
  }
140
- await mutex.lock(lockKey, () => keepAliveRef.current, {
141
- replaceIfSameClient: true,
142
- });
143
- singletonLog("lock acquired");
144
- }
145
- catch (error) {
146
- console.error("Failed to lock singleton client", error);
147
- throw new ClientBusyError("Failed to lock single client");
148
- }
149
- }
150
- let nodeId;
151
- if (nodeOptions.keypair) {
152
- nodeId = nodeOptions.keypair;
153
- }
154
- else {
155
- keypairLog("acquiring lock");
156
- const kp = await getFreeKeypair("", mutex, () => keepAliveRef.current, {
157
- releaseFirstLock,
158
- releaseLockIfSameId: true,
159
- });
160
- keypairLog("lock acquired", { index: kp.index });
161
- subscribeToUnload(function () {
165
+ };
166
+ document.addEventListener("visibilitychange", onVisibility);
167
+ if (isInStandaloneMode()) {
162
168
  keepAliveRef.current = false;
163
- mutex.release(kp.path);
169
+ mutex.release(lockKey);
170
+ }
171
+ await mutex.lock(lockKey, () => keepAliveRef.current, {
172
+ replaceIfSameClient: true,
164
173
  });
165
- nodeId = kp.key;
166
- setTabIndex(kp.index);
174
+ singletonLog("lock acquired");
175
+ void unsubscribeUnload;
167
176
  }
168
- const peerId = nodeId.toPeerId();
169
- const privateKey = keys.privateKeyFromRaw(nodeId.privateKeyPublicKey);
170
- let directory = undefined;
171
- if (!nodeOptions.inMemory &&
172
- !(await detectIncognito()).isPrivate) {
173
- storageLog("requesting persist");
174
- const persisted = await navigator.storage.persist();
175
- setPersisted(persisted);
176
- persistedResolved = persisted;
177
- if (!persisted) {
178
- setPersisted(false);
179
- console.error("Request persistence but permission was not granted by browser.");
180
- }
181
- else {
182
- directory = `./repo/${peerId.toString()}/`;
183
- }
177
+ catch (error) {
178
+ console.error("Failed to lock singleton client", error);
179
+ throw new ClientBusyError("Failed to lock single client");
184
180
  }
185
- clientLog("create", { directory });
186
- newPeer = await Peerbit.create({
187
- libp2p: {
188
- addresses: {
189
- listen: [
190
- /* "/p2p-circuit" */
191
- ],
192
- },
193
- streamMuxers: [yamux()],
194
- connectionEncrypters: [noise()],
195
- privateKey,
196
- connectionManager: { maxConnections: 100 },
197
- connectionMonitor: { enabled: false },
198
- ...(nodeOptions.network === "local"
199
- ? {
200
- connectionGater: {
201
- denyDialMultiaddr: () => false,
202
- },
203
- transports: [
204
- webSockets({}) /* ,
205
- circuitRelayTransport(), */,
206
- ],
207
- }
208
- : {
209
- connectionGater: {
210
- denyDialMultiaddr: () => false, // TODO do right here, dont allow local dials except bootstrap
211
- },
212
- transports: [
213
- webSockets() /* ,
214
- circuitRelayTransport(), */,
215
- ],
216
- }) /*
217
- services: {
218
- pubsub: (c) =>
219
- new DirectSub(c, { canRelayMessage: true }),
220
- identify: identify(),
221
- }, */,
222
- },
223
- directory,
224
- indexer: nodeOptions.indexer,
181
+ }
182
+ let nodeId;
183
+ if (nodeOptions.keypair) {
184
+ nodeId = nodeOptions.keypair;
185
+ }
186
+ else {
187
+ keypairLog("acquiring lock");
188
+ const kp = await getFreeKeypair("", mutex, () => keepAliveRef.current, {
189
+ releaseFirstLock,
190
+ releaseLockIfSameId: true,
225
191
  });
226
- clientLog("created", {
227
- directory,
228
- peerHash: newPeer?.identity.publicKey.hashcode(),
229
- network: nodeOptions.network === "local" ? "local" : "remote",
192
+ keypairLog("lock acquired", { index: kp.index });
193
+ subscribeToUnload(() => {
194
+ keepAliveRef.current = false;
195
+ mutex.release(kp.path);
230
196
  });
231
- window.__peerInfo = {
232
- peerHash: newPeer?.identity.publicKey.hashcode(),
233
- persisted: persistedResolved,
234
- };
235
- window.dispatchEvent(new CustomEvent("peer:ready", {
236
- detail: window.__peerInfo,
237
- }));
238
- setConnectionState("connecting");
239
- const connectFn = async () => {
240
- try {
241
- const network = nodeOptions.network;
242
- // 1) Explicit bootstrap addresses take precedence
243
- if (typeof network !== "string" &&
244
- network?.bootstrap !== undefined) {
245
- const list = network.bootstrap;
246
- if (list.length === 0) {
247
- // Explicit offline mode: skip dialing and mark as connected (no relays)
248
- bootstrapLog("offline: skipping relay dialing");
249
- }
250
- else {
251
- for (const addr of list) {
252
- await newPeer.dial(addr);
253
- }
254
- }
197
+ nodeId = kp.key;
198
+ setTabIndex(kp.index);
199
+ }
200
+ const peerId = nodeId.toPeerId();
201
+ const privateKey = keys.privateKeyFromRaw(nodeId.privateKeyPublicKey);
202
+ let directory;
203
+ if (!nodeOptions.inMemory && !(await detectIncognito()).isPrivate) {
204
+ storageLog("requesting persist");
205
+ const persistedValue = await navigator.storage.persist();
206
+ setPersisted(persistedValue);
207
+ persistedResolved = persistedValue;
208
+ if (!persistedValue) {
209
+ console.error("Request persistence but permission was not granted by browser.");
210
+ }
211
+ else {
212
+ directory = `./repo/${peerId.toString()}/`;
213
+ }
214
+ }
215
+ clientLog("create", { directory });
216
+ const created = await Peerbit.create({
217
+ libp2p: {
218
+ privateKey,
219
+ addresses: { listen: [] },
220
+ streamMuxers: [yamux()],
221
+ connectionEncrypters: [noise()],
222
+ connectionManager: { maxConnections: 100 },
223
+ connectionMonitor: { enabled: false },
224
+ ...(nodeOptions.network === "local"
225
+ ? {
226
+ connectionGater: { denyDialMultiaddr: () => false },
227
+ transports: [webSockets({})],
255
228
  }
256
- // 2) Local development: dial local relay service
257
- else if (network === "local" ||
258
- (typeof network !== "string" &&
259
- network?.type === "local")) {
260
- const localAddress = "/ip4/127.0.0.1/tcp/8002/ws/p2p/" +
261
- (await (await fetch("http://localhost:8082/peer/id")).text());
262
- bootstrapLog("dialing local address", localAddress);
263
- await newPeer.dial(localAddress);
229
+ : {
230
+ connectionGater: { denyDialMultiaddr: () => false },
231
+ transports: [webSockets()],
232
+ }),
233
+ },
234
+ directory,
235
+ indexer: nodeOptions.indexer,
236
+ });
237
+ newPeer = created;
238
+ window.__peerInfo = {
239
+ peerHash: created?.identity?.publicKey?.hashcode?.(),
240
+ persisted: persistedResolved,
241
+ };
242
+ window.dispatchEvent(new CustomEvent("peer:ready", { detail: window.__peerInfo }));
243
+ const connectFn = async () => {
244
+ try {
245
+ const network = nodeOptions.network;
246
+ if (typeof network !== "string" &&
247
+ network?.bootstrap !== undefined) {
248
+ const list = network.bootstrap;
249
+ if (list.length === 0) {
250
+ bootstrapLog("offline: skipping relay dialing");
264
251
  }
265
- // 3) Remote default: use bootstrap service (no explicit bootstrap provided)
266
252
  else {
267
- await newPeer.bootstrap?.();
253
+ for (const addr of list) {
254
+ await created.dial(addr);
255
+ }
268
256
  }
269
- setConnectionState("connected");
270
- }
271
- catch (err) {
272
- console.error("Failed to bootstrap:", err);
273
- setConnectionState("failed");
274
257
  }
275
- if (nodeOptions.host) {
276
- newPeer = await createHost(newPeer);
258
+ else if (network === "local" ||
259
+ (typeof network !== "string" && network?.type === "local")) {
260
+ const localAddress = "/ip4/127.0.0.1/tcp/8002/ws/p2p/" +
261
+ (await (await fetch("http://localhost:8082/peer/id")).text());
262
+ bootstrapLog("dialing local address", localAddress);
263
+ await created.dial(localAddress);
277
264
  }
278
- };
279
- const perfEnabled = new URLSearchParams(window.location.search).get("perf");
280
- const t0 = performance.now();
281
- const marks = {};
282
- const perfMark = (label) => {
283
- marks[label] = performance.now() - t0;
284
- };
285
- bootstrapLog("start...");
286
- const promise = connectFn().then(() => {
287
- perfMark("dialComplete");
288
- });
289
- promise.then(() => {
290
- bootstrapLog("done");
291
- try {
292
- if (perfEnabled) {
293
- const payload = { ...marks };
294
- console.info("[Perf] peer bootstrap", payload);
295
- window.dispatchEvent(new CustomEvent("perf:peer", {
296
- detail: payload,
297
- }));
298
- }
265
+ else {
266
+ await created.bootstrap?.();
299
267
  }
300
- catch { }
301
- });
302
- if (nodeOptions.waitForConnnected === true) {
303
- await promise;
268
+ setConnectionState("connected");
304
269
  }
305
- else if (nodeOptions.waitForConnnected === "in-flight") {
306
- // wait for dialQueue to not be empty or connections to contains the peerId
307
- // or done
308
- let isDone = false;
309
- promise.finally(() => {
310
- isDone = true;
311
- });
312
- await waitFor(() => {
313
- if (isDone) {
314
- return true;
315
- }
316
- const libp2p = newPeer;
317
- if (libp2p.libp2p.getDialQueue().length > 0) {
318
- return true;
319
- }
320
- if (libp2p.libp2p.getConnections().length > 0) {
321
- return true;
322
- }
323
- return false;
324
- });
270
+ catch (err) {
271
+ console.error("Failed to bootstrap:", err);
272
+ setConnectionState("failed");
325
273
  }
274
+ };
275
+ const promise = connectFn();
276
+ if (nodeOptions.waitForConnected === true) {
277
+ await promise;
326
278
  }
327
- else {
328
- // When in proxy mode (iframe), use the provided targetOrigin.
329
- newPeer = await createClient(nodeOptions.targetOrigin);
279
+ else if (nodeOptions.waitForConnected === "in-flight") {
280
+ let isDone = false;
281
+ promise.finally(() => {
282
+ isDone = true;
283
+ });
284
+ await waitFor(() => {
285
+ if (isDone)
286
+ return true;
287
+ const libp2p = created;
288
+ if (libp2p.libp2p?.getDialQueue?.()?.length > 0)
289
+ return true;
290
+ if (libp2p.libp2p?.getConnections?.()?.length > 0)
291
+ return true;
292
+ return false;
293
+ });
294
+ }
295
+ if (unmounted) {
330
296
  try {
331
- window.__peerInfo = {
332
- peerHash: newPeer?.identity.publicKey.hashcode(),
333
- persisted: false,
334
- };
335
- window.dispatchEvent(new CustomEvent("peer:ready", {
336
- detail: window.__peerInfo,
337
- }));
297
+ await created?.stop?.();
338
298
  }
339
299
  catch { }
300
+ return;
340
301
  }
341
302
  setPeer(newPeer);
342
303
  setLoading(false);
@@ -347,11 +308,18 @@ export const PeerProvider = (options) => {
347
308
  }
348
309
  catch (error) {
349
310
  setError(error);
311
+ setConnectionState("failed");
350
312
  setLoading(false);
351
313
  }
352
314
  };
353
- setPromise(fnWithErrorHandling());
354
- });
355
- return (_jsx(PeerContext.Provider, { value: memo, children: options.children }));
315
+ const p = fnWithErrorHandling();
316
+ setPromise(p);
317
+ return () => {
318
+ unmounted = true;
319
+ unloadUnsubscribe?.();
320
+ closePeer?.();
321
+ };
322
+ }, [config]);
323
+ return _jsx(PeerContext.Provider, { value: memo, children: children });
356
324
  };
357
325
  //# sourceMappingURL=usePeer.js.map
@@ -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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"}