@gethashd/bytecave-browser 1.0.51 → 1.0.52

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.
@@ -6998,14 +6998,48 @@ Nonce: ${nonce}`;
6998
6998
  try {
6999
6999
  const peerInfo = this.knownPeers.get(peerId);
7000
7000
  const relayAddrs = peerInfo?.relayAddrs;
7001
- if (relayAddrs && relayAddrs.length > 0 && this.node) {
7002
- console.log("[ByteCave] Dialing peer through relay:", peerId.slice(0, 12), relayAddrs[0]);
7003
- try {
7004
- const ma = multiaddr(relayAddrs[0]);
7005
- await this.node.dial(ma);
7006
- console.log("[ByteCave] Successfully dialed peer through relay");
7007
- } catch (dialError) {
7008
- console.warn("[ByteCave] Failed to dial through relay:", dialError);
7001
+ const multiaddrs = peerInfo?.multiaddrs;
7002
+ if (this.node) {
7003
+ const connections = this.node.getConnections().filter((c) => c.remotePeer.toString() === peerId);
7004
+ if (connections.length === 0) {
7005
+ console.log("[ByteCave] No existing connection to peer, attempting to dial");
7006
+ if (relayAddrs && relayAddrs.length > 0) {
7007
+ console.log("[ByteCave] Trying relay address:", relayAddrs[0].slice(0, 60));
7008
+ try {
7009
+ const ma = multiaddr(relayAddrs[0]);
7010
+ await this.node.dial(ma);
7011
+ console.log("[ByteCave] \u2713 Connected via relay");
7012
+ } catch (dialError) {
7013
+ console.warn("[ByteCave] Relay dial failed:", dialError.message);
7014
+ if (multiaddrs && multiaddrs.length > 0) {
7015
+ const wtAddr = multiaddrs.find((addr) => addr.includes("/webtransport"));
7016
+ if (wtAddr) {
7017
+ console.log("[ByteCave] Trying WebTransport address:", wtAddr.slice(0, 60));
7018
+ try {
7019
+ const ma = multiaddr(wtAddr);
7020
+ await this.node.dial(ma);
7021
+ console.log("[ByteCave] \u2713 Connected via WebTransport");
7022
+ } catch (wtError) {
7023
+ console.warn("[ByteCave] WebTransport dial failed:", wtError.message);
7024
+ }
7025
+ }
7026
+ }
7027
+ }
7028
+ } else if (multiaddrs && multiaddrs.length > 0) {
7029
+ const wtAddr = multiaddrs.find((addr) => addr.includes("/webtransport"));
7030
+ if (wtAddr) {
7031
+ console.log("[ByteCave] Trying WebTransport address (no relay):", wtAddr.slice(0, 60));
7032
+ try {
7033
+ const ma = multiaddr(wtAddr);
7034
+ await this.node.dial(ma);
7035
+ console.log("[ByteCave] \u2713 Connected via WebTransport");
7036
+ } catch (wtError) {
7037
+ console.warn("[ByteCave] WebTransport dial failed:", wtError.message);
7038
+ }
7039
+ }
7040
+ }
7041
+ } else {
7042
+ console.log("[ByteCave] Already connected to peer via", connections[0].remoteAddr.toString().slice(0, 60));
7009
7043
  }
7010
7044
  }
7011
7045
  const health = await p2pProtocolClient.getHealthFromPeer(peerId);
package/dist/index.cjs CHANGED
@@ -7051,14 +7051,48 @@ Nonce: ${nonce}`;
7051
7051
  try {
7052
7052
  const peerInfo = this.knownPeers.get(peerId);
7053
7053
  const relayAddrs = peerInfo?.relayAddrs;
7054
- if (relayAddrs && relayAddrs.length > 0 && this.node) {
7055
- console.log("[ByteCave] Dialing peer through relay:", peerId.slice(0, 12), relayAddrs[0]);
7056
- try {
7057
- const ma = (0, import_multiaddr.multiaddr)(relayAddrs[0]);
7058
- await this.node.dial(ma);
7059
- console.log("[ByteCave] Successfully dialed peer through relay");
7060
- } catch (dialError) {
7061
- console.warn("[ByteCave] Failed to dial through relay:", dialError);
7054
+ const multiaddrs = peerInfo?.multiaddrs;
7055
+ if (this.node) {
7056
+ const connections = this.node.getConnections().filter((c) => c.remotePeer.toString() === peerId);
7057
+ if (connections.length === 0) {
7058
+ console.log("[ByteCave] No existing connection to peer, attempting to dial");
7059
+ if (relayAddrs && relayAddrs.length > 0) {
7060
+ console.log("[ByteCave] Trying relay address:", relayAddrs[0].slice(0, 60));
7061
+ try {
7062
+ const ma = (0, import_multiaddr.multiaddr)(relayAddrs[0]);
7063
+ await this.node.dial(ma);
7064
+ console.log("[ByteCave] \u2713 Connected via relay");
7065
+ } catch (dialError) {
7066
+ console.warn("[ByteCave] Relay dial failed:", dialError.message);
7067
+ if (multiaddrs && multiaddrs.length > 0) {
7068
+ const wtAddr = multiaddrs.find((addr) => addr.includes("/webtransport"));
7069
+ if (wtAddr) {
7070
+ console.log("[ByteCave] Trying WebTransport address:", wtAddr.slice(0, 60));
7071
+ try {
7072
+ const ma = (0, import_multiaddr.multiaddr)(wtAddr);
7073
+ await this.node.dial(ma);
7074
+ console.log("[ByteCave] \u2713 Connected via WebTransport");
7075
+ } catch (wtError) {
7076
+ console.warn("[ByteCave] WebTransport dial failed:", wtError.message);
7077
+ }
7078
+ }
7079
+ }
7080
+ }
7081
+ } else if (multiaddrs && multiaddrs.length > 0) {
7082
+ const wtAddr = multiaddrs.find((addr) => addr.includes("/webtransport"));
7083
+ if (wtAddr) {
7084
+ console.log("[ByteCave] Trying WebTransport address (no relay):", wtAddr.slice(0, 60));
7085
+ try {
7086
+ const ma = (0, import_multiaddr.multiaddr)(wtAddr);
7087
+ await this.node.dial(ma);
7088
+ console.log("[ByteCave] \u2713 Connected via WebTransport");
7089
+ } catch (wtError) {
7090
+ console.warn("[ByteCave] WebTransport dial failed:", wtError.message);
7091
+ }
7092
+ }
7093
+ }
7094
+ } else {
7095
+ console.log("[ByteCave] Already connected to peer via", connections[0].remoteAddr.toString().slice(0, 60));
7062
7096
  }
7063
7097
  }
7064
7098
  const health = await p2pProtocolClient.getHealthFromPeer(peerId);
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  useHashdImage,
14
14
  useHashdMedia,
15
15
  useHashdUrl
16
- } from "./chunk-KU6ZO2QD.js";
16
+ } from "./chunk-XPZKBTJA.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-KU6ZO2QD.js";
11
+ } from "../chunk-XPZKBTJA.js";
12
12
  import "../chunk-EEZWRIUI.js";
13
13
  export {
14
14
  HashdAudio,
package/dist/types.d.ts CHANGED
@@ -23,6 +23,10 @@ export interface PeerInfo {
23
23
  nodeUrl?: string;
24
24
  isRegistered?: boolean;
25
25
  owner?: string;
26
+ multiaddrs?: string[];
27
+ httpEndpoint?: string;
28
+ relayAddrs?: string[];
29
+ onChainNodeId?: string;
26
30
  }
27
31
  export interface StoreResult {
28
32
  success: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gethashd/bytecave-browser",
3
- "version": "1.0.51",
3
+ "version": "1.0.52",
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
@@ -811,19 +811,59 @@ Nonce: ${nonce}`;
811
811
  uptime: number;
812
812
  } | null> {
813
813
  try {
814
- // Check if we have relay addresses for this peer
814
+ // Check if we have addresses for this peer
815
815
  const peerInfo = this.knownPeers.get(peerId);
816
816
  const relayAddrs = (peerInfo as any)?.relayAddrs;
817
+ const multiaddrs = peerInfo?.multiaddrs;
817
818
 
818
- // If we have relay addresses, dial through relay first
819
- if (relayAddrs && relayAddrs.length > 0 && this.node) {
820
- console.log('[ByteCave] Dialing peer through relay:', peerId.slice(0, 12), relayAddrs[0]);
821
- try {
822
- const ma = multiaddr(relayAddrs[0]);
823
- await this.node.dial(ma as any);
824
- console.log('[ByteCave] Successfully dialed peer through relay');
825
- } catch (dialError) {
826
- console.warn('[ByteCave] Failed to dial through relay:', dialError);
819
+ // Try to dial the peer if not already connected
820
+ if (this.node) {
821
+ const connections = this.node.getConnections().filter(c => c.remotePeer.toString() === peerId);
822
+
823
+ if (connections.length === 0) {
824
+ console.log('[ByteCave] No existing connection to peer, attempting to dial');
825
+
826
+ // Try relay addresses first (if available)
827
+ if (relayAddrs && relayAddrs.length > 0) {
828
+ console.log('[ByteCave] Trying relay address:', relayAddrs[0].slice(0, 60));
829
+ try {
830
+ const ma = multiaddr(relayAddrs[0]);
831
+ await this.node.dial(ma as any);
832
+ console.log('[ByteCave] ✓ Connected via relay');
833
+ } catch (dialError: any) {
834
+ console.warn('[ByteCave] Relay dial failed:', dialError.message);
835
+
836
+ // Fallback to WebTransport if relay fails
837
+ if (multiaddrs && multiaddrs.length > 0) {
838
+ const wtAddr = multiaddrs.find((addr: string) => addr.includes('/webtransport'));
839
+ if (wtAddr) {
840
+ console.log('[ByteCave] Trying WebTransport address:', wtAddr.slice(0, 60));
841
+ try {
842
+ const ma = multiaddr(wtAddr);
843
+ await this.node.dial(ma as any);
844
+ console.log('[ByteCave] ✓ Connected via WebTransport');
845
+ } catch (wtError: any) {
846
+ console.warn('[ByteCave] WebTransport dial failed:', wtError.message);
847
+ }
848
+ }
849
+ }
850
+ }
851
+ } else if (multiaddrs && multiaddrs.length > 0) {
852
+ // No relay addresses, try WebTransport directly
853
+ const wtAddr = multiaddrs.find((addr: string) => addr.includes('/webtransport'));
854
+ if (wtAddr) {
855
+ console.log('[ByteCave] Trying WebTransport address (no relay):', wtAddr.slice(0, 60));
856
+ try {
857
+ const ma = multiaddr(wtAddr);
858
+ await this.node.dial(ma as any);
859
+ console.log('[ByteCave] ✓ Connected via WebTransport');
860
+ } catch (wtError: any) {
861
+ console.warn('[ByteCave] WebTransport dial failed:', wtError.message);
862
+ }
863
+ }
864
+ }
865
+ } else {
866
+ console.log('[ByteCave] Already connected to peer via', connections[0].remoteAddr.toString().slice(0, 60));
827
867
  }
828
868
  }
829
869
 
package/src/types.ts CHANGED
@@ -25,6 +25,10 @@ export interface PeerInfo {
25
25
  nodeUrl?: string;
26
26
  isRegistered?: boolean;
27
27
  owner?: string;
28
+ multiaddrs?: string[];
29
+ httpEndpoint?: string;
30
+ relayAddrs?: string[];
31
+ onChainNodeId?: string;
28
32
  }
29
33
 
30
34
  export interface StoreResult {