@leofcoin/peernet 1.1.93 → 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-BScgNzXE.js → client-BGaLaHk2.js} +1 -1
- package/exports/browser/messages/dht-response.d.ts +7 -0
- package/exports/browser/{messages-B9TrXtD1.js → messages-BqTna7yM.js} +4 -1
- package/exports/browser/{peernet-EWyOZqOu.js → peernet-BWKdRXeW.js} +20 -11
- package/exports/browser/peernet.d.ts +1 -1
- package/exports/browser/peernet.js +1 -1
- package/exports/{messages-BmpgEM4y.js → messages-DFPp9HMC.js} +3 -0
- package/exports/peernet.js +19 -10
- package/exports/types/messages/dht-response.d.ts +7 -0
- package/exports/types/peernet.d.ts +1 -1
- package/package.json +1 -1
- package/src/peernet.ts +20 -10
|
@@ -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)
|
|
@@ -8622,6 +8622,7 @@ class Peernet {
|
|
|
8622
8622
|
}
|
|
8623
8623
|
catch (error) {
|
|
8624
8624
|
console.error(`Error while walking ${peerId}`, error);
|
|
8625
|
+
return undefined;
|
|
8625
8626
|
}
|
|
8626
8627
|
};
|
|
8627
8628
|
let walks = [];
|
|
@@ -8630,7 +8631,7 @@ class Peernet {
|
|
|
8630
8631
|
walks.push(walk(peer, peerId));
|
|
8631
8632
|
}
|
|
8632
8633
|
}
|
|
8633
|
-
return Promise.
|
|
8634
|
+
return Promise.race(walks);
|
|
8634
8635
|
}
|
|
8635
8636
|
/**
|
|
8636
8637
|
* Override DHT behavior, try's finding the content three times
|
|
@@ -8687,18 +8688,26 @@ class Peernet {
|
|
|
8687
8688
|
throw nothingFoundError(hash);
|
|
8688
8689
|
debug(`found ${Object.keys(providers).length} provider(s) for ${hash}`);
|
|
8689
8690
|
// get closest peer on earth
|
|
8690
|
-
|
|
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}`);
|
|
8691
8696
|
// get peer instance by id
|
|
8692
8697
|
if (!closestPeer || !closestPeer.id)
|
|
8693
8698
|
return this.requestData(hash, store?.name || store);
|
|
8694
8699
|
const id = closestPeer.id;
|
|
8695
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);
|
|
8696
8710
|
if (peer?.connected) {
|
|
8697
|
-
let data = await new globalThis.peernet.protos['peernet-data']({
|
|
8698
|
-
hash,
|
|
8699
|
-
store: store?.name || store
|
|
8700
|
-
});
|
|
8701
|
-
const node = await this.prepareMessage(data);
|
|
8702
8711
|
try {
|
|
8703
8712
|
if (peer)
|
|
8704
8713
|
data = await peer.request(node.encoded);
|
|
@@ -8724,10 +8733,10 @@ class Peernet {
|
|
|
8724
8733
|
catch (error) {
|
|
8725
8734
|
debug(`Error while requesting data from ${id}`, error);
|
|
8726
8735
|
// if error, remove provider
|
|
8727
|
-
this.dht.removeProvider(id, hash);
|
|
8728
8736
|
if (this.#peerAttempts[id] > 1) {
|
|
8729
8737
|
this.#peerAttempts[id] = 0;
|
|
8730
8738
|
debug(`Removed provider ${id} for ${hash} after 3 attempts`);
|
|
8739
|
+
this.dht.removeProvider(id, hash);
|
|
8731
8740
|
console.error(nothingFoundError(hash));
|
|
8732
8741
|
return undefined;
|
|
8733
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)
|
|
@@ -703,6 +703,7 @@ class Peernet {
|
|
|
703
703
|
}
|
|
704
704
|
catch (error) {
|
|
705
705
|
console.error(`Error while walking ${peerId}`, error);
|
|
706
|
+
return undefined;
|
|
706
707
|
}
|
|
707
708
|
};
|
|
708
709
|
let walks = [];
|
|
@@ -711,7 +712,7 @@ class Peernet {
|
|
|
711
712
|
walks.push(walk(peer, peerId));
|
|
712
713
|
}
|
|
713
714
|
}
|
|
714
|
-
return Promise.
|
|
715
|
+
return Promise.race(walks);
|
|
715
716
|
}
|
|
716
717
|
/**
|
|
717
718
|
* Override DHT behavior, try's finding the content three times
|
|
@@ -768,18 +769,26 @@ class Peernet {
|
|
|
768
769
|
throw nothingFoundError(hash);
|
|
769
770
|
debug(`found ${Object.keys(providers).length} provider(s) for ${hash}`);
|
|
770
771
|
// get closest peer on earth
|
|
771
|
-
|
|
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}`);
|
|
772
777
|
// get peer instance by id
|
|
773
778
|
if (!closestPeer || !closestPeer.id)
|
|
774
779
|
return this.requestData(hash, store?.name || store);
|
|
775
780
|
const id = closestPeer.id;
|
|
776
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);
|
|
777
791
|
if (peer?.connected) {
|
|
778
|
-
let data = await new globalThis.peernet.protos['peernet-data']({
|
|
779
|
-
hash,
|
|
780
|
-
store: store?.name || store
|
|
781
|
-
});
|
|
782
|
-
const node = await this.prepareMessage(data);
|
|
783
792
|
try {
|
|
784
793
|
if (peer)
|
|
785
794
|
data = await peer.request(node.encoded);
|
|
@@ -805,10 +814,10 @@ class Peernet {
|
|
|
805
814
|
catch (error) {
|
|
806
815
|
debug(`Error while requesting data from ${id}`, error);
|
|
807
816
|
// if error, remove provider
|
|
808
|
-
this.dht.removeProvider(id, hash);
|
|
809
817
|
if (this.#peerAttempts[id] > 1) {
|
|
810
818
|
this.#peerAttempts[id] = 0;
|
|
811
819
|
debug(`Removed provider ${id} for ${hash} after 3 attempts`);
|
|
820
|
+
this.dht.removeProvider(id, hash);
|
|
812
821
|
console.error(nothingFoundError(hash));
|
|
813
822
|
return undefined;
|
|
814
823
|
}
|
package/package.json
CHANGED
package/src/peernet.ts
CHANGED
|
@@ -475,13 +475,14 @@ 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
|
|
|
482
482
|
if (proto.decoded.has) this.dht.addProvider(peerInfo, proto.decoded.hash)
|
|
483
483
|
} catch (error) {
|
|
484
484
|
console.error(`Error while walking ${peerId}`, error)
|
|
485
|
+
return undefined
|
|
485
486
|
}
|
|
486
487
|
}
|
|
487
488
|
let walks = []
|
|
@@ -490,7 +491,7 @@ export default class Peernet {
|
|
|
490
491
|
walks.push(walk(peer, peerId))
|
|
491
492
|
}
|
|
492
493
|
}
|
|
493
|
-
return Promise.
|
|
494
|
+
return Promise.race(walks)
|
|
494
495
|
}
|
|
495
496
|
|
|
496
497
|
/**
|
|
@@ -546,22 +547,30 @@ export default class Peernet {
|
|
|
546
547
|
if (!providers || (providers && Object.keys(providers).length === 0)) throw nothingFoundError(hash)
|
|
547
548
|
debug(`found ${Object.keys(providers).length} provider(s) for ${hash}`)
|
|
548
549
|
// get closest peer on earth
|
|
549
|
-
|
|
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]
|
|
550
553
|
|
|
554
|
+
debug(`closest peer for ${hash} is ${closestPeer?.address}`)
|
|
551
555
|
// get peer instance by id
|
|
552
556
|
if (!closestPeer || !closestPeer.id) return this.requestData(hash, store?.name || store)
|
|
553
557
|
|
|
554
558
|
const id = closestPeer.id
|
|
555
559
|
const peer = this.connections[id]
|
|
556
560
|
|
|
557
|
-
if (peer?.connected) {
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
})
|
|
561
|
+
if (!peer || !peer?.connected) {
|
|
562
|
+
this.dht.removeProvider(id, hash)
|
|
563
|
+
return this.requestData(hash, store?.name || store)
|
|
564
|
+
}
|
|
562
565
|
|
|
563
|
-
|
|
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)
|
|
564
572
|
|
|
573
|
+
if (peer?.connected) {
|
|
565
574
|
try {
|
|
566
575
|
if (peer) data = await peer.request(node.encoded)
|
|
567
576
|
else {
|
|
@@ -583,10 +592,11 @@ export default class Peernet {
|
|
|
583
592
|
} catch (error) {
|
|
584
593
|
debug(`Error while requesting data from ${id}`, error)
|
|
585
594
|
// if error, remove provider
|
|
586
|
-
this.dht.removeProvider(id, hash)
|
|
587
595
|
if (this.#peerAttempts[id] > 1) {
|
|
588
596
|
this.#peerAttempts[id] = 0
|
|
589
597
|
debug(`Removed provider ${id} for ${hash} after 3 attempts`)
|
|
598
|
+
|
|
599
|
+
this.dht.removeProvider(id, hash)
|
|
590
600
|
console.error(nothingFoundError(hash))
|
|
591
601
|
return undefined
|
|
592
602
|
}
|