@gethashd/bytecave-browser 1.0.53 → 1.0.55

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.
@@ -6057,6 +6057,7 @@ var p2pProtocolClient = new P2PProtocolClient();
6057
6057
  import { createLibp2p } from "libp2p";
6058
6058
  import { webRTC } from "@libp2p/webrtc";
6059
6059
  import { webSockets } from "@libp2p/websockets";
6060
+ import { webTransport } from "@libp2p/webtransport";
6060
6061
  import { noise } from "@chainsafe/libp2p-noise";
6061
6062
  import { yamux } from "@chainsafe/libp2p-yamux";
6062
6063
  import { floodsub } from "@libp2p/floodsub";
@@ -6428,6 +6429,7 @@ var ByteCaveClient = class {
6428
6429
  transports: [
6429
6430
  webRTC(),
6430
6431
  webSockets(),
6432
+ webTransport(),
6431
6433
  circuitRelayTransport()
6432
6434
  ],
6433
6435
  connectionEncrypters: [noise()],
@@ -6616,6 +6618,9 @@ var ByteCaveClient = class {
6616
6618
  connectedPeers: connectedPeers.length,
6617
6619
  discoveredPeers: this.knownPeers.size
6618
6620
  });
6621
+ setTimeout(() => {
6622
+ this.dialCachedPeers();
6623
+ }, 2e3);
6619
6624
  } catch (error) {
6620
6625
  this.setConnectionState("error");
6621
6626
  console.error("Failed to start ByteCave client:", error);
@@ -7214,6 +7219,25 @@ Nonce: ${nonce}`;
7214
7219
  console.warn("[ByteCave] Failed to load cached peers:", error);
7215
7220
  }
7216
7221
  }
7222
+ /**
7223
+ * Dial all cached peers (used on startup when relay might be down)
7224
+ */
7225
+ async dialCachedPeers() {
7226
+ console.log("[ByteCave] Dialing", this.knownPeers.size, "cached peers...");
7227
+ for (const [peerId, peerInfo] of this.knownPeers) {
7228
+ if (peerInfo.connected) {
7229
+ continue;
7230
+ }
7231
+ const relayAddrs = peerInfo.relayAddrs;
7232
+ const multiaddrs = peerInfo.multiaddrs;
7233
+ if (relayAddrs || multiaddrs) {
7234
+ this.dialPeer(peerId, relayAddrs, multiaddrs).catch((err) => {
7235
+ console.warn("[ByteCave] Failed to dial cached peer:", peerId.slice(0, 12), err.message);
7236
+ });
7237
+ await new Promise((resolve) => setTimeout(resolve, 500));
7238
+ }
7239
+ }
7240
+ }
7217
7241
  /**
7218
7242
  * Save known peers to localStorage
7219
7243
  */
package/dist/client.d.ts CHANGED
@@ -106,6 +106,10 @@ export declare class ByteCaveClient {
106
106
  * Load cached peers from localStorage
107
107
  */
108
108
  private loadCachedPeers;
109
+ /**
110
+ * Dial all cached peers (used on startup when relay might be down)
111
+ */
112
+ private dialCachedPeers;
109
113
  /**
110
114
  * Save known peers to localStorage
111
115
  */
package/dist/index.cjs CHANGED
@@ -61,6 +61,7 @@ module.exports = __toCommonJS(src_exports);
61
61
  var import_libp2p = require("libp2p");
62
62
  var import_webrtc = require("@libp2p/webrtc");
63
63
  var import_websockets = require("@libp2p/websockets");
64
+ var import_webtransport = require("@libp2p/webtransport");
64
65
  var import_libp2p_noise = require("@chainsafe/libp2p-noise");
65
66
  var import_libp2p_yamux = require("@chainsafe/libp2p-yamux");
66
67
  var import_floodsub = require("@libp2p/floodsub");
@@ -6481,6 +6482,7 @@ var ByteCaveClient = class {
6481
6482
  transports: [
6482
6483
  (0, import_webrtc.webRTC)(),
6483
6484
  (0, import_websockets.webSockets)(),
6485
+ (0, import_webtransport.webTransport)(),
6484
6486
  (0, import_circuit_relay_v2.circuitRelayTransport)()
6485
6487
  ],
6486
6488
  connectionEncrypters: [(0, import_libp2p_noise.noise)()],
@@ -6669,6 +6671,9 @@ var ByteCaveClient = class {
6669
6671
  connectedPeers: connectedPeers.length,
6670
6672
  discoveredPeers: this.knownPeers.size
6671
6673
  });
6674
+ setTimeout(() => {
6675
+ this.dialCachedPeers();
6676
+ }, 2e3);
6672
6677
  } catch (error) {
6673
6678
  this.setConnectionState("error");
6674
6679
  console.error("Failed to start ByteCave client:", error);
@@ -7267,6 +7272,25 @@ Nonce: ${nonce}`;
7267
7272
  console.warn("[ByteCave] Failed to load cached peers:", error);
7268
7273
  }
7269
7274
  }
7275
+ /**
7276
+ * Dial all cached peers (used on startup when relay might be down)
7277
+ */
7278
+ async dialCachedPeers() {
7279
+ console.log("[ByteCave] Dialing", this.knownPeers.size, "cached peers...");
7280
+ for (const [peerId, peerInfo] of this.knownPeers) {
7281
+ if (peerInfo.connected) {
7282
+ continue;
7283
+ }
7284
+ const relayAddrs = peerInfo.relayAddrs;
7285
+ const multiaddrs = peerInfo.multiaddrs;
7286
+ if (relayAddrs || multiaddrs) {
7287
+ this.dialPeer(peerId, relayAddrs, multiaddrs).catch((err) => {
7288
+ console.warn("[ByteCave] Failed to dial cached peer:", peerId.slice(0, 12), err.message);
7289
+ });
7290
+ await new Promise((resolve) => setTimeout(resolve, 500));
7291
+ }
7292
+ }
7293
+ }
7270
7294
  /**
7271
7295
  * Save known peers to localStorage
7272
7296
  */
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  useHashdImage,
14
14
  useHashdMedia,
15
15
  useHashdUrl
16
- } from "./chunk-WGSX425G.js";
16
+ } from "./chunk-QQCX3OFK.js";
17
17
  import {
18
18
  clearHashdCache,
19
19
  createHashdUrl,
@@ -396,6 +396,7 @@ var import_react3 = __toESM(require("react"), 1);
396
396
  var import_libp2p = require("libp2p");
397
397
  var import_webrtc = require("@libp2p/webrtc");
398
398
  var import_websockets = require("@libp2p/websockets");
399
+ var import_webtransport = require("@libp2p/webtransport");
399
400
  var import_libp2p_noise = require("@chainsafe/libp2p-noise");
400
401
  var import_libp2p_yamux = require("@chainsafe/libp2p-yamux");
401
402
  var import_floodsub = require("@libp2p/floodsub");
@@ -8,7 +8,7 @@ import {
8
8
  useHashdImage,
9
9
  useHashdMedia,
10
10
  useHashdUrl
11
- } from "../chunk-WGSX425G.js";
11
+ } from "../chunk-QQCX3OFK.js";
12
12
  import "../chunk-EEZWRIUI.js";
13
13
  export {
14
14
  HashdAudio,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gethashd/bytecave-browser",
3
- "version": "1.0.53",
3
+ "version": "1.0.55",
4
4
  "description": "ByteCave browser client for WebRTC P2P connections to storage nodes",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",
package/src/client.ts CHANGED
@@ -7,6 +7,7 @@
7
7
  import { createLibp2p, Libp2p } from 'libp2p';
8
8
  import { webRTC } from '@libp2p/webrtc';
9
9
  import { webSockets } from '@libp2p/websockets';
10
+ import { webTransport } from '@libp2p/webtransport';
10
11
  import { noise } from '@chainsafe/libp2p-noise';
11
12
  import { yamux } from '@chainsafe/libp2p-yamux';
12
13
  import { floodsub } from '@libp2p/floodsub';
@@ -101,11 +102,12 @@ export class ByteCaveClient {
101
102
 
102
103
  console.log('[ByteCave] Bootstrap peers:', bootstrapPeers);
103
104
 
104
- // Create libp2p node with WebRTC transport
105
+ // Create libp2p node with WebRTC and WebTransport transports
105
106
  this.node = await createLibp2p({
106
107
  transports: [
107
108
  webRTC() as any,
108
109
  webSockets() as any,
110
+ webTransport() as any,
109
111
  circuitRelayTransport() as any
110
112
  ],
111
113
  connectionEncrypters: [noise()],
@@ -334,6 +336,11 @@ export class ByteCaveClient {
334
336
  discoveredPeers: this.knownPeers.size
335
337
  });
336
338
 
339
+ // Dial cached peers after startup (important when relay is down)
340
+ setTimeout(() => {
341
+ this.dialCachedPeers();
342
+ }, 2000); // Wait 2s for node to fully initialize
343
+
337
344
  } catch (error) {
338
345
  this.setConnectionState('error');
339
346
  console.error('Failed to start ByteCave client:', error);
@@ -1080,6 +1087,32 @@ Nonce: ${nonce}`;
1080
1087
  }
1081
1088
  }
1082
1089
 
1090
+ /**
1091
+ * Dial all cached peers (used on startup when relay might be down)
1092
+ */
1093
+ private async dialCachedPeers(): Promise<void> {
1094
+ console.log('[ByteCave] Dialing', this.knownPeers.size, 'cached peers...');
1095
+
1096
+ for (const [peerId, peerInfo] of this.knownPeers) {
1097
+ // Skip if already connected
1098
+ if (peerInfo.connected) {
1099
+ continue;
1100
+ }
1101
+
1102
+ const relayAddrs = (peerInfo as any).relayAddrs;
1103
+ const multiaddrs = peerInfo.multiaddrs;
1104
+
1105
+ if (relayAddrs || multiaddrs) {
1106
+ this.dialPeer(peerId, relayAddrs, multiaddrs).catch(err => {
1107
+ console.warn('[ByteCave] Failed to dial cached peer:', peerId.slice(0, 12), err.message);
1108
+ });
1109
+
1110
+ // Stagger dials to avoid overwhelming the network
1111
+ await new Promise(resolve => setTimeout(resolve, 500));
1112
+ }
1113
+ }
1114
+ }
1115
+
1083
1116
  /**
1084
1117
  * Save known peers to localStorage
1085
1118
  */