@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.
- package/exports/browser/{index-2836cc96.js → index-687f692b.js} +1 -1
- package/exports/browser/{messages-554d2a85.js → messages-1c117282.js} +1 -1
- package/exports/browser/{peernet-509d1c89.js → peernet-fa94440c.js} +95 -68
- package/exports/browser/peernet.d.ts +1 -1
- package/exports/browser/peernet.js +1 -1
- package/exports/peernet.js +16 -2
- package/exports/types/peernet.d.ts +1 -1
- package/package.json +1 -1
- package/src/peernet.ts +16 -1
|
@@ -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.
|
|
49
|
-
|
|
50
|
-
for (const handler of this.subscribers[event].handlers) {
|
|
51
|
-
handler(value, oldValue);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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,
|
|
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',
|
|
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
|
-
|
|
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<
|
|
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-
|
|
1
|
+
export { P as default } from './peernet-fa94440c.js';
|
|
2
2
|
import './value-4e80eeeb.js';
|
package/exports/peernet.js
CHANGED
|
@@ -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<
|
|
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
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
|
-
|
|
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) {
|