@leofcoin/peernet 1.1.19 → 1.1.21

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,2 +1,2 @@
1
- export { P as default } from './peernet-173d15f5.js';
1
+ export { P as default } from './peernet-83538246.js';
2
2
  import './value-157ab062.js';
@@ -559,18 +559,19 @@ class Peernet {
559
559
  pubsub.publish('peer:connected', peer);
560
560
  // todo: cleanup discovered
561
561
  });
562
+ pubsub.subscribe('peer:left', this.#peerLeft.bind(this));
562
563
  /**
563
564
  * converts data -> message -> proto
564
565
  * @see DataHandler
565
566
  */
566
567
  pubsub.subscribe('peer:data', dataHandler);
567
568
  if (globalThis.navigator) {
568
- globalThis.addEventListener('beforeunload', async () => this.client.close());
569
+ globalThis.addEventListener('beforeunload', async () => this.client.destroy());
569
570
  }
570
571
  else {
571
572
  process.on('SIGTERM', async () => {
572
573
  process.stdin.resume();
573
- await this.client.close();
574
+ await this.client.destroy();
574
575
  process.exit();
575
576
  });
576
577
  }
@@ -591,16 +592,24 @@ class Peernet {
591
592
  this.#started = true;
592
593
  this.#starting = false;
593
594
  }
595
+ #peerLeft(peer) {
596
+ for (const [id, _peer] of Object.entries(this.#connections)) {
597
+ if (peer.id === peer.id) {
598
+ delete this.#connections[id];
599
+ this.removePeer(_peer);
600
+ }
601
+ }
602
+ }
594
603
  addRequestHandler(name, method) {
595
604
  this.requestProtos[name] = method;
596
605
  }
597
606
  async sendMessage(peer, id, data) {
598
- // if (peer.readyState === 'open') {
599
- await peer.send(data, id);
600
- this.bw.up += data.length;
601
- // } else if (peer.readyState === 'closed') {
602
- // this.removePeer(peer)
603
- // }
607
+ if (peer.connected) {
608
+ await peer.send(data, id);
609
+ this.bw.up += data.length;
610
+ }
611
+ else
612
+ this.removePeer(peer);
604
613
  }
605
614
  async handleDHT(peer, id, proto) {
606
615
  let { hash, store } = proto.decoded;
@@ -1004,7 +1013,7 @@ class Peernet {
1004
1013
  globalSub.subscribe(topic, callback);
1005
1014
  }
1006
1015
  async removePeer(peer) {
1007
- return this.client.removePeer(peer);
1016
+ return this.client._removePeer(peer);
1008
1017
  }
1009
1018
  get Buffer() {
1010
1019
  return Buffer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leofcoin/peernet",
3
- "version": "1.1.19",
3
+ "version": "1.1.21",
4
4
  "description": "",
5
5
  "main": "src/peernet.js",
6
6
  "exports": {
package/src/peernet.ts CHANGED
@@ -242,6 +242,8 @@ export default class Peernet {
242
242
  // todo: cleanup discovered
243
243
  })
244
244
 
245
+ pubsub.subscribe('peer:left', this.#peerLeft.bind(this))
246
+
245
247
  /**
246
248
  * converts data -> message -> proto
247
249
  * @see DataHandler
@@ -249,11 +251,11 @@ export default class Peernet {
249
251
  pubsub.subscribe('peer:data', dataHandler)
250
252
 
251
253
  if (globalThis.navigator) {
252
- globalThis.addEventListener('beforeunload', async () => this.client.close());
254
+ globalThis.addEventListener('beforeunload', async () => this.client.destroy());
253
255
  } else {
254
256
  process.on('SIGTERM', async () => {
255
257
  process.stdin.resume();
256
- await this.client.close()
258
+ await this.client.destroy()
257
259
  process.exit()
258
260
  });
259
261
  }
@@ -275,19 +277,25 @@ export default class Peernet {
275
277
  this.#starting = false
276
278
  }
277
279
 
280
+ #peerLeft(peer) {
281
+ for (const [id, _peer] of Object.entries(this.#connections)) {
282
+ if (peer.id === peer.id) {
283
+ delete this.#connections[id]
284
+ this.removePeer(_peer)
285
+ }
286
+ }
287
+
288
+ }
289
+
278
290
  addRequestHandler(name, method) {
279
291
  this.requestProtos[name] = method
280
292
  }
281
293
 
282
294
  async sendMessage(peer, id, data) {
283
-
284
- // if (peer.readyState === 'open') {
295
+ if (peer.connected) {
285
296
  await peer.send(data, id)
286
297
  this.bw.up += data.length
287
- // } else if (peer.readyState === 'closed') {
288
- // this.removePeer(peer)
289
- // }
290
-
298
+ } else this.removePeer(peer)
291
299
  }
292
300
 
293
301
  async handleDHT(peer, id, proto) {
@@ -712,7 +720,7 @@ export default class Peernet {
712
720
  }
713
721
 
714
722
  async removePeer(peer) {
715
- return this.client.removePeer(peer)
723
+ return this.client._removePeer(peer)
716
724
  }
717
725
 
718
726
  get Buffer() {