@gethashd/bytecave-browser 1.0.38 → 1.0.39
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-CIBPIU23.js → chunk-SIGWRCA5.js} +50 -47
- package/dist/index.cjs +50 -47
- package/dist/index.js +1 -1
- package/dist/react/index.js +1 -1
- package/package.json +1 -1
- package/src/client.ts +66 -65
|
@@ -6224,7 +6224,17 @@ var ByteCaveClient = class {
|
|
|
6224
6224
|
console.log("[ByteCave] Bootstrap peers:", bootstrapPeers);
|
|
6225
6225
|
this.node = await createLibp2p({
|
|
6226
6226
|
transports: [
|
|
6227
|
-
webRTC(
|
|
6227
|
+
webRTC({
|
|
6228
|
+
rtcConfiguration: {
|
|
6229
|
+
iceServers: [
|
|
6230
|
+
// Google public STUN servers for NAT traversal
|
|
6231
|
+
{ urls: "stun:stun.l.google.com:19302" },
|
|
6232
|
+
{ urls: "stun:stun1.l.google.com:19302" },
|
|
6233
|
+
// Mozilla public STUN server
|
|
6234
|
+
{ urls: "stun:stun.services.mozilla.com" }
|
|
6235
|
+
]
|
|
6236
|
+
}
|
|
6237
|
+
}),
|
|
6228
6238
|
webSockets(),
|
|
6229
6239
|
circuitRelayTransport()
|
|
6230
6240
|
],
|
|
@@ -6534,8 +6544,44 @@ Nonce: ${nonce}`;
|
|
|
6534
6544
|
console.warn("[ByteCave] Failed to create authorization:", err.message);
|
|
6535
6545
|
}
|
|
6536
6546
|
}
|
|
6547
|
+
if (this.node) {
|
|
6548
|
+
console.log("[ByteCave] Attempting direct P2P storage (with STUN NAT traversal)");
|
|
6549
|
+
const allPeers = this.node.getPeers();
|
|
6550
|
+
const connectedPeerIds = allPeers.map((p) => p.toString());
|
|
6551
|
+
console.log("[ByteCave] Store - connected storage peers:", connectedPeerIds.length);
|
|
6552
|
+
if (connectedPeerIds.length > 0) {
|
|
6553
|
+
const registeredPeerIds = Array.from(this.knownPeers.values()).filter((p) => p.isRegistered && connectedPeerIds.includes(p.peerId)).map((p) => p.peerId);
|
|
6554
|
+
const storagePeerIds = registeredPeerIds.length > 0 ? [...registeredPeerIds, ...connectedPeerIds.filter((id) => !registeredPeerIds.includes(id))] : connectedPeerIds;
|
|
6555
|
+
for (const peerId of storagePeerIds) {
|
|
6556
|
+
console.log("[ByteCave] Attempting P2P store to peer:", peerId.slice(0, 12) + "...");
|
|
6557
|
+
try {
|
|
6558
|
+
const result = await p2pProtocolClient.storeToPeer(
|
|
6559
|
+
peerId,
|
|
6560
|
+
dataArray,
|
|
6561
|
+
mimeType || "application/octet-stream",
|
|
6562
|
+
authorization,
|
|
6563
|
+
false,
|
|
6564
|
+
// shouldVerifyOnChain - false for browser test storage
|
|
6565
|
+
hashIdToken
|
|
6566
|
+
);
|
|
6567
|
+
if (result.success && result.cid) {
|
|
6568
|
+
console.log("[ByteCave] \u2713 P2P store successful:", result.cid);
|
|
6569
|
+
return {
|
|
6570
|
+
success: true,
|
|
6571
|
+
cid: result.cid,
|
|
6572
|
+
peerId
|
|
6573
|
+
};
|
|
6574
|
+
}
|
|
6575
|
+
console.warn("[ByteCave] \u2717 P2P store failed:", result.error);
|
|
6576
|
+
} catch (err) {
|
|
6577
|
+
console.error("[ByteCave] \u2717 P2P store exception:", err.message);
|
|
6578
|
+
}
|
|
6579
|
+
}
|
|
6580
|
+
}
|
|
6581
|
+
console.log("[ByteCave] P2P storage failed or no peers available, falling back to WebSocket relay");
|
|
6582
|
+
}
|
|
6537
6583
|
if (this.config.relayWsUrl) {
|
|
6538
|
-
console.log("[ByteCave] Attempting WebSocket storage via relay");
|
|
6584
|
+
console.log("[ByteCave] Attempting WebSocket storage via relay (fallback)");
|
|
6539
6585
|
try {
|
|
6540
6586
|
if (!this.storageWsClient) {
|
|
6541
6587
|
this.storageWsClient = new StorageWebSocketClient(this.config.relayWsUrl);
|
|
@@ -6556,7 +6602,7 @@ Nonce: ${nonce}`;
|
|
|
6556
6602
|
timeout: 3e4
|
|
6557
6603
|
});
|
|
6558
6604
|
if (result.success && result.cid) {
|
|
6559
|
-
console.log("[ByteCave] \u2713 WebSocket storage successful:", result.cid);
|
|
6605
|
+
console.log("[ByteCave] \u2713 WebSocket storage successful (fallback):", result.cid);
|
|
6560
6606
|
return {
|
|
6561
6607
|
success: true,
|
|
6562
6608
|
cid: result.cid,
|
|
@@ -6568,50 +6614,7 @@ Nonce: ${nonce}`;
|
|
|
6568
6614
|
console.warn("[ByteCave] WebSocket storage exception:", err.message);
|
|
6569
6615
|
}
|
|
6570
6616
|
}
|
|
6571
|
-
|
|
6572
|
-
return { success: false, error: "WebSocket storage failed and P2P node not initialized" };
|
|
6573
|
-
}
|
|
6574
|
-
console.log("[ByteCave] Falling back to P2P storage");
|
|
6575
|
-
const allPeers = this.node.getPeers();
|
|
6576
|
-
const connectedPeerIds = allPeers.map((p) => p.toString());
|
|
6577
|
-
console.log("[ByteCave] Store - connected storage peers:", connectedPeerIds.length);
|
|
6578
|
-
if (connectedPeerIds.length === 0) {
|
|
6579
|
-
return { success: false, error: "WebSocket storage failed and no P2P peers available" };
|
|
6580
|
-
}
|
|
6581
|
-
const registeredPeerIds = Array.from(this.knownPeers.values()).filter((p) => p.isRegistered && connectedPeerIds.includes(p.peerId)).map((p) => p.peerId);
|
|
6582
|
-
const storagePeerIds = registeredPeerIds.length > 0 ? [...registeredPeerIds, ...connectedPeerIds.filter((id) => !registeredPeerIds.includes(id))] : connectedPeerIds;
|
|
6583
|
-
const errors = [];
|
|
6584
|
-
for (const peerId of storagePeerIds) {
|
|
6585
|
-
console.log("[ByteCave] Attempting P2P store to peer:", peerId.slice(0, 12) + "...");
|
|
6586
|
-
try {
|
|
6587
|
-
const result = await p2pProtocolClient.storeToPeer(
|
|
6588
|
-
peerId,
|
|
6589
|
-
dataArray,
|
|
6590
|
-
mimeType || "application/octet-stream",
|
|
6591
|
-
authorization,
|
|
6592
|
-
false,
|
|
6593
|
-
// shouldVerifyOnChain - false for browser test storage
|
|
6594
|
-
hashIdToken
|
|
6595
|
-
);
|
|
6596
|
-
if (result.success && result.cid) {
|
|
6597
|
-
console.log("[ByteCave] \u2713 P2P store successful:", result.cid);
|
|
6598
|
-
return {
|
|
6599
|
-
success: true,
|
|
6600
|
-
cid: result.cid,
|
|
6601
|
-
peerId
|
|
6602
|
-
};
|
|
6603
|
-
}
|
|
6604
|
-
const errorMsg = `${peerId.slice(0, 12)}: ${result.error}`;
|
|
6605
|
-
console.warn("[ByteCave] \u2717 P2P store failed:", errorMsg);
|
|
6606
|
-
errors.push(errorMsg);
|
|
6607
|
-
} catch (err) {
|
|
6608
|
-
const errorMsg = `${peerId.slice(0, 12)}: ${err.message}`;
|
|
6609
|
-
console.error("[ByteCave] \u2717 P2P store exception:", errorMsg);
|
|
6610
|
-
errors.push(errorMsg);
|
|
6611
|
-
}
|
|
6612
|
-
}
|
|
6613
|
-
console.error("[ByteCave] All storage methods failed. Errors:", errors);
|
|
6614
|
-
return { success: false, error: `All storage methods failed: ${errors.join("; ")}` };
|
|
6617
|
+
return { success: false, error: "All storage methods failed (P2P and WebSocket relay)" };
|
|
6615
6618
|
}
|
|
6616
6619
|
/**
|
|
6617
6620
|
* Retrieve ciphertext from a node via P2P only (no HTTP fallback)
|
package/dist/index.cjs
CHANGED
|
@@ -6277,7 +6277,17 @@ var ByteCaveClient = class {
|
|
|
6277
6277
|
console.log("[ByteCave] Bootstrap peers:", bootstrapPeers);
|
|
6278
6278
|
this.node = await (0, import_libp2p.createLibp2p)({
|
|
6279
6279
|
transports: [
|
|
6280
|
-
(0, import_webrtc.webRTC)(
|
|
6280
|
+
(0, import_webrtc.webRTC)({
|
|
6281
|
+
rtcConfiguration: {
|
|
6282
|
+
iceServers: [
|
|
6283
|
+
// Google public STUN servers for NAT traversal
|
|
6284
|
+
{ urls: "stun:stun.l.google.com:19302" },
|
|
6285
|
+
{ urls: "stun:stun1.l.google.com:19302" },
|
|
6286
|
+
// Mozilla public STUN server
|
|
6287
|
+
{ urls: "stun:stun.services.mozilla.com" }
|
|
6288
|
+
]
|
|
6289
|
+
}
|
|
6290
|
+
}),
|
|
6281
6291
|
(0, import_websockets.webSockets)(),
|
|
6282
6292
|
(0, import_circuit_relay_v2.circuitRelayTransport)()
|
|
6283
6293
|
],
|
|
@@ -6587,8 +6597,44 @@ Nonce: ${nonce}`;
|
|
|
6587
6597
|
console.warn("[ByteCave] Failed to create authorization:", err.message);
|
|
6588
6598
|
}
|
|
6589
6599
|
}
|
|
6600
|
+
if (this.node) {
|
|
6601
|
+
console.log("[ByteCave] Attempting direct P2P storage (with STUN NAT traversal)");
|
|
6602
|
+
const allPeers = this.node.getPeers();
|
|
6603
|
+
const connectedPeerIds = allPeers.map((p) => p.toString());
|
|
6604
|
+
console.log("[ByteCave] Store - connected storage peers:", connectedPeerIds.length);
|
|
6605
|
+
if (connectedPeerIds.length > 0) {
|
|
6606
|
+
const registeredPeerIds = Array.from(this.knownPeers.values()).filter((p) => p.isRegistered && connectedPeerIds.includes(p.peerId)).map((p) => p.peerId);
|
|
6607
|
+
const storagePeerIds = registeredPeerIds.length > 0 ? [...registeredPeerIds, ...connectedPeerIds.filter((id) => !registeredPeerIds.includes(id))] : connectedPeerIds;
|
|
6608
|
+
for (const peerId of storagePeerIds) {
|
|
6609
|
+
console.log("[ByteCave] Attempting P2P store to peer:", peerId.slice(0, 12) + "...");
|
|
6610
|
+
try {
|
|
6611
|
+
const result = await p2pProtocolClient.storeToPeer(
|
|
6612
|
+
peerId,
|
|
6613
|
+
dataArray,
|
|
6614
|
+
mimeType || "application/octet-stream",
|
|
6615
|
+
authorization,
|
|
6616
|
+
false,
|
|
6617
|
+
// shouldVerifyOnChain - false for browser test storage
|
|
6618
|
+
hashIdToken
|
|
6619
|
+
);
|
|
6620
|
+
if (result.success && result.cid) {
|
|
6621
|
+
console.log("[ByteCave] \u2713 P2P store successful:", result.cid);
|
|
6622
|
+
return {
|
|
6623
|
+
success: true,
|
|
6624
|
+
cid: result.cid,
|
|
6625
|
+
peerId
|
|
6626
|
+
};
|
|
6627
|
+
}
|
|
6628
|
+
console.warn("[ByteCave] \u2717 P2P store failed:", result.error);
|
|
6629
|
+
} catch (err) {
|
|
6630
|
+
console.error("[ByteCave] \u2717 P2P store exception:", err.message);
|
|
6631
|
+
}
|
|
6632
|
+
}
|
|
6633
|
+
}
|
|
6634
|
+
console.log("[ByteCave] P2P storage failed or no peers available, falling back to WebSocket relay");
|
|
6635
|
+
}
|
|
6590
6636
|
if (this.config.relayWsUrl) {
|
|
6591
|
-
console.log("[ByteCave] Attempting WebSocket storage via relay");
|
|
6637
|
+
console.log("[ByteCave] Attempting WebSocket storage via relay (fallback)");
|
|
6592
6638
|
try {
|
|
6593
6639
|
if (!this.storageWsClient) {
|
|
6594
6640
|
this.storageWsClient = new StorageWebSocketClient(this.config.relayWsUrl);
|
|
@@ -6609,7 +6655,7 @@ Nonce: ${nonce}`;
|
|
|
6609
6655
|
timeout: 3e4
|
|
6610
6656
|
});
|
|
6611
6657
|
if (result.success && result.cid) {
|
|
6612
|
-
console.log("[ByteCave] \u2713 WebSocket storage successful:", result.cid);
|
|
6658
|
+
console.log("[ByteCave] \u2713 WebSocket storage successful (fallback):", result.cid);
|
|
6613
6659
|
return {
|
|
6614
6660
|
success: true,
|
|
6615
6661
|
cid: result.cid,
|
|
@@ -6621,50 +6667,7 @@ Nonce: ${nonce}`;
|
|
|
6621
6667
|
console.warn("[ByteCave] WebSocket storage exception:", err.message);
|
|
6622
6668
|
}
|
|
6623
6669
|
}
|
|
6624
|
-
|
|
6625
|
-
return { success: false, error: "WebSocket storage failed and P2P node not initialized" };
|
|
6626
|
-
}
|
|
6627
|
-
console.log("[ByteCave] Falling back to P2P storage");
|
|
6628
|
-
const allPeers = this.node.getPeers();
|
|
6629
|
-
const connectedPeerIds = allPeers.map((p) => p.toString());
|
|
6630
|
-
console.log("[ByteCave] Store - connected storage peers:", connectedPeerIds.length);
|
|
6631
|
-
if (connectedPeerIds.length === 0) {
|
|
6632
|
-
return { success: false, error: "WebSocket storage failed and no P2P peers available" };
|
|
6633
|
-
}
|
|
6634
|
-
const registeredPeerIds = Array.from(this.knownPeers.values()).filter((p) => p.isRegistered && connectedPeerIds.includes(p.peerId)).map((p) => p.peerId);
|
|
6635
|
-
const storagePeerIds = registeredPeerIds.length > 0 ? [...registeredPeerIds, ...connectedPeerIds.filter((id) => !registeredPeerIds.includes(id))] : connectedPeerIds;
|
|
6636
|
-
const errors = [];
|
|
6637
|
-
for (const peerId of storagePeerIds) {
|
|
6638
|
-
console.log("[ByteCave] Attempting P2P store to peer:", peerId.slice(0, 12) + "...");
|
|
6639
|
-
try {
|
|
6640
|
-
const result = await p2pProtocolClient.storeToPeer(
|
|
6641
|
-
peerId,
|
|
6642
|
-
dataArray,
|
|
6643
|
-
mimeType || "application/octet-stream",
|
|
6644
|
-
authorization,
|
|
6645
|
-
false,
|
|
6646
|
-
// shouldVerifyOnChain - false for browser test storage
|
|
6647
|
-
hashIdToken
|
|
6648
|
-
);
|
|
6649
|
-
if (result.success && result.cid) {
|
|
6650
|
-
console.log("[ByteCave] \u2713 P2P store successful:", result.cid);
|
|
6651
|
-
return {
|
|
6652
|
-
success: true,
|
|
6653
|
-
cid: result.cid,
|
|
6654
|
-
peerId
|
|
6655
|
-
};
|
|
6656
|
-
}
|
|
6657
|
-
const errorMsg = `${peerId.slice(0, 12)}: ${result.error}`;
|
|
6658
|
-
console.warn("[ByteCave] \u2717 P2P store failed:", errorMsg);
|
|
6659
|
-
errors.push(errorMsg);
|
|
6660
|
-
} catch (err) {
|
|
6661
|
-
const errorMsg = `${peerId.slice(0, 12)}: ${err.message}`;
|
|
6662
|
-
console.error("[ByteCave] \u2717 P2P store exception:", errorMsg);
|
|
6663
|
-
errors.push(errorMsg);
|
|
6664
|
-
}
|
|
6665
|
-
}
|
|
6666
|
-
console.error("[ByteCave] All storage methods failed. Errors:", errors);
|
|
6667
|
-
return { success: false, error: `All storage methods failed: ${errors.join("; ")}` };
|
|
6670
|
+
return { success: false, error: "All storage methods failed (P2P and WebSocket relay)" };
|
|
6668
6671
|
}
|
|
6669
6672
|
/**
|
|
6670
6673
|
* Retrieve ciphertext from a node via P2P only (no HTTP fallback)
|
package/dist/index.js
CHANGED
package/dist/react/index.js
CHANGED
package/package.json
CHANGED
package/src/client.ts
CHANGED
|
@@ -99,7 +99,17 @@ export class ByteCaveClient {
|
|
|
99
99
|
// Create libp2p node with WebRTC transport
|
|
100
100
|
this.node = await createLibp2p({
|
|
101
101
|
transports: [
|
|
102
|
-
webRTC(
|
|
102
|
+
webRTC({
|
|
103
|
+
rtcConfiguration: {
|
|
104
|
+
iceServers: [
|
|
105
|
+
// Google public STUN servers for NAT traversal
|
|
106
|
+
{ urls: 'stun:stun.l.google.com:19302' },
|
|
107
|
+
{ urls: 'stun:stun1.l.google.com:19302' },
|
|
108
|
+
// Mozilla public STUN server
|
|
109
|
+
{ urls: 'stun:stun.services.mozilla.com' }
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
}) as any,
|
|
103
113
|
webSockets() as any,
|
|
104
114
|
circuitRelayTransport() as any
|
|
105
115
|
],
|
|
@@ -476,9 +486,60 @@ Nonce: ${nonce}`;
|
|
|
476
486
|
}
|
|
477
487
|
}
|
|
478
488
|
|
|
479
|
-
// Try
|
|
489
|
+
// Try direct P2P storage first (with STUN for NAT traversal)
|
|
490
|
+
if (this.node) {
|
|
491
|
+
console.log('[ByteCave] Attempting direct P2P storage (with STUN NAT traversal)');
|
|
492
|
+
|
|
493
|
+
const allPeers = this.node.getPeers();
|
|
494
|
+
const connectedPeerIds = allPeers.map(p => p.toString());
|
|
495
|
+
|
|
496
|
+
console.log('[ByteCave] Store - connected storage peers:', connectedPeerIds.length);
|
|
497
|
+
|
|
498
|
+
if (connectedPeerIds.length > 0) {
|
|
499
|
+
// Prioritize registered peers from knownPeers
|
|
500
|
+
const registeredPeerIds = Array.from(this.knownPeers.values())
|
|
501
|
+
.filter(p => p.isRegistered && connectedPeerIds.includes(p.peerId))
|
|
502
|
+
.map(p => p.peerId);
|
|
503
|
+
|
|
504
|
+
const storagePeerIds = registeredPeerIds.length > 0
|
|
505
|
+
? [...registeredPeerIds, ...connectedPeerIds.filter(id => !registeredPeerIds.includes(id))]
|
|
506
|
+
: connectedPeerIds;
|
|
507
|
+
|
|
508
|
+
for (const peerId of storagePeerIds) {
|
|
509
|
+
console.log('[ByteCave] Attempting P2P store to peer:', peerId.slice(0, 12) + '...');
|
|
510
|
+
|
|
511
|
+
try {
|
|
512
|
+
const result = await p2pProtocolClient.storeToPeer(
|
|
513
|
+
peerId,
|
|
514
|
+
dataArray,
|
|
515
|
+
mimeType || 'application/octet-stream',
|
|
516
|
+
authorization,
|
|
517
|
+
false, // shouldVerifyOnChain - false for browser test storage
|
|
518
|
+
hashIdToken
|
|
519
|
+
);
|
|
520
|
+
|
|
521
|
+
if (result.success && result.cid) {
|
|
522
|
+
console.log('[ByteCave] ✓ P2P store successful:', result.cid);
|
|
523
|
+
return {
|
|
524
|
+
success: true,
|
|
525
|
+
cid: result.cid,
|
|
526
|
+
peerId
|
|
527
|
+
};
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
console.warn('[ByteCave] ✗ P2P store failed:', result.error);
|
|
531
|
+
} catch (err: any) {
|
|
532
|
+
console.error('[ByteCave] ✗ P2P store exception:', err.message);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
console.log('[ByteCave] P2P storage failed or no peers available, falling back to WebSocket relay');
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
// Fallback to WebSocket relay if P2P fails or node not initialized
|
|
480
541
|
if (this.config.relayWsUrl) {
|
|
481
|
-
console.log('[ByteCave] Attempting WebSocket storage via relay');
|
|
542
|
+
console.log('[ByteCave] Attempting WebSocket storage via relay (fallback)');
|
|
482
543
|
|
|
483
544
|
try {
|
|
484
545
|
if (!this.storageWsClient) {
|
|
@@ -503,7 +564,7 @@ Nonce: ${nonce}`;
|
|
|
503
564
|
});
|
|
504
565
|
|
|
505
566
|
if (result.success && result.cid) {
|
|
506
|
-
console.log('[ByteCave] ✓ WebSocket storage successful:', result.cid);
|
|
567
|
+
console.log('[ByteCave] ✓ WebSocket storage successful (fallback):', result.cid);
|
|
507
568
|
return {
|
|
508
569
|
success: true,
|
|
509
570
|
cid: result.cid,
|
|
@@ -516,68 +577,8 @@ Nonce: ${nonce}`;
|
|
|
516
577
|
console.warn('[ByteCave] WebSocket storage exception:', err.message);
|
|
517
578
|
}
|
|
518
579
|
}
|
|
519
|
-
|
|
520
|
-
// Fallback to P2P storage
|
|
521
|
-
if (!this.node) {
|
|
522
|
-
return { success: false, error: 'WebSocket storage failed and P2P node not initialized' };
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
console.log('[ByteCave] Falling back to P2P storage');
|
|
526
|
-
|
|
527
|
-
// Get all connected peers
|
|
528
|
-
const allPeers = this.node.getPeers();
|
|
529
|
-
const connectedPeerIds = allPeers.map(p => p.toString());
|
|
530
|
-
|
|
531
|
-
console.log('[ByteCave] Store - connected storage peers:', connectedPeerIds.length);
|
|
532
|
-
|
|
533
|
-
if (connectedPeerIds.length === 0) {
|
|
534
|
-
return { success: false, error: 'WebSocket storage failed and no P2P peers available' };
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
// Prioritize registered peers from knownPeers
|
|
538
|
-
const registeredPeerIds = Array.from(this.knownPeers.values())
|
|
539
|
-
.filter(p => p.isRegistered && connectedPeerIds.includes(p.peerId))
|
|
540
|
-
.map(p => p.peerId);
|
|
541
|
-
|
|
542
|
-
const storagePeerIds = registeredPeerIds.length > 0
|
|
543
|
-
? [...registeredPeerIds, ...connectedPeerIds.filter(id => !registeredPeerIds.includes(id))]
|
|
544
|
-
: connectedPeerIds;
|
|
545
|
-
|
|
546
|
-
const errors: string[] = [];
|
|
547
|
-
for (const peerId of storagePeerIds) {
|
|
548
|
-
console.log('[ByteCave] Attempting P2P store to peer:', peerId.slice(0, 12) + '...');
|
|
549
|
-
|
|
550
|
-
try {
|
|
551
|
-
const result = await p2pProtocolClient.storeToPeer(
|
|
552
|
-
peerId,
|
|
553
|
-
dataArray,
|
|
554
|
-
mimeType || 'application/octet-stream',
|
|
555
|
-
authorization,
|
|
556
|
-
false, // shouldVerifyOnChain - false for browser test storage
|
|
557
|
-
hashIdToken
|
|
558
|
-
);
|
|
559
|
-
|
|
560
|
-
if (result.success && result.cid) {
|
|
561
|
-
console.log('[ByteCave] ✓ P2P store successful:', result.cid);
|
|
562
|
-
return {
|
|
563
|
-
success: true,
|
|
564
|
-
cid: result.cid,
|
|
565
|
-
peerId
|
|
566
|
-
};
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
const errorMsg = `${peerId.slice(0, 12)}: ${result.error}`;
|
|
570
|
-
console.warn('[ByteCave] ✗ P2P store failed:', errorMsg);
|
|
571
|
-
errors.push(errorMsg);
|
|
572
|
-
} catch (err: any) {
|
|
573
|
-
const errorMsg = `${peerId.slice(0, 12)}: ${err.message}`;
|
|
574
|
-
console.error('[ByteCave] ✗ P2P store exception:', errorMsg);
|
|
575
|
-
errors.push(errorMsg);
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
580
|
|
|
579
|
-
|
|
580
|
-
return { success: false, error: `All storage methods failed: ${errors.join('; ')}` };
|
|
581
|
+
return { success: false, error: 'All storage methods failed (P2P and WebSocket relay)' };
|
|
581
582
|
}
|
|
582
583
|
|
|
583
584
|
/**
|