@leofcoin/peernet 1.1.70 → 1.1.72

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 { M as MultiWallet, e as encrypt, b as base58$1 } from './peernet-509d1c89.js';
1
+ import { M as MultiWallet, e as encrypt, b as base58$1 } from './peernet-fa94440c.js';
2
2
  import './value-4e80eeeb.js';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { F as FormatInterface } from './peernet-509d1c89.js';
1
+ import { F as FormatInterface } from './peernet-fa94440c.js';
2
2
  import './value-4e80eeeb.js';
3
3
 
4
4
  var proto$b = {
@@ -8,58 +8,62 @@ globalThis.debug = text => {
8
8
  if (globalThis.DEBUG) console.log('\x1b[34m\x1b[1m%s', text, '\x1b[0m'); // bright blue
9
9
  };
10
10
 
11
- class LittlePubSub {
12
- subscribers = {};
13
- verbose;
14
- constructor(verbose) {
15
- this.verbose = verbose;
16
- }
17
- _handleContext(handler, context) {
18
- if (typeof context === 'undefined') {
19
- context = handler;
20
- }
21
- return context;
22
- }
23
- hasSubscribers(event) {
24
- return this.subscribers[event] ? true : false;
25
- }
26
- subscribe(event, handler, context) {
27
- if (!this.hasSubscribers(event))
28
- this.subscribers[event] = { handlers: [], value: undefined };
29
- context = this._handleContext(handler, context);
30
- this.subscribers[event].handlers.push(handler.bind(context));
31
- }
32
- unsubscribe(event, handler, context) {
33
- if (!this.hasSubscribers(event))
34
- return;
35
- context = this._handleContext(handler, context);
36
- const index = this.subscribers[event].handlers.indexOf(handler.bind(context));
37
- this.subscribers[event].handlers.splice(index);
38
- if (this.subscribers[event].handlers.length === 0)
39
- delete this.subscribers[event];
40
- }
41
- publish(event, value) {
42
- // always set value even when having no subscribers
43
- if (!this.hasSubscribers(event))
44
- this.subscribers[event] = {
45
- handlers: []
46
- };
47
- const oldValue = this.subscribers[event]?.value;
48
- this.subscribers[event].value = value;
49
- if (this.verbose || oldValue !== value)
50
- for (const handler of this.subscribers[event].handlers) {
51
- handler(value, oldValue);
52
- }
53
- }
54
- once(event) {
55
- return new Promise((resolve) => {
56
- const cb = (value) => {
57
- this.unsubscribe(event, cb);
58
- resolve(value);
59
- };
60
- this.subscribe(event, cb);
61
- });
62
- }
11
+ class LittlePubSub {
12
+ subscribers = {};
13
+ verbose;
14
+ constructor(verbose) {
15
+ this.verbose = verbose;
16
+ }
17
+ _handleContext(handler, context) {
18
+ if (typeof context === 'undefined') {
19
+ context = handler;
20
+ }
21
+ return context;
22
+ }
23
+ hasSubscribers(event) {
24
+ return this.subscribers[event] ? true : false;
25
+ }
26
+ subscribe(event, handler, context) {
27
+ if (!this.hasSubscribers(event))
28
+ this.subscribers[event] = { handlers: [], value: undefined };
29
+ context = this._handleContext(handler, context);
30
+ this.subscribers[event].handlers.push(handler.bind(context));
31
+ }
32
+ unsubscribe(event, handler, context) {
33
+ if (!this.hasSubscribers(event))
34
+ return;
35
+ context = this._handleContext(handler, context);
36
+ const index = this.subscribers[event].handlers.indexOf(handler.bind(context));
37
+ this.subscribers[event].handlers.splice(index);
38
+ if (this.subscribers[event].handlers.length === 0)
39
+ delete this.subscribers[event];
40
+ }
41
+ publish(event, value, verbose) {
42
+ // always set value even when having no subscribers
43
+ if (!this.hasSubscribers(event))
44
+ this.subscribers[event] = {
45
+ handlers: []
46
+ };
47
+ const oldValue = this.subscribers[event]?.value;
48
+ if (this.verbose || verbose || oldValue !== value) {
49
+ this.subscribers[event].value = value;
50
+ for (const handler of this.subscribers[event].handlers) {
51
+ handler(value, oldValue);
52
+ }
53
+ }
54
+ }
55
+ publishVerbose(event, value) {
56
+ this.publish(event, value, true);
57
+ }
58
+ once(event) {
59
+ return new Promise((resolve) => {
60
+ const cb = (value) => {
61
+ resolve(value);
62
+ this.unsubscribe(event, cb);
63
+ };
64
+ this.subscribe(event, cb);
65
+ });
66
+ }
63
67
  }
64
68
 
65
69
  // base-x encoding / decoding
@@ -27088,7 +27092,7 @@ class Identity {
27088
27092
  this.selectedAccount = new TextDecoder().decode(selected);
27089
27093
  }
27090
27094
  else {
27091
- const importee = await import(/* webpackChunkName: "generate-account" */ './index-2836cc96.js');
27095
+ const importee = await import(/* webpackChunkName: "generate-account" */ './index-687f692b.js');
27092
27096
  const { identity, accounts } = await importee.default(password, this.network);
27093
27097
  await globalThis.accountStore.put('public', JSON.stringify({ walletId: identity.walletId }));
27094
27098
  await globalThis.walletStore.put('version', String(1));
@@ -27279,7 +27283,7 @@ class Peernet {
27279
27283
  this.root = options.root;
27280
27284
  const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile
27281
27285
  // FolderMessageResponse
27282
- } = await import(/* webpackChunkName: "messages" */ './messages-554d2a85.js');
27286
+ } = await import(/* webpackChunkName: "messages" */ './messages-1c117282.js');
27283
27287
  /**
27284
27288
  * proto Object containing protos
27285
27289
  * @type {Object}
@@ -27489,14 +27493,14 @@ class Peernet {
27489
27493
  }
27490
27494
  globalThis.debug(`star ${id} left`);
27491
27495
  };
27492
- #peerLeft(peer, star) {
27496
+ #peerLeft = (peer, star) => {
27493
27497
  const id = peer.peerId || peer;
27494
27498
  if (this.#connections[id]) {
27495
27499
  this.#connections[id].destroy();
27496
27500
  delete this.#connections[id];
27497
27501
  }
27498
27502
  globalThis.debug(`peer ${id} left`);
27499
- }
27503
+ };
27500
27504
  #createRTCPeerConnection = (peerId, star, version, initiator = false) => {
27501
27505
  const peer = new Peer({
27502
27506
  initiator: initiator,
@@ -27514,8 +27518,7 @@ class Peernet {
27514
27518
  #peerJoined = async ({ peerId, version }, star) => {
27515
27519
  // check if peer rejoined before the previous connection closed
27516
27520
  if (this.#connections[peerId]) {
27517
- if (this.#connections[peerId].connected)
27518
- this.#connections[peerId].destroy();
27521
+ this.#connections[peerId].destroy();
27519
27522
  delete this.#connections[peerId];
27520
27523
  }
27521
27524
  // RTCPeerConnection
@@ -27553,28 +27556,38 @@ class Peernet {
27553
27556
  };
27554
27557
  #peerClose = (peer) => {
27555
27558
  if (this.#connections[peer.peerId]) {
27556
- this.#connections[peer.peerId].destroy();
27559
+ peer.destroy();
27557
27560
  delete this.#connections[peer.peerId];
27558
27561
  }
27559
27562
  globalThis.debug(`closed ${peer.peerId}'s connection`);
27560
27563
  };
27561
27564
  #peerConnect = (peer) => {
27562
27565
  globalThis.debug(`${peer.peerId} connected`);
27563
- globalThis.pubsub.publish(this.#connectEvent, peer.peerId);
27566
+ globalThis.pubsub.publishVerbose(this.#connectEvent, peer.peerId);
27564
27567
  };
27565
- #noticeMessage = (message, id) => {
27568
+ #noticeMessage = (message, id, from, peer) => {
27566
27569
  if (globalThis.pubsub.subscribers[id]) {
27567
- globalThis.pubsub.publish(id, new Uint8Array(message));
27570
+ globalThis.pubsub.publish(id, {
27571
+ data: new Uint8Array(Object.values(message)),
27572
+ id,
27573
+ from,
27574
+ peer
27575
+ });
27568
27576
  }
27569
27577
  else {
27570
- globalThis.pubsub.publish('peer:data', new Uint8Array(message));
27578
+ globalThis.pubsub.publish('peer:data', {
27579
+ data: new Uint8Array(Object.values(message)),
27580
+ id,
27581
+ from,
27582
+ peer
27583
+ });
27571
27584
  }
27572
27585
  };
27573
27586
  #peerData = (peer, data) => {
27574
27587
  const { id, size, chunk } = JSON.parse(new TextDecoder().decode(data));
27575
27588
  peer.bw.down += size;
27576
27589
  if (size <= MAX_MESSAGE_SIZE) {
27577
- this.#noticeMessage(chunk, id);
27590
+ this.#noticeMessage(chunk, id, peer.peerId, peer);
27578
27591
  }
27579
27592
  else {
27580
27593
  if (!this.#messagesToHandle[id])
@@ -27584,7 +27597,7 @@ class Peernet {
27584
27597
  ...Object.values(chunk)
27585
27598
  ];
27586
27599
  if (this.#messagesToHandle[id].length === Number(size)) {
27587
- this.#noticeMessage(this.#messagesToHandle[id], id);
27600
+ this.#noticeMessage(this.#messagesToHandle[id], id, peer.peerId, peer);
27588
27601
  delete this.#messagesToHandle[id];
27589
27602
  }
27590
27603
  }
@@ -27602,7 +27615,7 @@ class Peernet {
27602
27615
  Object.values(this.#connections).map((connection) => connection.destroy()),
27603
27616
  Object.values(this.#stars).map((connection) => connection.close(0))
27604
27617
  ];
27605
- await Promise.allSettled(promises);
27618
+ return Promise.allSettled(promises);
27606
27619
  }
27607
27620
  };
27608
27621
  /**
@@ -27635,9 +27648,23 @@ class Peernet {
27635
27648
  if (peer.connected) {
27636
27649
  await peer.send(data, id);
27637
27650
  this.bw.up += data.length;
27651
+ return id;
27652
+ }
27653
+ else {
27654
+ return new Promise((resolve, reject) => {
27655
+ const onError = (error) => {
27656
+ this.removePeer(peer);
27657
+ reject(error);
27658
+ };
27659
+ peer.once('error', onError);
27660
+ peer.once('connect', async () => {
27661
+ await peer.send(data, id);
27662
+ this.bw.up += data.length;
27663
+ peer.removeListener('error', onError);
27664
+ resolve(id);
27665
+ });
27666
+ });
27638
27667
  }
27639
- else
27640
- this.removePeer(peer);
27641
27668
  }
27642
27669
  async handleDHT(peer, id, proto) {
27643
27670
  let { hash, store } = proto.decoded;
@@ -106,7 +106,7 @@ export default class Peernet {
106
106
  }, password: string): Promise<Peernet>;
107
107
  start(): Promise<void>;
108
108
  addRequestHandler(name: any, method: any): void;
109
- sendMessage(peer: any, id: any, data: any): Promise<void>;
109
+ sendMessage(peer: any, id: any, data: any): Promise<any>;
110
110
  handleDHT(peer: any, id: any, proto: any): Promise<void>;
111
111
  handleData(peer: any, id: any, proto: any): Promise<void>;
112
112
  handleRequest(peer: any, id: any, proto: any): Promise<void>;
@@ -1,2 +1,2 @@
1
- export { P as default } from './peernet-509d1c89.js';
1
+ export { P as default } from './peernet-fa94440c.js';
2
2
  import './value-4e80eeeb.js';
@@ -665,9 +665,23 @@ class Peernet {
665
665
  if (peer.connected) {
666
666
  await peer.send(data, id);
667
667
  this.bw.up += data.length;
668
+ return id;
669
+ }
670
+ else {
671
+ return new Promise((resolve, reject) => {
672
+ const onError = (error) => {
673
+ this.removePeer(peer);
674
+ reject(error);
675
+ };
676
+ peer.once('error', onError);
677
+ peer.once('connect', async () => {
678
+ await peer.send(data, id);
679
+ this.bw.up += data.length;
680
+ peer.removeListener('error', onError);
681
+ resolve(id);
682
+ });
683
+ });
668
684
  }
669
- else
670
- this.removePeer(peer);
671
685
  }
672
686
  async handleDHT(peer, id, proto) {
673
687
  let { hash, store } = proto.decoded;
@@ -106,7 +106,7 @@ export default class Peernet {
106
106
  }, password: string): Promise<Peernet>;
107
107
  start(): Promise<void>;
108
108
  addRequestHandler(name: any, method: any): void;
109
- sendMessage(peer: any, id: any, data: any): Promise<void>;
109
+ sendMessage(peer: any, id: any, data: any): Promise<any>;
110
110
  handleDHT(peer: any, id: any, proto: any): Promise<void>;
111
111
  handleData(peer: any, id: any, proto: any): Promise<void>;
112
112
  handleRequest(peer: any, id: any, proto: any): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leofcoin/peernet",
3
- "version": "1.1.70",
3
+ "version": "1.1.72",
4
4
  "description": "",
5
5
  "main": "src/peernet.js",
6
6
  "exports": {
package/src/peernet.ts CHANGED
@@ -348,7 +348,22 @@ export default class Peernet {
348
348
  if (peer.connected) {
349
349
  await peer.send(data, id)
350
350
  this.bw.up += data.length
351
- } else this.removePeer(peer)
351
+ return id
352
+ } else {
353
+ return new Promise((resolve, reject) => {
354
+ const onError = (error) => {
355
+ this.removePeer(peer)
356
+ reject(error)
357
+ }
358
+ peer.once('error', onError)
359
+ peer.once('connect', async () => {
360
+ await peer.send(data, id)
361
+ this.bw.up += data.length
362
+ peer.removeListener('error', onError)
363
+ resolve(id)
364
+ })
365
+ })
366
+ }
352
367
  }
353
368
 
354
369
  async handleDHT(peer, id, proto) {