@leofcoin/peernet 1.1.94 → 1.1.95
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/exports/browser/{client-BmW52yUu.js → client-BGaLaHk2.js} +1 -1
- package/exports/browser/messages/dht-response.d.ts +7 -0
- package/exports/browser/{messages-CaxCm2Mx.js → messages-BqTna7yM.js} +4 -1
- package/exports/browser/{peernet-CG0sdKM4.js → peernet-BWKdRXeW.js} +18 -10
- package/exports/browser/peernet.js +1 -1
- package/exports/{messages-BmpgEM4y.js → messages-DFPp9HMC.js} +3 -0
- package/exports/peernet.js +17 -9
- package/exports/types/messages/dht-response.d.ts +7 -0
- package/package.json +1 -1
- package/src/peernet.ts +18 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as FormatInterface } from './peernet-
|
|
1
|
+
import { F as FormatInterface } from './peernet-BWKdRXeW.js';
|
|
2
2
|
import './identity-Cn0iQbY3.js';
|
|
3
3
|
import './value-C3vAp-wb.js';
|
|
4
4
|
|
|
@@ -50,6 +50,9 @@ var proto$9 = {
|
|
|
50
50
|
has: Boolean()
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* @extends typeof {FormatInterface}
|
|
55
|
+
*/
|
|
53
56
|
class DHTMessageResponse extends FormatInterface {
|
|
54
57
|
get messageName() {
|
|
55
58
|
return 'PeernetDHTMessageResponse'
|
|
@@ -8372,7 +8372,7 @@ class Peernet {
|
|
|
8372
8372
|
this.root = options.root;
|
|
8373
8373
|
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile
|
|
8374
8374
|
// FolderMessageResponse
|
|
8375
|
-
} = await import(/* webpackChunkName: "messages" */ './messages-
|
|
8375
|
+
} = await import(/* webpackChunkName: "messages" */ './messages-BqTna7yM.js');
|
|
8376
8376
|
/**
|
|
8377
8377
|
* proto Object containing protos
|
|
8378
8378
|
* @type {Object}
|
|
@@ -8466,7 +8466,7 @@ class Peernet {
|
|
|
8466
8466
|
if (this.#starting || this.#started)
|
|
8467
8467
|
return;
|
|
8468
8468
|
this.#starting = true;
|
|
8469
|
-
const importee = await import('./client-
|
|
8469
|
+
const importee = await import('./client-BGaLaHk2.js');
|
|
8470
8470
|
/**
|
|
8471
8471
|
* @access public
|
|
8472
8472
|
* @type {PeernetClient}
|
|
@@ -8614,7 +8614,7 @@ class Peernet {
|
|
|
8614
8614
|
if (proto.name !== 'peernet-dht-response')
|
|
8615
8615
|
throw dhtError(proto.name);
|
|
8616
8616
|
const peerInfo = {
|
|
8617
|
-
|
|
8617
|
+
address: peer.remoteAddress,
|
|
8618
8618
|
id: peerId
|
|
8619
8619
|
};
|
|
8620
8620
|
if (proto.decoded.has)
|
|
@@ -8688,18 +8688,26 @@ class Peernet {
|
|
|
8688
8688
|
throw nothingFoundError(hash);
|
|
8689
8689
|
debug(`found ${Object.keys(providers).length} provider(s) for ${hash}`);
|
|
8690
8690
|
// get closest peer on earth
|
|
8691
|
-
|
|
8691
|
+
let closestPeer = await this.dht.closestPeer(Object.values(providers));
|
|
8692
|
+
// fallback to first provider if no closest peer found
|
|
8693
|
+
if (!closestPeer || !closestPeer.id)
|
|
8694
|
+
closestPeer = Object.values(providers)[0];
|
|
8695
|
+
debug(`closest peer for ${hash} is ${closestPeer?.address}`);
|
|
8692
8696
|
// get peer instance by id
|
|
8693
8697
|
if (!closestPeer || !closestPeer.id)
|
|
8694
8698
|
return this.requestData(hash, store?.name || store);
|
|
8695
8699
|
const id = closestPeer.id;
|
|
8696
8700
|
const peer = this.connections[id];
|
|
8701
|
+
if (!peer || !peer?.connected) {
|
|
8702
|
+
this.dht.removeProvider(id, hash);
|
|
8703
|
+
return this.requestData(hash, store?.name || store);
|
|
8704
|
+
}
|
|
8705
|
+
let data = await new globalThis.peernet.protos['peernet-data']({
|
|
8706
|
+
hash,
|
|
8707
|
+
store: store?.name || store
|
|
8708
|
+
});
|
|
8709
|
+
const node = await this.prepareMessage(data);
|
|
8697
8710
|
if (peer?.connected) {
|
|
8698
|
-
let data = await new globalThis.peernet.protos['peernet-data']({
|
|
8699
|
-
hash,
|
|
8700
|
-
store: store?.name || store
|
|
8701
|
-
});
|
|
8702
|
-
const node = await this.prepareMessage(data);
|
|
8703
8711
|
try {
|
|
8704
8712
|
if (peer)
|
|
8705
8713
|
data = await peer.request(node.encoded);
|
|
@@ -8725,10 +8733,10 @@ class Peernet {
|
|
|
8725
8733
|
catch (error) {
|
|
8726
8734
|
debug(`Error while requesting data from ${id}`, error);
|
|
8727
8735
|
// if error, remove provider
|
|
8728
|
-
this.dht.removeProvider(id, hash);
|
|
8729
8736
|
if (this.#peerAttempts[id] > 1) {
|
|
8730
8737
|
this.#peerAttempts[id] = 0;
|
|
8731
8738
|
debug(`Removed provider ${id} for ${hash} after 3 attempts`);
|
|
8739
|
+
this.dht.removeProvider(id, hash);
|
|
8732
8740
|
console.error(nothingFoundError(hash));
|
|
8733
8741
|
return undefined;
|
|
8734
8742
|
}
|
package/exports/peernet.js
CHANGED
|
@@ -453,7 +453,7 @@ class Peernet {
|
|
|
453
453
|
this.root = options.root;
|
|
454
454
|
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile
|
|
455
455
|
// FolderMessageResponse
|
|
456
|
-
} = await import(/* webpackChunkName: "messages" */ './messages-
|
|
456
|
+
} = await import(/* webpackChunkName: "messages" */ './messages-DFPp9HMC.js');
|
|
457
457
|
/**
|
|
458
458
|
* proto Object containing protos
|
|
459
459
|
* @type {Object}
|
|
@@ -695,7 +695,7 @@ class Peernet {
|
|
|
695
695
|
if (proto.name !== 'peernet-dht-response')
|
|
696
696
|
throw dhtError(proto.name);
|
|
697
697
|
const peerInfo = {
|
|
698
|
-
|
|
698
|
+
address: peer.remoteAddress,
|
|
699
699
|
id: peerId
|
|
700
700
|
};
|
|
701
701
|
if (proto.decoded.has)
|
|
@@ -769,18 +769,26 @@ class Peernet {
|
|
|
769
769
|
throw nothingFoundError(hash);
|
|
770
770
|
debug(`found ${Object.keys(providers).length} provider(s) for ${hash}`);
|
|
771
771
|
// get closest peer on earth
|
|
772
|
-
|
|
772
|
+
let closestPeer = await this.dht.closestPeer(Object.values(providers));
|
|
773
|
+
// fallback to first provider if no closest peer found
|
|
774
|
+
if (!closestPeer || !closestPeer.id)
|
|
775
|
+
closestPeer = Object.values(providers)[0];
|
|
776
|
+
debug(`closest peer for ${hash} is ${closestPeer?.address}`);
|
|
773
777
|
// get peer instance by id
|
|
774
778
|
if (!closestPeer || !closestPeer.id)
|
|
775
779
|
return this.requestData(hash, store?.name || store);
|
|
776
780
|
const id = closestPeer.id;
|
|
777
781
|
const peer = this.connections[id];
|
|
782
|
+
if (!peer || !peer?.connected) {
|
|
783
|
+
this.dht.removeProvider(id, hash);
|
|
784
|
+
return this.requestData(hash, store?.name || store);
|
|
785
|
+
}
|
|
786
|
+
let data = await new globalThis.peernet.protos['peernet-data']({
|
|
787
|
+
hash,
|
|
788
|
+
store: store?.name || store
|
|
789
|
+
});
|
|
790
|
+
const node = await this.prepareMessage(data);
|
|
778
791
|
if (peer?.connected) {
|
|
779
|
-
let data = await new globalThis.peernet.protos['peernet-data']({
|
|
780
|
-
hash,
|
|
781
|
-
store: store?.name || store
|
|
782
|
-
});
|
|
783
|
-
const node = await this.prepareMessage(data);
|
|
784
792
|
try {
|
|
785
793
|
if (peer)
|
|
786
794
|
data = await peer.request(node.encoded);
|
|
@@ -806,10 +814,10 @@ class Peernet {
|
|
|
806
814
|
catch (error) {
|
|
807
815
|
debug(`Error while requesting data from ${id}`, error);
|
|
808
816
|
// if error, remove provider
|
|
809
|
-
this.dht.removeProvider(id, hash);
|
|
810
817
|
if (this.#peerAttempts[id] > 1) {
|
|
811
818
|
this.#peerAttempts[id] = 0;
|
|
812
819
|
debug(`Removed provider ${id} for ${hash} after 3 attempts`);
|
|
820
|
+
this.dht.removeProvider(id, hash);
|
|
813
821
|
console.error(nothingFoundError(hash));
|
|
814
822
|
return undefined;
|
|
815
823
|
}
|
package/package.json
CHANGED
package/src/peernet.ts
CHANGED
|
@@ -475,7 +475,7 @@ export default class Peernet {
|
|
|
475
475
|
if (proto.name !== 'peernet-dht-response') throw dhtError(proto.name)
|
|
476
476
|
|
|
477
477
|
const peerInfo = {
|
|
478
|
-
|
|
478
|
+
address: peer.remoteAddress,
|
|
479
479
|
id: peerId
|
|
480
480
|
}
|
|
481
481
|
|
|
@@ -547,22 +547,30 @@ export default class Peernet {
|
|
|
547
547
|
if (!providers || (providers && Object.keys(providers).length === 0)) throw nothingFoundError(hash)
|
|
548
548
|
debug(`found ${Object.keys(providers).length} provider(s) for ${hash}`)
|
|
549
549
|
// get closest peer on earth
|
|
550
|
-
|
|
550
|
+
let closestPeer: DHTProvider = await this.dht.closestPeer(Object.values(providers))
|
|
551
|
+
// fallback to first provider if no closest peer found
|
|
552
|
+
if (!closestPeer || !closestPeer.id) closestPeer = Object.values(providers)[0]
|
|
551
553
|
|
|
554
|
+
debug(`closest peer for ${hash} is ${closestPeer?.address}`)
|
|
552
555
|
// get peer instance by id
|
|
553
556
|
if (!closestPeer || !closestPeer.id) return this.requestData(hash, store?.name || store)
|
|
554
557
|
|
|
555
558
|
const id = closestPeer.id
|
|
556
559
|
const peer = this.connections[id]
|
|
557
560
|
|
|
558
|
-
if (peer?.connected) {
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
})
|
|
561
|
+
if (!peer || !peer?.connected) {
|
|
562
|
+
this.dht.removeProvider(id, hash)
|
|
563
|
+
return this.requestData(hash, store?.name || store)
|
|
564
|
+
}
|
|
563
565
|
|
|
564
|
-
|
|
566
|
+
let data = await new globalThis.peernet.protos['peernet-data']({
|
|
567
|
+
hash,
|
|
568
|
+
store: store?.name || store
|
|
569
|
+
})
|
|
570
|
+
|
|
571
|
+
const node = await this.prepareMessage(data)
|
|
565
572
|
|
|
573
|
+
if (peer?.connected) {
|
|
566
574
|
try {
|
|
567
575
|
if (peer) data = await peer.request(node.encoded)
|
|
568
576
|
else {
|
|
@@ -584,10 +592,11 @@ export default class Peernet {
|
|
|
584
592
|
} catch (error) {
|
|
585
593
|
debug(`Error while requesting data from ${id}`, error)
|
|
586
594
|
// if error, remove provider
|
|
587
|
-
this.dht.removeProvider(id, hash)
|
|
588
595
|
if (this.#peerAttempts[id] > 1) {
|
|
589
596
|
this.#peerAttempts[id] = 0
|
|
590
597
|
debug(`Removed provider ${id} for ${hash} after 3 attempts`)
|
|
598
|
+
|
|
599
|
+
this.dht.removeProvider(id, hash)
|
|
591
600
|
console.error(nothingFoundError(hash))
|
|
592
601
|
return undefined
|
|
593
602
|
}
|