@gethashd/bytecave-browser 1.0.3 → 1.0.5
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-O56JMOMV.js → chunk-QOLLCX4C.js} +13 -7
- package/dist/index.cjs +13 -7
- package/dist/index.js +1 -1
- package/dist/provider.d.ts +2 -1
- package/dist/react/index.js +1 -1
- package/dist/types.d.ts +1 -0
- package/package.json +1 -1
- package/src/client.ts +18 -11
- package/src/provider.tsx +3 -0
- package/src/types.ts +2 -1
|
@@ -5979,10 +5979,9 @@ var ByteCaveClient = class {
|
|
|
5979
5979
|
connectionTimeout: 3e4,
|
|
5980
5980
|
...config
|
|
5981
5981
|
};
|
|
5982
|
-
if (config.
|
|
5983
|
-
|
|
5984
|
-
|
|
5985
|
-
console.log("[ByteCave] Using relay HTTP URL for peer discovery:", relayHttpUrl);
|
|
5982
|
+
if (config.relayHttpUrl) {
|
|
5983
|
+
this.relayDiscovery = new RelayDiscovery(config.relayHttpUrl);
|
|
5984
|
+
console.log("[ByteCave] Using relay HTTP URL for peer discovery:", config.relayHttpUrl);
|
|
5986
5985
|
}
|
|
5987
5986
|
if (config.vaultNodeRegistryAddress && config.rpcUrl) {
|
|
5988
5987
|
this.contractDiscovery = new ContractDiscovery(config.vaultNodeRegistryAddress, config.rpcUrl);
|
|
@@ -6004,8 +6003,12 @@ var ByteCaveClient = class {
|
|
|
6004
6003
|
console.log("[ByteCave] Using direct node addresses:", this.config.directNodeAddrs);
|
|
6005
6004
|
bootstrapPeers.push(...this.config.directNodeAddrs);
|
|
6006
6005
|
}
|
|
6006
|
+
if (this.config.relayPeers && this.config.relayPeers.length > 0) {
|
|
6007
|
+
console.log("[ByteCave] Using relay peers for circuit relay:", this.config.relayPeers);
|
|
6008
|
+
bootstrapPeers.push(...this.config.relayPeers);
|
|
6009
|
+
}
|
|
6007
6010
|
if (bootstrapPeers.length === 0) {
|
|
6008
|
-
console.warn("[ByteCave] No
|
|
6011
|
+
console.warn("[ByteCave] No peers configured - will rely on contract discovery only");
|
|
6009
6012
|
}
|
|
6010
6013
|
console.log("[ByteCave] Bootstrap peers:", bootstrapPeers);
|
|
6011
6014
|
this.node = await createLibp2p({
|
|
@@ -6059,7 +6062,7 @@ var ByteCaveClient = class {
|
|
|
6059
6062
|
const relayPeers = await this.relayDiscovery.getConnectedPeers();
|
|
6060
6063
|
if (relayPeers.length > 0) {
|
|
6061
6064
|
console.log("[ByteCave] Got", relayPeers.length, "peers from relay HTTP endpoint");
|
|
6062
|
-
|
|
6065
|
+
const peerPromises = relayPeers.map(async (peer) => {
|
|
6063
6066
|
try {
|
|
6064
6067
|
console.log("[ByteCave] Dialing peer:", peer.peerId.slice(0, 12) + "...");
|
|
6065
6068
|
let connected = false;
|
|
@@ -6090,7 +6093,8 @@ var ByteCaveClient = class {
|
|
|
6090
6093
|
} catch (err) {
|
|
6091
6094
|
console.warn("[ByteCave] Failed to process peer from HTTP relay:", err.message);
|
|
6092
6095
|
}
|
|
6093
|
-
}
|
|
6096
|
+
});
|
|
6097
|
+
await Promise.allSettled(peerPromises);
|
|
6094
6098
|
}
|
|
6095
6099
|
} catch (err) {
|
|
6096
6100
|
console.warn("[ByteCave] HTTP relay discovery failed, falling back to P2P directory:", err.message);
|
|
@@ -6671,6 +6675,7 @@ function ByteCaveProvider({
|
|
|
6671
6675
|
rpcUrl,
|
|
6672
6676
|
appId,
|
|
6673
6677
|
relayPeers = [],
|
|
6678
|
+
relayHttpUrl,
|
|
6674
6679
|
directNodeAddrs = []
|
|
6675
6680
|
}) {
|
|
6676
6681
|
const [connectionState, setConnectionState] = useState("disconnected");
|
|
@@ -6713,6 +6718,7 @@ function ByteCaveProvider({
|
|
|
6713
6718
|
appId,
|
|
6714
6719
|
directNodeAddrs,
|
|
6715
6720
|
relayPeers,
|
|
6721
|
+
relayHttpUrl,
|
|
6716
6722
|
maxPeers: 10,
|
|
6717
6723
|
connectionTimeout: 3e4
|
|
6718
6724
|
});
|
package/dist/index.cjs
CHANGED
|
@@ -6032,10 +6032,9 @@ var ByteCaveClient = class {
|
|
|
6032
6032
|
connectionTimeout: 3e4,
|
|
6033
6033
|
...config
|
|
6034
6034
|
};
|
|
6035
|
-
if (config.
|
|
6036
|
-
|
|
6037
|
-
|
|
6038
|
-
console.log("[ByteCave] Using relay HTTP URL for peer discovery:", relayHttpUrl);
|
|
6035
|
+
if (config.relayHttpUrl) {
|
|
6036
|
+
this.relayDiscovery = new RelayDiscovery(config.relayHttpUrl);
|
|
6037
|
+
console.log("[ByteCave] Using relay HTTP URL for peer discovery:", config.relayHttpUrl);
|
|
6039
6038
|
}
|
|
6040
6039
|
if (config.vaultNodeRegistryAddress && config.rpcUrl) {
|
|
6041
6040
|
this.contractDiscovery = new ContractDiscovery(config.vaultNodeRegistryAddress, config.rpcUrl);
|
|
@@ -6057,8 +6056,12 @@ var ByteCaveClient = class {
|
|
|
6057
6056
|
console.log("[ByteCave] Using direct node addresses:", this.config.directNodeAddrs);
|
|
6058
6057
|
bootstrapPeers.push(...this.config.directNodeAddrs);
|
|
6059
6058
|
}
|
|
6059
|
+
if (this.config.relayPeers && this.config.relayPeers.length > 0) {
|
|
6060
|
+
console.log("[ByteCave] Using relay peers for circuit relay:", this.config.relayPeers);
|
|
6061
|
+
bootstrapPeers.push(...this.config.relayPeers);
|
|
6062
|
+
}
|
|
6060
6063
|
if (bootstrapPeers.length === 0) {
|
|
6061
|
-
console.warn("[ByteCave] No
|
|
6064
|
+
console.warn("[ByteCave] No peers configured - will rely on contract discovery only");
|
|
6062
6065
|
}
|
|
6063
6066
|
console.log("[ByteCave] Bootstrap peers:", bootstrapPeers);
|
|
6064
6067
|
this.node = await (0, import_libp2p.createLibp2p)({
|
|
@@ -6112,7 +6115,7 @@ var ByteCaveClient = class {
|
|
|
6112
6115
|
const relayPeers = await this.relayDiscovery.getConnectedPeers();
|
|
6113
6116
|
if (relayPeers.length > 0) {
|
|
6114
6117
|
console.log("[ByteCave] Got", relayPeers.length, "peers from relay HTTP endpoint");
|
|
6115
|
-
|
|
6118
|
+
const peerPromises = relayPeers.map(async (peer) => {
|
|
6116
6119
|
try {
|
|
6117
6120
|
console.log("[ByteCave] Dialing peer:", peer.peerId.slice(0, 12) + "...");
|
|
6118
6121
|
let connected = false;
|
|
@@ -6143,7 +6146,8 @@ var ByteCaveClient = class {
|
|
|
6143
6146
|
} catch (err) {
|
|
6144
6147
|
console.warn("[ByteCave] Failed to process peer from HTTP relay:", err.message);
|
|
6145
6148
|
}
|
|
6146
|
-
}
|
|
6149
|
+
});
|
|
6150
|
+
await Promise.allSettled(peerPromises);
|
|
6147
6151
|
}
|
|
6148
6152
|
} catch (err) {
|
|
6149
6153
|
console.warn("[ByteCave] HTTP relay discovery failed, falling back to P2P directory:", err.message);
|
|
@@ -6724,6 +6728,7 @@ function ByteCaveProvider({
|
|
|
6724
6728
|
rpcUrl,
|
|
6725
6729
|
appId,
|
|
6726
6730
|
relayPeers = [],
|
|
6731
|
+
relayHttpUrl,
|
|
6727
6732
|
directNodeAddrs = []
|
|
6728
6733
|
}) {
|
|
6729
6734
|
const [connectionState, setConnectionState] = (0, import_react.useState)("disconnected");
|
|
@@ -6766,6 +6771,7 @@ function ByteCaveProvider({
|
|
|
6766
6771
|
appId,
|
|
6767
6772
|
directNodeAddrs,
|
|
6768
6773
|
relayPeers,
|
|
6774
|
+
relayHttpUrl,
|
|
6769
6775
|
maxPeers: 10,
|
|
6770
6776
|
connectionTimeout: 3e4
|
|
6771
6777
|
});
|
package/dist/index.js
CHANGED
package/dist/provider.d.ts
CHANGED
|
@@ -52,8 +52,9 @@ interface ByteCaveProviderProps {
|
|
|
52
52
|
rpcUrl: string;
|
|
53
53
|
appId: string;
|
|
54
54
|
relayPeers?: string[];
|
|
55
|
+
relayHttpUrl?: string;
|
|
55
56
|
directNodeAddrs?: string[];
|
|
56
57
|
}
|
|
57
|
-
export declare function ByteCaveProvider({ children, vaultNodeRegistryAddress, contentRegistryAddress, rpcUrl, appId, relayPeers, directNodeAddrs }: ByteCaveProviderProps): React.JSX.Element;
|
|
58
|
+
export declare function ByteCaveProvider({ children, vaultNodeRegistryAddress, contentRegistryAddress, rpcUrl, appId, relayPeers, relayHttpUrl, directNodeAddrs }: ByteCaveProviderProps): React.JSX.Element;
|
|
58
59
|
export declare function useByteCaveContext(): ByteCaveContextValue;
|
|
59
60
|
export {};
|
package/dist/react/index.js
CHANGED
package/dist/types.d.ts
CHANGED
package/package.json
CHANGED
package/src/client.ts
CHANGED
|
@@ -48,12 +48,10 @@ export class ByteCaveClient {
|
|
|
48
48
|
...config
|
|
49
49
|
};
|
|
50
50
|
|
|
51
|
-
// Initialize relay discovery using HTTP
|
|
52
|
-
if (config.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
this.relayDiscovery = new RelayDiscovery(relayHttpUrl);
|
|
56
|
-
console.log('[ByteCave] Using relay HTTP URL for peer discovery:', relayHttpUrl);
|
|
51
|
+
// Initialize relay discovery using HTTP URL if provided
|
|
52
|
+
if (config.relayHttpUrl) {
|
|
53
|
+
this.relayDiscovery = new RelayDiscovery(config.relayHttpUrl);
|
|
54
|
+
console.log('[ByteCave] Using relay HTTP URL for peer discovery:', config.relayHttpUrl);
|
|
57
55
|
}
|
|
58
56
|
|
|
59
57
|
// Initialize contract discovery if contract address is provided
|
|
@@ -83,8 +81,14 @@ export class ByteCaveClient {
|
|
|
83
81
|
bootstrapPeers.push(...this.config.directNodeAddrs);
|
|
84
82
|
}
|
|
85
83
|
|
|
84
|
+
// Add relay peers for circuit relay connections
|
|
85
|
+
if (this.config.relayPeers && this.config.relayPeers.length > 0) {
|
|
86
|
+
console.log('[ByteCave] Using relay peers for circuit relay:', this.config.relayPeers);
|
|
87
|
+
bootstrapPeers.push(...this.config.relayPeers);
|
|
88
|
+
}
|
|
89
|
+
|
|
86
90
|
if (bootstrapPeers.length === 0) {
|
|
87
|
-
console.warn('[ByteCave] No
|
|
91
|
+
console.warn('[ByteCave] No peers configured - will rely on contract discovery only');
|
|
88
92
|
}
|
|
89
93
|
|
|
90
94
|
console.log('[ByteCave] Bootstrap peers:', bootstrapPeers);
|
|
@@ -156,8 +160,8 @@ export class ByteCaveClient {
|
|
|
156
160
|
if (relayPeers.length > 0) {
|
|
157
161
|
console.log('[ByteCave] Got', relayPeers.length, 'peers from relay HTTP endpoint');
|
|
158
162
|
|
|
159
|
-
//
|
|
160
|
-
|
|
163
|
+
// Process all peers in parallel for faster discovery
|
|
164
|
+
const peerPromises = relayPeers.map(async (peer) => {
|
|
161
165
|
try {
|
|
162
166
|
console.log('[ByteCave] Dialing peer:', peer.peerId.slice(0, 12) + '...');
|
|
163
167
|
|
|
@@ -165,7 +169,7 @@ export class ByteCaveClient {
|
|
|
165
169
|
for (const addr of peer.multiaddrs) {
|
|
166
170
|
try {
|
|
167
171
|
const ma = multiaddr(addr);
|
|
168
|
-
await this.node
|
|
172
|
+
await this.node!.dial(ma as any);
|
|
169
173
|
connected = true;
|
|
170
174
|
console.log('[ByteCave] ✓ Connected via relay circuit');
|
|
171
175
|
break;
|
|
@@ -191,7 +195,10 @@ export class ByteCaveClient {
|
|
|
191
195
|
} catch (err: any) {
|
|
192
196
|
console.warn('[ByteCave] Failed to process peer from HTTP relay:', err.message);
|
|
193
197
|
}
|
|
194
|
-
}
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// Wait for all peer connections and health queries to complete
|
|
201
|
+
await Promise.allSettled(peerPromises);
|
|
195
202
|
}
|
|
196
203
|
} catch (err: any) {
|
|
197
204
|
console.warn('[ByteCave] HTTP relay discovery failed, falling back to P2P directory:', err.message);
|
package/src/provider.tsx
CHANGED
|
@@ -55,6 +55,7 @@ interface ByteCaveProviderProps {
|
|
|
55
55
|
rpcUrl: string;
|
|
56
56
|
appId: string;
|
|
57
57
|
relayPeers?: string[];
|
|
58
|
+
relayHttpUrl?: string;
|
|
58
59
|
directNodeAddrs?: string[];
|
|
59
60
|
}
|
|
60
61
|
|
|
@@ -67,6 +68,7 @@ export function ByteCaveProvider({
|
|
|
67
68
|
rpcUrl,
|
|
68
69
|
appId,
|
|
69
70
|
relayPeers = [],
|
|
71
|
+
relayHttpUrl,
|
|
70
72
|
directNodeAddrs = []
|
|
71
73
|
}: ByteCaveProviderProps) {
|
|
72
74
|
const [connectionState, setConnectionState] = useState<ConnectionState>('disconnected');
|
|
@@ -117,6 +119,7 @@ export function ByteCaveProvider({
|
|
|
117
119
|
appId,
|
|
118
120
|
directNodeAddrs,
|
|
119
121
|
relayPeers,
|
|
122
|
+
relayHttpUrl,
|
|
120
123
|
maxPeers: 10,
|
|
121
124
|
connectionTimeout: 30000
|
|
122
125
|
});
|
package/src/types.ts
CHANGED
|
@@ -8,7 +8,8 @@ export interface ByteCaveConfig {
|
|
|
8
8
|
rpcUrl?: string; // Optional - required if vaultNodeRegistryAddress is provided
|
|
9
9
|
appId: string; // Application identifier for storage authorization
|
|
10
10
|
directNodeAddrs?: string[]; // Direct node multiaddrs for WebRTC connections (no relay)
|
|
11
|
-
relayPeers?: string[]; // Relay
|
|
11
|
+
relayPeers?: string[]; // Relay node multiaddrs for circuit relay (e.g., /ip4/127.0.0.1/tcp/4002/ws/p2p/...)
|
|
12
|
+
relayHttpUrl?: string; // Optional - Relay HTTP URL for instant peer discovery (e.g., http://localhost:9090)
|
|
12
13
|
maxPeers?: number;
|
|
13
14
|
connectionTimeout?: number;
|
|
14
15
|
}
|