@leofcoin/peernet 0.8.12 → 0.9.2
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/dist/browser/peernet.js +82 -28
- package/dist/commonjs/codec.js +5 -0
- package/dist/commonjs/peernet-message-b6925673.js +32 -0
- package/dist/commonjs/peernet.js +67 -18
- package/dist/module/peernet.js +82 -28
- package/package.json +1 -1
package/dist/browser/peernet.js
CHANGED
|
@@ -261,7 +261,7 @@ class LeofcoinStorage$1 {
|
|
|
261
261
|
|
|
262
262
|
}
|
|
263
263
|
|
|
264
|
-
var version = "0.
|
|
264
|
+
var version = "0.9.1";
|
|
265
265
|
|
|
266
266
|
var api$1 = {
|
|
267
267
|
version: ({send}) => send({client: '@peernet/api/http', version}),
|
|
@@ -916,7 +916,7 @@ class LeofcoinStorageClient {
|
|
|
916
916
|
}
|
|
917
917
|
}
|
|
918
918
|
|
|
919
|
-
var proto$
|
|
919
|
+
var proto$a = `
|
|
920
920
|
// PeernetMessage
|
|
921
921
|
message PeernetMessage {
|
|
922
922
|
required bytes data = 1;
|
|
@@ -999,6 +999,11 @@ var codecs = {
|
|
|
999
999
|
hashAlg: 'keccak-256', // ,
|
|
1000
1000
|
// testnet: 'olivia'
|
|
1001
1001
|
},
|
|
1002
|
+
// chat message
|
|
1003
|
+
'chat-message': {
|
|
1004
|
+
codec: '636d',
|
|
1005
|
+
hashAlg: 'dbl-keccak-512',
|
|
1006
|
+
},
|
|
1002
1007
|
};
|
|
1003
1008
|
|
|
1004
1009
|
class PeernetCodec {
|
|
@@ -1390,11 +1395,11 @@ class PeernetMessage extends FormatInterface {
|
|
|
1390
1395
|
|
|
1391
1396
|
constructor(buffer) {
|
|
1392
1397
|
const name = 'peernet-message';
|
|
1393
|
-
super(buffer, protons__default['default'](proto$
|
|
1398
|
+
super(buffer, protons__default['default'](proto$a).PeernetMessage, {name});
|
|
1394
1399
|
}
|
|
1395
1400
|
}
|
|
1396
1401
|
|
|
1397
|
-
var proto$
|
|
1402
|
+
var proto$9 = `
|
|
1398
1403
|
// PeernetDHTMessage
|
|
1399
1404
|
message PeernetDHTMessage {
|
|
1400
1405
|
required string hash = 1;
|
|
@@ -1420,11 +1425,11 @@ class DHTMessage extends FormatInterface {
|
|
|
1420
1425
|
|
|
1421
1426
|
constructor(data) {
|
|
1422
1427
|
const name = 'peernet-dht';
|
|
1423
|
-
super(data, protons__default['default'](proto$
|
|
1428
|
+
super(data, protons__default['default'](proto$9).PeernetDHTMessage, {name});
|
|
1424
1429
|
}
|
|
1425
1430
|
}
|
|
1426
1431
|
|
|
1427
|
-
var proto$
|
|
1432
|
+
var proto$8 = `
|
|
1428
1433
|
// PeernetDHTMessageResponse
|
|
1429
1434
|
message PeernetDHTMessageResponse {
|
|
1430
1435
|
required string hash = 1;
|
|
@@ -1439,11 +1444,11 @@ class DHTMessageResponse extends FormatInterface {
|
|
|
1439
1444
|
|
|
1440
1445
|
constructor(data) {
|
|
1441
1446
|
const name = 'peernet-dht-response';
|
|
1442
|
-
super(data, protons__default['default'](proto$
|
|
1447
|
+
super(data, protons__default['default'](proto$8).PeernetDHTMessageResponse, {name});
|
|
1443
1448
|
}
|
|
1444
1449
|
}
|
|
1445
1450
|
|
|
1446
|
-
var proto$
|
|
1451
|
+
var proto$7 = `
|
|
1447
1452
|
// PeernetDataMessage
|
|
1448
1453
|
message PeernetDataMessage {
|
|
1449
1454
|
required string hash = 1;
|
|
@@ -1458,11 +1463,11 @@ class DataMessage extends FormatInterface {
|
|
|
1458
1463
|
|
|
1459
1464
|
constructor(data) {
|
|
1460
1465
|
const name = 'peernet-data';
|
|
1461
|
-
super(data, protons__default['default'](proto$
|
|
1466
|
+
super(data, protons__default['default'](proto$7).PeernetDataMessage, {name});
|
|
1462
1467
|
}
|
|
1463
1468
|
}
|
|
1464
1469
|
|
|
1465
|
-
var proto$
|
|
1470
|
+
var proto$6 = `
|
|
1466
1471
|
// PsMessage
|
|
1467
1472
|
message PsMessage {
|
|
1468
1473
|
required bytes data = 1;
|
|
@@ -1476,11 +1481,11 @@ class PsMessage extends FormatInterface {
|
|
|
1476
1481
|
|
|
1477
1482
|
constructor(buffer) {
|
|
1478
1483
|
const name = 'peernet-ps';
|
|
1479
|
-
super(buffer, protons__default['default'](proto$
|
|
1484
|
+
super(buffer, protons__default['default'](proto$6).PsMessage, {name});
|
|
1480
1485
|
}
|
|
1481
1486
|
}
|
|
1482
1487
|
|
|
1483
|
-
var proto$
|
|
1488
|
+
var proto$5 = `
|
|
1484
1489
|
// PeernetPeerMessage
|
|
1485
1490
|
message PeernetPeerMessage {
|
|
1486
1491
|
required string id = 1;
|
|
@@ -1494,11 +1499,11 @@ class PeerMessage extends FormatInterface {
|
|
|
1494
1499
|
|
|
1495
1500
|
constructor(data) {
|
|
1496
1501
|
const name = 'peernet-peer';
|
|
1497
|
-
super(data, protons__default['default'](proto$
|
|
1502
|
+
super(data, protons__default['default'](proto$5).PeernetPeerMessage, {name});
|
|
1498
1503
|
}
|
|
1499
1504
|
}
|
|
1500
1505
|
|
|
1501
|
-
var proto$
|
|
1506
|
+
var proto$4 = `
|
|
1502
1507
|
// PeernetRequestMessage
|
|
1503
1508
|
message PeernetRequestMessage {
|
|
1504
1509
|
required string request = 1;
|
|
@@ -1512,11 +1517,11 @@ class RequestMessage extends FormatInterface {
|
|
|
1512
1517
|
|
|
1513
1518
|
constructor(data) {
|
|
1514
1519
|
const name = 'peernet-request';
|
|
1515
|
-
super(data, protons__default['default'](proto$
|
|
1520
|
+
super(data, protons__default['default'](proto$4).PeernetRequestMessage, {name});
|
|
1516
1521
|
}
|
|
1517
1522
|
}
|
|
1518
1523
|
|
|
1519
|
-
var proto$
|
|
1524
|
+
var proto$3 = `
|
|
1520
1525
|
// PeernetResponseMessage
|
|
1521
1526
|
message PeernetResponseMessage {
|
|
1522
1527
|
required string response = 1;
|
|
@@ -1530,11 +1535,11 @@ class ResponseMessage extends FormatInterface {
|
|
|
1530
1535
|
|
|
1531
1536
|
constructor(data) {
|
|
1532
1537
|
const name = 'peernet-response';
|
|
1533
|
-
super(data, protons__default['default'](proto$
|
|
1538
|
+
super(data, protons__default['default'](proto$3).PeernetResponseMessage, {name});
|
|
1534
1539
|
}
|
|
1535
1540
|
}
|
|
1536
1541
|
|
|
1537
|
-
var proto$
|
|
1542
|
+
var proto$2 = `
|
|
1538
1543
|
// PeernetPeerMessageResponse
|
|
1539
1544
|
message PeernetPeerMessageResponse {
|
|
1540
1545
|
required string id = 1;
|
|
@@ -1548,11 +1553,11 @@ class PeerMessageResponse extends FormatInterface {
|
|
|
1548
1553
|
|
|
1549
1554
|
constructor(data) {
|
|
1550
1555
|
const name = 'peernet-peer-response';
|
|
1551
|
-
super(data, protons__default['default'](proto$
|
|
1556
|
+
super(data, protons__default['default'](proto$2).PeernetPeerMessageResponse, {name});
|
|
1552
1557
|
}
|
|
1553
1558
|
}
|
|
1554
1559
|
|
|
1555
|
-
var proto = `
|
|
1560
|
+
var proto$1 = `
|
|
1556
1561
|
// PeernetDataMessageResponse
|
|
1557
1562
|
message PeernetDataMessageResponse {
|
|
1558
1563
|
required string hash = 1;
|
|
@@ -1567,7 +1572,26 @@ class DataMessageResponse extends FormatInterface {
|
|
|
1567
1572
|
|
|
1568
1573
|
constructor(data) {
|
|
1569
1574
|
const name = 'peernet-data-response';
|
|
1570
|
-
super(data, protons__default['default'](proto).PeernetDataMessageResponse, {name});
|
|
1575
|
+
super(data, protons__default['default'](proto$1).PeernetDataMessageResponse, {name});
|
|
1576
|
+
}
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1579
|
+
var proto = `
|
|
1580
|
+
message ChatMessage {
|
|
1581
|
+
required string value = 1;
|
|
1582
|
+
required string author = 2;
|
|
1583
|
+
required uint64 timestamp = 3;
|
|
1584
|
+
repeated string files = 4;
|
|
1585
|
+
}`;
|
|
1586
|
+
|
|
1587
|
+
class ChatMessage extends FormatInterface {
|
|
1588
|
+
get keys() {
|
|
1589
|
+
return ['author', 'value', 'timestamp', 'files']
|
|
1590
|
+
}
|
|
1591
|
+
|
|
1592
|
+
constructor(buffer) {
|
|
1593
|
+
const name = 'chat-message';
|
|
1594
|
+
super(buffer, protons__default['default'](proto).ChatMessage, {name});
|
|
1571
1595
|
}
|
|
1572
1596
|
}
|
|
1573
1597
|
|
|
@@ -1972,7 +1996,7 @@ class Peernet {
|
|
|
1972
1996
|
}
|
|
1973
1997
|
|
|
1974
1998
|
get defaultStores() {
|
|
1975
|
-
return ['account', 'wallet', 'block', 'transaction', 'chain', 'data']
|
|
1999
|
+
return ['account', 'wallet', 'block', 'transaction', 'chain', 'data', 'message']
|
|
1976
2000
|
}
|
|
1977
2001
|
|
|
1978
2002
|
addProto(name, proto) {
|
|
@@ -1985,7 +2009,7 @@ class Peernet {
|
|
|
1985
2009
|
|
|
1986
2010
|
async addStore(name, prefix, root, isPrivate = true) {
|
|
1987
2011
|
if (name === 'block' || name === 'transaction' || name === 'chain' ||
|
|
1988
|
-
name === 'data') isPrivate = false;
|
|
2012
|
+
name === 'data' || name === 'message') isPrivate = false;
|
|
1989
2013
|
|
|
1990
2014
|
let Storage;
|
|
1991
2015
|
if (this.hasDaemon) {
|
|
@@ -2061,6 +2085,7 @@ class Peernet {
|
|
|
2061
2085
|
'peernet-data': DataMessage,
|
|
2062
2086
|
'peernet-data-response': DataMessageResponse,
|
|
2063
2087
|
'peernet-ps': PsMessage,
|
|
2088
|
+
'chat-message': ChatMessage,
|
|
2064
2089
|
};
|
|
2065
2090
|
this.protos = globalThis.peernet.protos;
|
|
2066
2091
|
|
|
@@ -2413,6 +2438,35 @@ class Peernet {
|
|
|
2413
2438
|
return null
|
|
2414
2439
|
}
|
|
2415
2440
|
|
|
2441
|
+
|
|
2442
|
+
get message() {
|
|
2443
|
+
return {
|
|
2444
|
+
/**
|
|
2445
|
+
* Get content for given message hash
|
|
2446
|
+
*
|
|
2447
|
+
* @param {String} hash
|
|
2448
|
+
*/
|
|
2449
|
+
get: async (hash) => {
|
|
2450
|
+
debug(`get message ${hash}`);
|
|
2451
|
+
const message = await messageStore.has(hash);
|
|
2452
|
+
if (message) return await messageStore.get(hash)
|
|
2453
|
+
return this.requestData(hash, 'message')
|
|
2454
|
+
},
|
|
2455
|
+
/**
|
|
2456
|
+
* put message content
|
|
2457
|
+
*
|
|
2458
|
+
* @param {String} hash
|
|
2459
|
+
* @param {Buffer} message
|
|
2460
|
+
*/
|
|
2461
|
+
put: async (hash, message) => await messageStore.put(hash, message),
|
|
2462
|
+
/**
|
|
2463
|
+
* @param {String} hash
|
|
2464
|
+
* @return {Boolean}
|
|
2465
|
+
*/
|
|
2466
|
+
has: async (hash) => await messageStore.has(hash),
|
|
2467
|
+
}
|
|
2468
|
+
}
|
|
2469
|
+
|
|
2416
2470
|
get data() {
|
|
2417
2471
|
return {
|
|
2418
2472
|
/**
|
|
@@ -2503,16 +2557,16 @@ class Peernet {
|
|
|
2503
2557
|
*/
|
|
2504
2558
|
async publish(topic, data) {
|
|
2505
2559
|
// globalSub.publish(topic, data)
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
2560
|
if (!Buffer.isBuffer(topic)) topic = Buffer.from(topic);
|
|
2509
2561
|
if (!Buffer.isBuffer(data)) data = Buffer.from(data);
|
|
2510
2562
|
const id = Math.random().toString(36).slice(-12);
|
|
2511
2563
|
data = new PsMessage({data, topic});
|
|
2512
2564
|
for (const peer of this.peers) {
|
|
2513
|
-
if (peer.connection._connected
|
|
2514
|
-
|
|
2515
|
-
|
|
2565
|
+
if (peer.connection._connected) {
|
|
2566
|
+
if (peer.id.toString() !== this.peerId.toString()) {
|
|
2567
|
+
const node = await this.prepareMessage(peer.id, data.encoded);
|
|
2568
|
+
peer.write(Buffer.from(JSON.stringify({id, data: node.encoded})));
|
|
2569
|
+
}
|
|
2516
2570
|
} else {
|
|
2517
2571
|
this.removePeer(peer);
|
|
2518
2572
|
}
|
package/dist/commonjs/codec.js
CHANGED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var protons = require('protons');
|
|
4
|
+
var codecFormatInterface = require('./codec-format-interface.js');
|
|
5
|
+
|
|
6
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
7
|
+
|
|
8
|
+
var protons__default = /*#__PURE__*/_interopDefaultLegacy(protons);
|
|
9
|
+
|
|
10
|
+
var proto = `
|
|
11
|
+
// PeernetMessage
|
|
12
|
+
message PeernetMessage {
|
|
13
|
+
required bytes data = 1;
|
|
14
|
+
required bytes signature = 2;
|
|
15
|
+
optional bytes from = 3;
|
|
16
|
+
optional bytes to = 4;
|
|
17
|
+
optional string id = 5;
|
|
18
|
+
}`;
|
|
19
|
+
|
|
20
|
+
class PeernetMessage extends codecFormatInterface {
|
|
21
|
+
get keys() {
|
|
22
|
+
return ['data', 'signature', 'from', 'to', 'id']
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
constructor(buffer) {
|
|
26
|
+
const name = 'peernet-message';
|
|
27
|
+
super(buffer, protons__default['default'](proto).PeernetMessage, {name});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
exports.PeernetMessage = PeernetMessage;
|
|
32
|
+
exports.proto = proto;
|
package/dist/commonjs/peernet.js
CHANGED
|
@@ -264,7 +264,7 @@ class LeofcoinStorage$1 {
|
|
|
264
264
|
|
|
265
265
|
}
|
|
266
266
|
|
|
267
|
-
var version = "0.
|
|
267
|
+
var version = "0.9.1";
|
|
268
268
|
|
|
269
269
|
var api$1 = {
|
|
270
270
|
version: ({send}) => send({client: '@peernet/api/http', version}),
|
|
@@ -919,7 +919,7 @@ class LeofcoinStorageClient {
|
|
|
919
919
|
}
|
|
920
920
|
}
|
|
921
921
|
|
|
922
|
-
var proto$
|
|
922
|
+
var proto$5 = `
|
|
923
923
|
// PeernetDataMessage
|
|
924
924
|
message PeernetDataMessage {
|
|
925
925
|
required string hash = 1;
|
|
@@ -934,11 +934,11 @@ class DataMessage extends codecFormatInterface {
|
|
|
934
934
|
|
|
935
935
|
constructor(data) {
|
|
936
936
|
const name = 'peernet-data';
|
|
937
|
-
super(data, protons__default['default'](proto$
|
|
937
|
+
super(data, protons__default['default'](proto$5).PeernetDataMessage, {name});
|
|
938
938
|
}
|
|
939
939
|
}
|
|
940
940
|
|
|
941
|
-
var proto$
|
|
941
|
+
var proto$4 = `
|
|
942
942
|
// PsMessage
|
|
943
943
|
message PsMessage {
|
|
944
944
|
required bytes data = 1;
|
|
@@ -952,11 +952,11 @@ class PsMessage extends codecFormatInterface {
|
|
|
952
952
|
|
|
953
953
|
constructor(buffer) {
|
|
954
954
|
const name = 'peernet-ps';
|
|
955
|
-
super(buffer, protons__default['default'](proto$
|
|
955
|
+
super(buffer, protons__default['default'](proto$4).PsMessage, {name});
|
|
956
956
|
}
|
|
957
957
|
}
|
|
958
958
|
|
|
959
|
-
var proto$
|
|
959
|
+
var proto$3 = `
|
|
960
960
|
// PeernetPeerMessage
|
|
961
961
|
message PeernetPeerMessage {
|
|
962
962
|
required string id = 1;
|
|
@@ -970,11 +970,11 @@ class PeerMessage extends codecFormatInterface {
|
|
|
970
970
|
|
|
971
971
|
constructor(data) {
|
|
972
972
|
const name = 'peernet-peer';
|
|
973
|
-
super(data, protons__default['default'](proto$
|
|
973
|
+
super(data, protons__default['default'](proto$3).PeernetPeerMessage, {name});
|
|
974
974
|
}
|
|
975
975
|
}
|
|
976
976
|
|
|
977
|
-
var proto$
|
|
977
|
+
var proto$2 = `
|
|
978
978
|
// PeernetPeerMessageResponse
|
|
979
979
|
message PeernetPeerMessageResponse {
|
|
980
980
|
required string id = 1;
|
|
@@ -988,11 +988,11 @@ class PeerMessageResponse extends codecFormatInterface {
|
|
|
988
988
|
|
|
989
989
|
constructor(data) {
|
|
990
990
|
const name = 'peernet-peer-response';
|
|
991
|
-
super(data, protons__default['default'](proto$
|
|
991
|
+
super(data, protons__default['default'](proto$2).PeernetPeerMessageResponse, {name});
|
|
992
992
|
}
|
|
993
993
|
}
|
|
994
994
|
|
|
995
|
-
var proto = `
|
|
995
|
+
var proto$1 = `
|
|
996
996
|
// PeernetDataMessageResponse
|
|
997
997
|
message PeernetDataMessageResponse {
|
|
998
998
|
required string hash = 1;
|
|
@@ -1007,7 +1007,26 @@ class DataMessageResponse extends codecFormatInterface {
|
|
|
1007
1007
|
|
|
1008
1008
|
constructor(data) {
|
|
1009
1009
|
const name = 'peernet-data-response';
|
|
1010
|
-
super(data, protons__default['default'](proto).PeernetDataMessageResponse, {name});
|
|
1010
|
+
super(data, protons__default['default'](proto$1).PeernetDataMessageResponse, {name});
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
var proto = `
|
|
1015
|
+
message ChatMessage {
|
|
1016
|
+
required string value = 1;
|
|
1017
|
+
required string author = 2;
|
|
1018
|
+
required uint64 timestamp = 3;
|
|
1019
|
+
repeated string files = 4;
|
|
1020
|
+
}`;
|
|
1021
|
+
|
|
1022
|
+
class ChatMessage extends codecFormatInterface {
|
|
1023
|
+
get keys() {
|
|
1024
|
+
return ['author', 'value', 'timestamp', 'files']
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
constructor(buffer) {
|
|
1028
|
+
const name = 'chat-message';
|
|
1029
|
+
super(buffer, protons__default['default'](proto).ChatMessage, {name});
|
|
1011
1030
|
}
|
|
1012
1031
|
}
|
|
1013
1032
|
|
|
@@ -1412,7 +1431,7 @@ class Peernet {
|
|
|
1412
1431
|
}
|
|
1413
1432
|
|
|
1414
1433
|
get defaultStores() {
|
|
1415
|
-
return ['account', 'wallet', 'block', 'transaction', 'chain', 'data']
|
|
1434
|
+
return ['account', 'wallet', 'block', 'transaction', 'chain', 'data', 'message']
|
|
1416
1435
|
}
|
|
1417
1436
|
|
|
1418
1437
|
addProto(name, proto) {
|
|
@@ -1425,7 +1444,7 @@ class Peernet {
|
|
|
1425
1444
|
|
|
1426
1445
|
async addStore(name, prefix, root, isPrivate = true) {
|
|
1427
1446
|
if (name === 'block' || name === 'transaction' || name === 'chain' ||
|
|
1428
|
-
name === 'data') isPrivate = false;
|
|
1447
|
+
name === 'data' || name === 'message') isPrivate = false;
|
|
1429
1448
|
|
|
1430
1449
|
let Storage;
|
|
1431
1450
|
if (this.hasDaemon) {
|
|
@@ -1501,6 +1520,7 @@ class Peernet {
|
|
|
1501
1520
|
'peernet-data': DataMessage,
|
|
1502
1521
|
'peernet-data-response': DataMessageResponse,
|
|
1503
1522
|
'peernet-ps': PsMessage,
|
|
1523
|
+
'chat-message': ChatMessage,
|
|
1504
1524
|
};
|
|
1505
1525
|
this.protos = globalThis.peernet.protos;
|
|
1506
1526
|
|
|
@@ -1853,6 +1873,35 @@ class Peernet {
|
|
|
1853
1873
|
return null
|
|
1854
1874
|
}
|
|
1855
1875
|
|
|
1876
|
+
|
|
1877
|
+
get message() {
|
|
1878
|
+
return {
|
|
1879
|
+
/**
|
|
1880
|
+
* Get content for given message hash
|
|
1881
|
+
*
|
|
1882
|
+
* @param {String} hash
|
|
1883
|
+
*/
|
|
1884
|
+
get: async (hash) => {
|
|
1885
|
+
debug(`get message ${hash}`);
|
|
1886
|
+
const message = await messageStore.has(hash);
|
|
1887
|
+
if (message) return await messageStore.get(hash)
|
|
1888
|
+
return this.requestData(hash, 'message')
|
|
1889
|
+
},
|
|
1890
|
+
/**
|
|
1891
|
+
* put message content
|
|
1892
|
+
*
|
|
1893
|
+
* @param {String} hash
|
|
1894
|
+
* @param {Buffer} message
|
|
1895
|
+
*/
|
|
1896
|
+
put: async (hash, message) => await messageStore.put(hash, message),
|
|
1897
|
+
/**
|
|
1898
|
+
* @param {String} hash
|
|
1899
|
+
* @return {Boolean}
|
|
1900
|
+
*/
|
|
1901
|
+
has: async (hash) => await messageStore.has(hash),
|
|
1902
|
+
}
|
|
1903
|
+
}
|
|
1904
|
+
|
|
1856
1905
|
get data() {
|
|
1857
1906
|
return {
|
|
1858
1907
|
/**
|
|
@@ -1943,16 +1992,16 @@ class Peernet {
|
|
|
1943
1992
|
*/
|
|
1944
1993
|
async publish(topic, data) {
|
|
1945
1994
|
// globalSub.publish(topic, data)
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
1995
|
if (!Buffer.isBuffer(topic)) topic = Buffer.from(topic);
|
|
1949
1996
|
if (!Buffer.isBuffer(data)) data = Buffer.from(data);
|
|
1950
1997
|
const id = Math.random().toString(36).slice(-12);
|
|
1951
1998
|
data = new PsMessage({data, topic});
|
|
1952
1999
|
for (const peer of this.peers) {
|
|
1953
|
-
if (peer.connection._connected
|
|
1954
|
-
|
|
1955
|
-
|
|
2000
|
+
if (peer.connection._connected) {
|
|
2001
|
+
if (peer.id.toString() !== this.peerId.toString()) {
|
|
2002
|
+
const node = await this.prepareMessage(peer.id, data.encoded);
|
|
2003
|
+
peer.write(Buffer.from(JSON.stringify({id, data: node.encoded})));
|
|
2004
|
+
}
|
|
1956
2005
|
} else {
|
|
1957
2006
|
this.removePeer(peer);
|
|
1958
2007
|
}
|
package/dist/module/peernet.js
CHANGED
|
@@ -244,7 +244,7 @@ class LeofcoinStorage$1 {
|
|
|
244
244
|
|
|
245
245
|
}
|
|
246
246
|
|
|
247
|
-
var version = "0.
|
|
247
|
+
var version = "0.9.1";
|
|
248
248
|
|
|
249
249
|
var api$1 = {
|
|
250
250
|
version: ({send}) => send({client: '@peernet/api/http', version}),
|
|
@@ -899,7 +899,7 @@ class LeofcoinStorageClient {
|
|
|
899
899
|
}
|
|
900
900
|
}
|
|
901
901
|
|
|
902
|
-
var proto$
|
|
902
|
+
var proto$a = `
|
|
903
903
|
// PeernetMessage
|
|
904
904
|
message PeernetMessage {
|
|
905
905
|
required bytes data = 1;
|
|
@@ -982,6 +982,11 @@ var codecs = {
|
|
|
982
982
|
hashAlg: 'keccak-256', // ,
|
|
983
983
|
// testnet: 'olivia'
|
|
984
984
|
},
|
|
985
|
+
// chat message
|
|
986
|
+
'chat-message': {
|
|
987
|
+
codec: '636d',
|
|
988
|
+
hashAlg: 'dbl-keccak-512',
|
|
989
|
+
},
|
|
985
990
|
};
|
|
986
991
|
|
|
987
992
|
class PeernetCodec {
|
|
@@ -1373,11 +1378,11 @@ class PeernetMessage extends FormatInterface {
|
|
|
1373
1378
|
|
|
1374
1379
|
constructor(buffer) {
|
|
1375
1380
|
const name = 'peernet-message';
|
|
1376
|
-
super(buffer, protons(proto$
|
|
1381
|
+
super(buffer, protons(proto$a).PeernetMessage, {name});
|
|
1377
1382
|
}
|
|
1378
1383
|
}
|
|
1379
1384
|
|
|
1380
|
-
var proto$
|
|
1385
|
+
var proto$9 = `
|
|
1381
1386
|
// PeernetDHTMessage
|
|
1382
1387
|
message PeernetDHTMessage {
|
|
1383
1388
|
required string hash = 1;
|
|
@@ -1403,11 +1408,11 @@ class DHTMessage extends FormatInterface {
|
|
|
1403
1408
|
|
|
1404
1409
|
constructor(data) {
|
|
1405
1410
|
const name = 'peernet-dht';
|
|
1406
|
-
super(data, protons(proto$
|
|
1411
|
+
super(data, protons(proto$9).PeernetDHTMessage, {name});
|
|
1407
1412
|
}
|
|
1408
1413
|
}
|
|
1409
1414
|
|
|
1410
|
-
var proto$
|
|
1415
|
+
var proto$8 = `
|
|
1411
1416
|
// PeernetDHTMessageResponse
|
|
1412
1417
|
message PeernetDHTMessageResponse {
|
|
1413
1418
|
required string hash = 1;
|
|
@@ -1422,11 +1427,11 @@ class DHTMessageResponse extends FormatInterface {
|
|
|
1422
1427
|
|
|
1423
1428
|
constructor(data) {
|
|
1424
1429
|
const name = 'peernet-dht-response';
|
|
1425
|
-
super(data, protons(proto$
|
|
1430
|
+
super(data, protons(proto$8).PeernetDHTMessageResponse, {name});
|
|
1426
1431
|
}
|
|
1427
1432
|
}
|
|
1428
1433
|
|
|
1429
|
-
var proto$
|
|
1434
|
+
var proto$7 = `
|
|
1430
1435
|
// PeernetDataMessage
|
|
1431
1436
|
message PeernetDataMessage {
|
|
1432
1437
|
required string hash = 1;
|
|
@@ -1441,11 +1446,11 @@ class DataMessage extends FormatInterface {
|
|
|
1441
1446
|
|
|
1442
1447
|
constructor(data) {
|
|
1443
1448
|
const name = 'peernet-data';
|
|
1444
|
-
super(data, protons(proto$
|
|
1449
|
+
super(data, protons(proto$7).PeernetDataMessage, {name});
|
|
1445
1450
|
}
|
|
1446
1451
|
}
|
|
1447
1452
|
|
|
1448
|
-
var proto$
|
|
1453
|
+
var proto$6 = `
|
|
1449
1454
|
// PsMessage
|
|
1450
1455
|
message PsMessage {
|
|
1451
1456
|
required bytes data = 1;
|
|
@@ -1459,11 +1464,11 @@ class PsMessage extends FormatInterface {
|
|
|
1459
1464
|
|
|
1460
1465
|
constructor(buffer) {
|
|
1461
1466
|
const name = 'peernet-ps';
|
|
1462
|
-
super(buffer, protons(proto$
|
|
1467
|
+
super(buffer, protons(proto$6).PsMessage, {name});
|
|
1463
1468
|
}
|
|
1464
1469
|
}
|
|
1465
1470
|
|
|
1466
|
-
var proto$
|
|
1471
|
+
var proto$5 = `
|
|
1467
1472
|
// PeernetPeerMessage
|
|
1468
1473
|
message PeernetPeerMessage {
|
|
1469
1474
|
required string id = 1;
|
|
@@ -1477,11 +1482,11 @@ class PeerMessage extends FormatInterface {
|
|
|
1477
1482
|
|
|
1478
1483
|
constructor(data) {
|
|
1479
1484
|
const name = 'peernet-peer';
|
|
1480
|
-
super(data, protons(proto$
|
|
1485
|
+
super(data, protons(proto$5).PeernetPeerMessage, {name});
|
|
1481
1486
|
}
|
|
1482
1487
|
}
|
|
1483
1488
|
|
|
1484
|
-
var proto$
|
|
1489
|
+
var proto$4 = `
|
|
1485
1490
|
// PeernetRequestMessage
|
|
1486
1491
|
message PeernetRequestMessage {
|
|
1487
1492
|
required string request = 1;
|
|
@@ -1495,11 +1500,11 @@ class RequestMessage extends FormatInterface {
|
|
|
1495
1500
|
|
|
1496
1501
|
constructor(data) {
|
|
1497
1502
|
const name = 'peernet-request';
|
|
1498
|
-
super(data, protons(proto$
|
|
1503
|
+
super(data, protons(proto$4).PeernetRequestMessage, {name});
|
|
1499
1504
|
}
|
|
1500
1505
|
}
|
|
1501
1506
|
|
|
1502
|
-
var proto$
|
|
1507
|
+
var proto$3 = `
|
|
1503
1508
|
// PeernetResponseMessage
|
|
1504
1509
|
message PeernetResponseMessage {
|
|
1505
1510
|
required string response = 1;
|
|
@@ -1513,11 +1518,11 @@ class ResponseMessage extends FormatInterface {
|
|
|
1513
1518
|
|
|
1514
1519
|
constructor(data) {
|
|
1515
1520
|
const name = 'peernet-response';
|
|
1516
|
-
super(data, protons(proto$
|
|
1521
|
+
super(data, protons(proto$3).PeernetResponseMessage, {name});
|
|
1517
1522
|
}
|
|
1518
1523
|
}
|
|
1519
1524
|
|
|
1520
|
-
var proto$
|
|
1525
|
+
var proto$2 = `
|
|
1521
1526
|
// PeernetPeerMessageResponse
|
|
1522
1527
|
message PeernetPeerMessageResponse {
|
|
1523
1528
|
required string id = 1;
|
|
@@ -1531,11 +1536,11 @@ class PeerMessageResponse extends FormatInterface {
|
|
|
1531
1536
|
|
|
1532
1537
|
constructor(data) {
|
|
1533
1538
|
const name = 'peernet-peer-response';
|
|
1534
|
-
super(data, protons(proto$
|
|
1539
|
+
super(data, protons(proto$2).PeernetPeerMessageResponse, {name});
|
|
1535
1540
|
}
|
|
1536
1541
|
}
|
|
1537
1542
|
|
|
1538
|
-
var proto = `
|
|
1543
|
+
var proto$1 = `
|
|
1539
1544
|
// PeernetDataMessageResponse
|
|
1540
1545
|
message PeernetDataMessageResponse {
|
|
1541
1546
|
required string hash = 1;
|
|
@@ -1550,7 +1555,26 @@ class DataMessageResponse extends FormatInterface {
|
|
|
1550
1555
|
|
|
1551
1556
|
constructor(data) {
|
|
1552
1557
|
const name = 'peernet-data-response';
|
|
1553
|
-
super(data, protons(proto).PeernetDataMessageResponse, {name});
|
|
1558
|
+
super(data, protons(proto$1).PeernetDataMessageResponse, {name});
|
|
1559
|
+
}
|
|
1560
|
+
}
|
|
1561
|
+
|
|
1562
|
+
var proto = `
|
|
1563
|
+
message ChatMessage {
|
|
1564
|
+
required string value = 1;
|
|
1565
|
+
required string author = 2;
|
|
1566
|
+
required uint64 timestamp = 3;
|
|
1567
|
+
repeated string files = 4;
|
|
1568
|
+
}`;
|
|
1569
|
+
|
|
1570
|
+
class ChatMessage extends FormatInterface {
|
|
1571
|
+
get keys() {
|
|
1572
|
+
return ['author', 'value', 'timestamp', 'files']
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1575
|
+
constructor(buffer) {
|
|
1576
|
+
const name = 'chat-message';
|
|
1577
|
+
super(buffer, protons(proto).ChatMessage, {name});
|
|
1554
1578
|
}
|
|
1555
1579
|
}
|
|
1556
1580
|
|
|
@@ -1955,7 +1979,7 @@ class Peernet {
|
|
|
1955
1979
|
}
|
|
1956
1980
|
|
|
1957
1981
|
get defaultStores() {
|
|
1958
|
-
return ['account', 'wallet', 'block', 'transaction', 'chain', 'data']
|
|
1982
|
+
return ['account', 'wallet', 'block', 'transaction', 'chain', 'data', 'message']
|
|
1959
1983
|
}
|
|
1960
1984
|
|
|
1961
1985
|
addProto(name, proto) {
|
|
@@ -1968,7 +1992,7 @@ class Peernet {
|
|
|
1968
1992
|
|
|
1969
1993
|
async addStore(name, prefix, root, isPrivate = true) {
|
|
1970
1994
|
if (name === 'block' || name === 'transaction' || name === 'chain' ||
|
|
1971
|
-
name === 'data') isPrivate = false;
|
|
1995
|
+
name === 'data' || name === 'message') isPrivate = false;
|
|
1972
1996
|
|
|
1973
1997
|
let Storage;
|
|
1974
1998
|
if (this.hasDaemon) {
|
|
@@ -2044,6 +2068,7 @@ class Peernet {
|
|
|
2044
2068
|
'peernet-data': DataMessage,
|
|
2045
2069
|
'peernet-data-response': DataMessageResponse,
|
|
2046
2070
|
'peernet-ps': PsMessage,
|
|
2071
|
+
'chat-message': ChatMessage,
|
|
2047
2072
|
};
|
|
2048
2073
|
this.protos = globalThis.peernet.protos;
|
|
2049
2074
|
|
|
@@ -2396,6 +2421,35 @@ class Peernet {
|
|
|
2396
2421
|
return null
|
|
2397
2422
|
}
|
|
2398
2423
|
|
|
2424
|
+
|
|
2425
|
+
get message() {
|
|
2426
|
+
return {
|
|
2427
|
+
/**
|
|
2428
|
+
* Get content for given message hash
|
|
2429
|
+
*
|
|
2430
|
+
* @param {String} hash
|
|
2431
|
+
*/
|
|
2432
|
+
get: async (hash) => {
|
|
2433
|
+
debug(`get message ${hash}`);
|
|
2434
|
+
const message = await messageStore.has(hash);
|
|
2435
|
+
if (message) return await messageStore.get(hash)
|
|
2436
|
+
return this.requestData(hash, 'message')
|
|
2437
|
+
},
|
|
2438
|
+
/**
|
|
2439
|
+
* put message content
|
|
2440
|
+
*
|
|
2441
|
+
* @param {String} hash
|
|
2442
|
+
* @param {Buffer} message
|
|
2443
|
+
*/
|
|
2444
|
+
put: async (hash, message) => await messageStore.put(hash, message),
|
|
2445
|
+
/**
|
|
2446
|
+
* @param {String} hash
|
|
2447
|
+
* @return {Boolean}
|
|
2448
|
+
*/
|
|
2449
|
+
has: async (hash) => await messageStore.has(hash),
|
|
2450
|
+
}
|
|
2451
|
+
}
|
|
2452
|
+
|
|
2399
2453
|
get data() {
|
|
2400
2454
|
return {
|
|
2401
2455
|
/**
|
|
@@ -2486,16 +2540,16 @@ class Peernet {
|
|
|
2486
2540
|
*/
|
|
2487
2541
|
async publish(topic, data) {
|
|
2488
2542
|
// globalSub.publish(topic, data)
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
2543
|
if (!Buffer.isBuffer(topic)) topic = Buffer.from(topic);
|
|
2492
2544
|
if (!Buffer.isBuffer(data)) data = Buffer.from(data);
|
|
2493
2545
|
const id = Math.random().toString(36).slice(-12);
|
|
2494
2546
|
data = new PsMessage({data, topic});
|
|
2495
2547
|
for (const peer of this.peers) {
|
|
2496
|
-
if (peer.connection._connected
|
|
2497
|
-
|
|
2498
|
-
|
|
2548
|
+
if (peer.connection._connected) {
|
|
2549
|
+
if (peer.id.toString() !== this.peerId.toString()) {
|
|
2550
|
+
const node = await this.prepareMessage(peer.id, data.encoded);
|
|
2551
|
+
peer.write(Buffer.from(JSON.stringify({id, data: node.encoded})));
|
|
2552
|
+
}
|
|
2499
2553
|
} else {
|
|
2500
2554
|
this.removePeer(peer);
|
|
2501
2555
|
}
|