@gethashd/bytecave-browser 1.0.51 → 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.
- package/dist/{chunk-KU6ZO2QD.js → chunk-WGSX425G.js} +91 -8
- package/dist/client.d.ts +4 -0
- package/dist/index.cjs +91 -8
- package/dist/index.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/types.d.ts +4 -0
- package/package.json +1 -1
- package/src/client.ts +113 -10
- package/src/types.ts +4 -0
|
@@ -6998,14 +6998,48 @@ Nonce: ${nonce}`;
|
|
|
6998
6998
|
try {
|
|
6999
6999
|
const peerInfo = this.knownPeers.get(peerId);
|
|
7000
7000
|
const relayAddrs = peerInfo?.relayAddrs;
|
|
7001
|
-
|
|
7002
|
-
|
|
7003
|
-
|
|
7004
|
-
|
|
7005
|
-
|
|
7006
|
-
|
|
7007
|
-
|
|
7008
|
-
|
|
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);
|
|
@@ -7112,8 +7146,57 @@ Nonce: ${nonce}`;
|
|
|
7112
7146
|
};
|
|
7113
7147
|
this.knownPeers.set(announcement.peerId, peerInfo);
|
|
7114
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
|
+
}
|
|
7115
7154
|
this.emit("peerAnnounce", peerInfo);
|
|
7116
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
|
+
}
|
|
7117
7200
|
/**
|
|
7118
7201
|
* Load cached peers from localStorage
|
|
7119
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
|
@@ -7051,14 +7051,48 @@ Nonce: ${nonce}`;
|
|
|
7051
7051
|
try {
|
|
7052
7052
|
const peerInfo = this.knownPeers.get(peerId);
|
|
7053
7053
|
const relayAddrs = peerInfo?.relayAddrs;
|
|
7054
|
-
|
|
7055
|
-
|
|
7056
|
-
|
|
7057
|
-
|
|
7058
|
-
|
|
7059
|
-
|
|
7060
|
-
|
|
7061
|
-
|
|
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);
|
|
@@ -7165,8 +7199,57 @@ Nonce: ${nonce}`;
|
|
|
7165
7199
|
};
|
|
7166
7200
|
this.knownPeers.set(announcement.peerId, peerInfo);
|
|
7167
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
|
+
}
|
|
7168
7207
|
this.emit("peerAnnounce", peerInfo);
|
|
7169
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
|
+
}
|
|
7170
7253
|
/**
|
|
7171
7254
|
* Load cached peers from localStorage
|
|
7172
7255
|
*/
|
package/dist/index.js
CHANGED
package/dist/react/index.js
CHANGED
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
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
|
|
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
|
-
//
|
|
819
|
-
if (
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
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
|
|
|
@@ -955,8 +995,71 @@ Nonce: ${nonce}`;
|
|
|
955
995
|
this.knownPeers.set(announcement.peerId, peerInfo);
|
|
956
996
|
this.saveCachedPeers();
|
|
957
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
|
+
|
|
958
1005
|
this.emit('peerAnnounce', peerInfo);
|
|
959
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
|
+
}
|
|
960
1063
|
|
|
961
1064
|
|
|
962
1065
|
/**
|
package/src/types.ts
CHANGED