@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.
@@ -1,4 +1,4 @@
1
- import { L as LittlePubSub } from './peernet-CG0sdKM4.js';
1
+ import { L as LittlePubSub } from './peernet-BWKdRXeW.js';
2
2
  import './identity-Cn0iQbY3.js';
3
3
  import './value-C3vAp-wb.js';
4
4
 
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @extends typeof {FormatInterface}
3
+ */
4
+ export default class DHTMessageResponse {
5
+ constructor(data: any);
6
+ get messageName(): string;
7
+ }
@@ -1,4 +1,4 @@
1
- import { F as FormatInterface } from './peernet-CG0sdKM4.js';
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-CaxCm2Mx.js');
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-BmW52yUu.js');
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
- ...peer.connectionStats,
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
- const closestPeer = Object.values(providers)[0];
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
  }
@@ -1,3 +1,3 @@
1
- export { P as default } from './peernet-CG0sdKM4.js';
1
+ export { P as default } from './peernet-BWKdRXeW.js';
2
2
  import './identity-Cn0iQbY3.js';
3
3
  import './value-C3vAp-wb.js';
@@ -48,6 +48,9 @@ var proto$9 = {
48
48
  has: Boolean()
49
49
  };
50
50
 
51
+ /**
52
+ * @extends typeof {FormatInterface}
53
+ */
51
54
  class DHTMessageResponse extends FormatInterface {
52
55
  get messageName() {
53
56
  return 'PeernetDHTMessageResponse'
@@ -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-BmpgEM4y.js');
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
- ...peer.connectionStats,
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
- const closestPeer = Object.values(providers)[0];
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
  }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @extends typeof {FormatInterface}
3
+ */
4
+ export default class DHTMessageResponse {
5
+ constructor(data: any);
6
+ get messageName(): string;
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leofcoin/peernet",
3
- "version": "1.1.94",
3
+ "version": "1.1.95",
4
4
  "description": "",
5
5
  "browser": "./exports/browser/peernet.js",
6
6
  "exports": {
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
- ...peer.connectionStats,
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
- const closestPeer: DHTProvider = Object.values(providers)[0]
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
- let data = await new globalThis.peernet.protos['peernet-data']({
560
- hash,
561
- store: store?.name || store
562
- })
561
+ if (!peer || !peer?.connected) {
562
+ this.dht.removeProvider(id, hash)
563
+ return this.requestData(hash, store?.name || store)
564
+ }
563
565
 
564
- const node = await this.prepareMessage(data)
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
  }