@leofcoin/peernet 1.1.18 → 1.1.20

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-ea3ab655.js';
1
+ export { P as default } from './peernet-b366d9d4.js';
2
2
  import './value-157ab062.js';
@@ -483,7 +483,7 @@ class Peernet {
483
483
  * @return {Array} peerId
484
484
  */
485
485
  get peers() {
486
- return Object.values(this.#connections);
486
+ return Object.entries(this.#connections);
487
487
  }
488
488
  get connections() {
489
489
  return Object.values(this.#connections);
@@ -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,25 @@ 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.readyState === 'open') {
608
+ await peer.send(data, id);
609
+ this.bw.up += data.length;
610
+ }
611
+ else if (peer.readyState === 'closed') {
612
+ this.removePeer(peer);
613
+ }
604
614
  }
605
615
  async handleDHT(peer, id, proto) {
606
616
  let { hash, store } = proto.decoded;
@@ -1004,7 +1014,7 @@ class Peernet {
1004
1014
  globalSub.subscribe(topic, callback);
1005
1015
  }
1006
1016
  async removePeer(peer) {
1007
- return this.client.removePeer(peer);
1017
+ return this.client._removePeer(peer);
1008
1018
  }
1009
1019
  get Buffer() {
1010
1020
  return Buffer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leofcoin/peernet",
3
- "version": "1.1.18",
3
+ "version": "1.1.20",
4
4
  "description": "",
5
5
  "main": "src/peernet.js",
6
6
  "exports": {
package/src/peernet.ts CHANGED
@@ -136,7 +136,7 @@ export default class Peernet {
136
136
  * @return {Array} peerId
137
137
  */
138
138
  get peers() {
139
- return Object.values(this.#connections)
139
+ return Object.entries(this.#connections)
140
140
  }
141
141
 
142
142
  get connections() {
@@ -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,18 +277,28 @@ 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
295
 
284
- // if (peer.readyState === 'open') {
296
+ if (peer.readyState === 'open') {
285
297
  await peer.send(data, id)
286
298
  this.bw.up += data.length
287
- // } else if (peer.readyState === 'closed') {
288
- // this.removePeer(peer)
289
- // }
299
+ } else if (peer.readyState === 'closed') {
300
+ this.removePeer(peer)
301
+ }
290
302
 
291
303
  }
292
304
 
@@ -712,7 +724,7 @@ export default class Peernet {
712
724
  }
713
725
 
714
726
  async removePeer(peer) {
715
- return this.client.removePeer(peer)
727
+ return this.client._removePeer(peer)
716
728
  }
717
729
 
718
730
  get Buffer() {