@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.
@@ -261,7 +261,7 @@ class LeofcoinStorage$1 {
261
261
 
262
262
  }
263
263
 
264
- var version = "0.8.11";
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$9 = `
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$9).PeernetMessage, {name});
1398
+ super(buffer, protons__default['default'](proto$a).PeernetMessage, {name});
1394
1399
  }
1395
1400
  }
1396
1401
 
1397
- var proto$8 = `
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$8).PeernetDHTMessage, {name});
1428
+ super(data, protons__default['default'](proto$9).PeernetDHTMessage, {name});
1424
1429
  }
1425
1430
  }
1426
1431
 
1427
- var proto$7 = `
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$7).PeernetDHTMessageResponse, {name});
1447
+ super(data, protons__default['default'](proto$8).PeernetDHTMessageResponse, {name});
1443
1448
  }
1444
1449
  }
1445
1450
 
1446
- var proto$6 = `
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$6).PeernetDataMessage, {name});
1466
+ super(data, protons__default['default'](proto$7).PeernetDataMessage, {name});
1462
1467
  }
1463
1468
  }
1464
1469
 
1465
- var proto$5 = `
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$5).PsMessage, {name});
1484
+ super(buffer, protons__default['default'](proto$6).PsMessage, {name});
1480
1485
  }
1481
1486
  }
1482
1487
 
1483
- var proto$4 = `
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$4).PeernetPeerMessage, {name});
1502
+ super(data, protons__default['default'](proto$5).PeernetPeerMessage, {name});
1498
1503
  }
1499
1504
  }
1500
1505
 
1501
- var proto$3 = `
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$3).PeernetRequestMessage, {name});
1520
+ super(data, protons__default['default'](proto$4).PeernetRequestMessage, {name});
1516
1521
  }
1517
1522
  }
1518
1523
 
1519
- var proto$2 = `
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$2).PeernetResponseMessage, {name});
1538
+ super(data, protons__default['default'](proto$3).PeernetResponseMessage, {name});
1534
1539
  }
1535
1540
  }
1536
1541
 
1537
- var proto$1 = `
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$1).PeernetPeerMessageResponse, {name});
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 && peer.id.toString() !== this.peerId.toString()) {
2514
- const node = await this.prepareMessage(peer.id, data.encoded);
2515
- peer.write(Buffer.from(JSON.stringify({id, data: node.encoded})));
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
  }
@@ -85,6 +85,11 @@ var codecs = {
85
85
  hashAlg: 'keccak-256', // ,
86
86
  // testnet: 'olivia'
87
87
  },
88
+ // chat message
89
+ 'chat-message': {
90
+ codec: '636d',
91
+ hashAlg: 'dbl-keccak-512',
92
+ },
88
93
  };
89
94
 
90
95
  class PeernetCodec {
@@ -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;
@@ -264,7 +264,7 @@ class LeofcoinStorage$1 {
264
264
 
265
265
  }
266
266
 
267
- var version = "0.8.11";
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$4 = `
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$4).PeernetDataMessage, {name});
937
+ super(data, protons__default['default'](proto$5).PeernetDataMessage, {name});
938
938
  }
939
939
  }
940
940
 
941
- var proto$3 = `
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$3).PsMessage, {name});
955
+ super(buffer, protons__default['default'](proto$4).PsMessage, {name});
956
956
  }
957
957
  }
958
958
 
959
- var proto$2 = `
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$2).PeernetPeerMessage, {name});
973
+ super(data, protons__default['default'](proto$3).PeernetPeerMessage, {name});
974
974
  }
975
975
  }
976
976
 
977
- var proto$1 = `
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$1).PeernetPeerMessageResponse, {name});
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 && peer.id.toString() !== this.peerId.toString()) {
1954
- const node = await this.prepareMessage(peer.id, data.encoded);
1955
- peer.write(Buffer.from(JSON.stringify({id, data: node.encoded})));
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
  }
@@ -244,7 +244,7 @@ class LeofcoinStorage$1 {
244
244
 
245
245
  }
246
246
 
247
- var version = "0.8.11";
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$9 = `
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$9).PeernetMessage, {name});
1381
+ super(buffer, protons(proto$a).PeernetMessage, {name});
1377
1382
  }
1378
1383
  }
1379
1384
 
1380
- var proto$8 = `
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$8).PeernetDHTMessage, {name});
1411
+ super(data, protons(proto$9).PeernetDHTMessage, {name});
1407
1412
  }
1408
1413
  }
1409
1414
 
1410
- var proto$7 = `
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$7).PeernetDHTMessageResponse, {name});
1430
+ super(data, protons(proto$8).PeernetDHTMessageResponse, {name});
1426
1431
  }
1427
1432
  }
1428
1433
 
1429
- var proto$6 = `
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$6).PeernetDataMessage, {name});
1449
+ super(data, protons(proto$7).PeernetDataMessage, {name});
1445
1450
  }
1446
1451
  }
1447
1452
 
1448
- var proto$5 = `
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$5).PsMessage, {name});
1467
+ super(buffer, protons(proto$6).PsMessage, {name});
1463
1468
  }
1464
1469
  }
1465
1470
 
1466
- var proto$4 = `
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$4).PeernetPeerMessage, {name});
1485
+ super(data, protons(proto$5).PeernetPeerMessage, {name});
1481
1486
  }
1482
1487
  }
1483
1488
 
1484
- var proto$3 = `
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$3).PeernetRequestMessage, {name});
1503
+ super(data, protons(proto$4).PeernetRequestMessage, {name});
1499
1504
  }
1500
1505
  }
1501
1506
 
1502
- var proto$2 = `
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$2).PeernetResponseMessage, {name});
1521
+ super(data, protons(proto$3).PeernetResponseMessage, {name});
1517
1522
  }
1518
1523
  }
1519
1524
 
1520
- var proto$1 = `
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$1).PeernetPeerMessageResponse, {name});
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 && peer.id.toString() !== this.peerId.toString()) {
2497
- const node = await this.prepareMessage(peer.id, data.encoded);
2498
- peer.write(Buffer.from(JSON.stringify({id, data: node.encoded})));
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leofcoin/peernet",
3
- "version": "0.8.12",
3
+ "version": "0.9.2",
4
4
  "description": "",
5
5
  "main": "dist/commonjs/peernet.js",
6
6
  "module": "dist/module/peernet.js",