@gethashd/bytecave-browser 1.0.52 → 1.0.53

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.
@@ -7146,8 +7146,57 @@ Nonce: ${nonce}`;
7146
7146
  };
7147
7147
  this.knownPeers.set(announcement.peerId, peerInfo);
7148
7148
  this.saveCachedPeers();
7149
+ if (this.node && !peerInfo.connected) {
7150
+ this.dialPeer(announcement.peerId, peerInfo.relayAddrs, peerInfo.multiaddrs).catch((err) => {
7151
+ console.warn("[ByteCave] Failed to dial announced peer:", err.message);
7152
+ });
7153
+ }
7149
7154
  this.emit("peerAnnounce", peerInfo);
7150
7155
  }
7156
+ /**
7157
+ * Attempt to dial a peer using relay or WebTransport addresses
7158
+ */
7159
+ async dialPeer(peerId, relayAddrs, multiaddrs) {
7160
+ if (!this.node) return;
7161
+ const connections = this.node.getConnections().filter((c) => c.remotePeer.toString() === peerId);
7162
+ if (connections.length > 0) {
7163
+ console.log("[ByteCave] Already connected to peer:", peerId.slice(0, 12));
7164
+ return;
7165
+ }
7166
+ console.log("[ByteCave] Attempting to dial peer:", peerId.slice(0, 12));
7167
+ if (relayAddrs && relayAddrs.length > 0) {
7168
+ console.log("[ByteCave] Trying relay address:", relayAddrs[0].slice(0, 60));
7169
+ try {
7170
+ const ma = multiaddr(relayAddrs[0]);
7171
+ await this.node.dial(ma);
7172
+ console.log("[ByteCave] \u2713 Connected via relay");
7173
+ const peer = this.knownPeers.get(peerId);
7174
+ if (peer) {
7175
+ peer.connected = true;
7176
+ }
7177
+ return;
7178
+ } catch (error) {
7179
+ console.warn("[ByteCave] Relay dial failed:", error.message);
7180
+ }
7181
+ }
7182
+ if (multiaddrs && multiaddrs.length > 0) {
7183
+ const wtAddr = multiaddrs.find((addr) => addr.includes("/webtransport"));
7184
+ if (wtAddr) {
7185
+ console.log("[ByteCave] Trying WebTransport address:", wtAddr.slice(0, 60));
7186
+ try {
7187
+ const ma = multiaddr(wtAddr);
7188
+ await this.node.dial(ma);
7189
+ console.log("[ByteCave] \u2713 Connected via WebTransport");
7190
+ const peer = this.knownPeers.get(peerId);
7191
+ if (peer) {
7192
+ peer.connected = true;
7193
+ }
7194
+ } catch (error) {
7195
+ console.warn("[ByteCave] WebTransport dial failed:", error.message);
7196
+ }
7197
+ }
7198
+ }
7199
+ }
7151
7200
  /**
7152
7201
  * Load cached peers from localStorage
7153
7202
  */
package/dist/client.d.ts CHANGED
@@ -98,6 +98,10 @@ export declare class ByteCaveClient {
98
98
  private setupEventListeners;
99
99
  private setupPubsub;
100
100
  private handlePeerAnnouncement;
101
+ /**
102
+ * Attempt to dial a peer using relay or WebTransport addresses
103
+ */
104
+ private dialPeer;
101
105
  /**
102
106
  * Load cached peers from localStorage
103
107
  */
package/dist/index.cjs CHANGED
@@ -7199,8 +7199,57 @@ Nonce: ${nonce}`;
7199
7199
  };
7200
7200
  this.knownPeers.set(announcement.peerId, peerInfo);
7201
7201
  this.saveCachedPeers();
7202
+ if (this.node && !peerInfo.connected) {
7203
+ this.dialPeer(announcement.peerId, peerInfo.relayAddrs, peerInfo.multiaddrs).catch((err) => {
7204
+ console.warn("[ByteCave] Failed to dial announced peer:", err.message);
7205
+ });
7206
+ }
7202
7207
  this.emit("peerAnnounce", peerInfo);
7203
7208
  }
7209
+ /**
7210
+ * Attempt to dial a peer using relay or WebTransport addresses
7211
+ */
7212
+ async dialPeer(peerId, relayAddrs, multiaddrs) {
7213
+ if (!this.node) return;
7214
+ const connections = this.node.getConnections().filter((c) => c.remotePeer.toString() === peerId);
7215
+ if (connections.length > 0) {
7216
+ console.log("[ByteCave] Already connected to peer:", peerId.slice(0, 12));
7217
+ return;
7218
+ }
7219
+ console.log("[ByteCave] Attempting to dial peer:", peerId.slice(0, 12));
7220
+ if (relayAddrs && relayAddrs.length > 0) {
7221
+ console.log("[ByteCave] Trying relay address:", relayAddrs[0].slice(0, 60));
7222
+ try {
7223
+ const ma = (0, import_multiaddr.multiaddr)(relayAddrs[0]);
7224
+ await this.node.dial(ma);
7225
+ console.log("[ByteCave] \u2713 Connected via relay");
7226
+ const peer = this.knownPeers.get(peerId);
7227
+ if (peer) {
7228
+ peer.connected = true;
7229
+ }
7230
+ return;
7231
+ } catch (error) {
7232
+ console.warn("[ByteCave] Relay dial failed:", error.message);
7233
+ }
7234
+ }
7235
+ if (multiaddrs && multiaddrs.length > 0) {
7236
+ const wtAddr = multiaddrs.find((addr) => addr.includes("/webtransport"));
7237
+ if (wtAddr) {
7238
+ console.log("[ByteCave] Trying WebTransport address:", wtAddr.slice(0, 60));
7239
+ try {
7240
+ const ma = (0, import_multiaddr.multiaddr)(wtAddr);
7241
+ await this.node.dial(ma);
7242
+ console.log("[ByteCave] \u2713 Connected via WebTransport");
7243
+ const peer = this.knownPeers.get(peerId);
7244
+ if (peer) {
7245
+ peer.connected = true;
7246
+ }
7247
+ } catch (error) {
7248
+ console.warn("[ByteCave] WebTransport dial failed:", error.message);
7249
+ }
7250
+ }
7251
+ }
7252
+ }
7204
7253
  /**
7205
7254
  * Load cached peers from localStorage
7206
7255
  */
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  useHashdImage,
14
14
  useHashdMedia,
15
15
  useHashdUrl
16
- } from "./chunk-XPZKBTJA.js";
16
+ } from "./chunk-WGSX425G.js";
17
17
  import {
18
18
  clearHashdCache,
19
19
  createHashdUrl,
@@ -8,7 +8,7 @@ import {
8
8
  useHashdImage,
9
9
  useHashdMedia,
10
10
  useHashdUrl
11
- } from "../chunk-XPZKBTJA.js";
11
+ } from "../chunk-WGSX425G.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.52",
3
+ "version": "1.0.53",
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
@@ -995,8 +995,71 @@ Nonce: ${nonce}`;
995
995
  this.knownPeers.set(announcement.peerId, peerInfo);
996
996
  this.saveCachedPeers();
997
997
 
998
+ // Attempt to dial the peer if not already connected
999
+ if (this.node && !peerInfo.connected) {
1000
+ this.dialPeer(announcement.peerId, peerInfo.relayAddrs, peerInfo.multiaddrs).catch(err => {
1001
+ console.warn('[ByteCave] Failed to dial announced peer:', err.message);
1002
+ });
1003
+ }
1004
+
998
1005
  this.emit('peerAnnounce', peerInfo);
999
1006
  }
1007
+
1008
+ /**
1009
+ * Attempt to dial a peer using relay or WebTransport addresses
1010
+ */
1011
+ private async dialPeer(peerId: string, relayAddrs?: string[], multiaddrs?: string[]): Promise<void> {
1012
+ if (!this.node) return;
1013
+
1014
+ // Check if already connected
1015
+ const connections = this.node.getConnections().filter(c => c.remotePeer.toString() === peerId);
1016
+ if (connections.length > 0) {
1017
+ console.log('[ByteCave] Already connected to peer:', peerId.slice(0, 12));
1018
+ return;
1019
+ }
1020
+
1021
+ console.log('[ByteCave] Attempting to dial peer:', peerId.slice(0, 12));
1022
+
1023
+ // Try relay first
1024
+ if (relayAddrs && relayAddrs.length > 0) {
1025
+ console.log('[ByteCave] Trying relay address:', relayAddrs[0].slice(0, 60));
1026
+ try {
1027
+ const ma = multiaddr(relayAddrs[0]);
1028
+ await this.node.dial(ma as any);
1029
+ console.log('[ByteCave] ✓ Connected via relay');
1030
+
1031
+ // Update connected status
1032
+ const peer = this.knownPeers.get(peerId);
1033
+ if (peer) {
1034
+ peer.connected = true;
1035
+ }
1036
+ return;
1037
+ } catch (error: any) {
1038
+ console.warn('[ByteCave] Relay dial failed:', error.message);
1039
+ }
1040
+ }
1041
+
1042
+ // Fallback to WebTransport
1043
+ if (multiaddrs && multiaddrs.length > 0) {
1044
+ const wtAddr = multiaddrs.find((addr: string) => addr.includes('/webtransport'));
1045
+ if (wtAddr) {
1046
+ console.log('[ByteCave] Trying WebTransport address:', wtAddr.slice(0, 60));
1047
+ try {
1048
+ const ma = multiaddr(wtAddr);
1049
+ await this.node.dial(ma as any);
1050
+ console.log('[ByteCave] ✓ Connected via WebTransport');
1051
+
1052
+ // Update connected status
1053
+ const peer = this.knownPeers.get(peerId);
1054
+ if (peer) {
1055
+ peer.connected = true;
1056
+ }
1057
+ } catch (error: any) {
1058
+ console.warn('[ByteCave] WebTransport dial failed:', error.message);
1059
+ }
1060
+ }
1061
+ }
1062
+ }
1000
1063
 
1001
1064
 
1002
1065
  /**