@leofcoin/peernet 0.9.1 → 0.9.4

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/README.md CHANGED
@@ -5,6 +5,30 @@
5
5
  import discovery from 'socket-discovery'
6
6
  ```
7
7
 
8
+ ## API
9
+ #### addRequestHandler
10
+
11
+ examples
12
+ ```js
13
+ peernet.addRequestHandler('lastBlock', () => {
14
+ let response;
15
+ const height = await chainStore.get('localIndex')
16
+ const hash = await chainStore.get('localBlock')
17
+ response = JSON.stringify({ height: height.toString(), hash: hash.toString() })
18
+ return new ResponseMessage({ response })
19
+ // or
20
+ return new peernet.protos['peernet-response']({ response })
21
+ })
22
+ ```
23
+
24
+ ```js
25
+ peernet.addRequestHandler('hello', () => {
26
+ return new ResponseMessage({ response: 'hi' })
27
+ // or
28
+ return new peernet.protos['peernet-response']({ response: 'hi' })
29
+ })
30
+ ```
31
+
8
32
  ## Development
9
33
  ### watch
10
34
  ```sh
@@ -19,7 +43,7 @@ npm run c
19
43
  npm run demo
20
44
  ```
21
45
 
22
- `note: you need to install jsproject`
46
+ `note: you need to install jsproject`
23
47
  ```sh
24
48
  npm i -g @vandeurenglenn/project
25
- ```
49
+ ```
@@ -261,7 +261,7 @@ class LeofcoinStorage$1 {
261
261
 
262
262
  }
263
263
 
264
- var version = "0.9.0";
264
+ var version = "0.9.3";
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;
@@ -1395,11 +1395,11 @@ class PeernetMessage extends FormatInterface {
1395
1395
 
1396
1396
  constructor(buffer) {
1397
1397
  const name = 'peernet-message';
1398
- super(buffer, protons__default['default'](proto$9).PeernetMessage, {name});
1398
+ super(buffer, protons__default['default'](proto$a).PeernetMessage, {name});
1399
1399
  }
1400
1400
  }
1401
1401
 
1402
- var proto$8 = `
1402
+ var proto$9 = `
1403
1403
  // PeernetDHTMessage
1404
1404
  message PeernetDHTMessage {
1405
1405
  required string hash = 1;
@@ -1425,11 +1425,11 @@ class DHTMessage extends FormatInterface {
1425
1425
 
1426
1426
  constructor(data) {
1427
1427
  const name = 'peernet-dht';
1428
- super(data, protons__default['default'](proto$8).PeernetDHTMessage, {name});
1428
+ super(data, protons__default['default'](proto$9).PeernetDHTMessage, {name});
1429
1429
  }
1430
1430
  }
1431
1431
 
1432
- var proto$7 = `
1432
+ var proto$8 = `
1433
1433
  // PeernetDHTMessageResponse
1434
1434
  message PeernetDHTMessageResponse {
1435
1435
  required string hash = 1;
@@ -1444,11 +1444,11 @@ class DHTMessageResponse extends FormatInterface {
1444
1444
 
1445
1445
  constructor(data) {
1446
1446
  const name = 'peernet-dht-response';
1447
- super(data, protons__default['default'](proto$7).PeernetDHTMessageResponse, {name});
1447
+ super(data, protons__default['default'](proto$8).PeernetDHTMessageResponse, {name});
1448
1448
  }
1449
1449
  }
1450
1450
 
1451
- var proto$6 = `
1451
+ var proto$7 = `
1452
1452
  // PeernetDataMessage
1453
1453
  message PeernetDataMessage {
1454
1454
  required string hash = 1;
@@ -1463,11 +1463,11 @@ class DataMessage extends FormatInterface {
1463
1463
 
1464
1464
  constructor(data) {
1465
1465
  const name = 'peernet-data';
1466
- super(data, protons__default['default'](proto$6).PeernetDataMessage, {name});
1466
+ super(data, protons__default['default'](proto$7).PeernetDataMessage, {name});
1467
1467
  }
1468
1468
  }
1469
1469
 
1470
- var proto$5 = `
1470
+ var proto$6 = `
1471
1471
  // PsMessage
1472
1472
  message PsMessage {
1473
1473
  required bytes data = 1;
@@ -1481,11 +1481,11 @@ class PsMessage extends FormatInterface {
1481
1481
 
1482
1482
  constructor(buffer) {
1483
1483
  const name = 'peernet-ps';
1484
- super(buffer, protons__default['default'](proto$5).PsMessage, {name});
1484
+ super(buffer, protons__default['default'](proto$6).PsMessage, {name});
1485
1485
  }
1486
1486
  }
1487
1487
 
1488
- var proto$4 = `
1488
+ var proto$5 = `
1489
1489
  // PeernetPeerMessage
1490
1490
  message PeernetPeerMessage {
1491
1491
  required string id = 1;
@@ -1499,11 +1499,11 @@ class PeerMessage extends FormatInterface {
1499
1499
 
1500
1500
  constructor(data) {
1501
1501
  const name = 'peernet-peer';
1502
- super(data, protons__default['default'](proto$4).PeernetPeerMessage, {name});
1502
+ super(data, protons__default['default'](proto$5).PeernetPeerMessage, {name});
1503
1503
  }
1504
1504
  }
1505
1505
 
1506
- var proto$3 = `
1506
+ var proto$4 = `
1507
1507
  // PeernetRequestMessage
1508
1508
  message PeernetRequestMessage {
1509
1509
  required string request = 1;
@@ -1517,11 +1517,11 @@ class RequestMessage extends FormatInterface {
1517
1517
 
1518
1518
  constructor(data) {
1519
1519
  const name = 'peernet-request';
1520
- super(data, protons__default['default'](proto$3).PeernetRequestMessage, {name});
1520
+ super(data, protons__default['default'](proto$4).PeernetRequestMessage, {name});
1521
1521
  }
1522
1522
  }
1523
1523
 
1524
- var proto$2 = `
1524
+ var proto$3 = `
1525
1525
  // PeernetResponseMessage
1526
1526
  message PeernetResponseMessage {
1527
1527
  required string response = 1;
@@ -1535,11 +1535,11 @@ class ResponseMessage extends FormatInterface {
1535
1535
 
1536
1536
  constructor(data) {
1537
1537
  const name = 'peernet-response';
1538
- super(data, protons__default['default'](proto$2).PeernetResponseMessage, {name});
1538
+ super(data, protons__default['default'](proto$3).PeernetResponseMessage, {name});
1539
1539
  }
1540
1540
  }
1541
1541
 
1542
- var proto$1 = `
1542
+ var proto$2 = `
1543
1543
  // PeernetPeerMessageResponse
1544
1544
  message PeernetPeerMessageResponse {
1545
1545
  required string id = 1;
@@ -1553,11 +1553,11 @@ class PeerMessageResponse extends FormatInterface {
1553
1553
 
1554
1554
  constructor(data) {
1555
1555
  const name = 'peernet-peer-response';
1556
- super(data, protons__default['default'](proto$1).PeernetPeerMessageResponse, {name});
1556
+ super(data, protons__default['default'](proto$2).PeernetPeerMessageResponse, {name});
1557
1557
  }
1558
1558
  }
1559
1559
 
1560
- var proto = `
1560
+ var proto$1 = `
1561
1561
  // PeernetDataMessageResponse
1562
1562
  message PeernetDataMessageResponse {
1563
1563
  required string hash = 1;
@@ -1572,10 +1572,18 @@ class DataMessageResponse extends FormatInterface {
1572
1572
 
1573
1573
  constructor(data) {
1574
1574
  const name = 'peernet-data-response';
1575
- super(data, protons__default['default'](proto).PeernetDataMessageResponse, {name});
1575
+ super(data, protons__default['default'](proto$1).PeernetDataMessageResponse, {name});
1576
1576
  }
1577
1577
  }
1578
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
+
1579
1587
  class ChatMessage extends FormatInterface {
1580
1588
  get keys() {
1581
1589
  return ['author', 'value', 'timestamp', 'files']
@@ -1583,7 +1591,7 @@ class ChatMessage extends FormatInterface {
1583
1591
 
1584
1592
  constructor(buffer) {
1585
1593
  const name = 'chat-message';
1586
- super(buffer, protons__default['default'](proto$9).ChatMessage, {name});
1594
+ super(buffer, protons__default['default'](proto).ChatMessage, {name});
1587
1595
  }
1588
1596
  }
1589
1597
 
@@ -2054,6 +2062,7 @@ class Peernet {
2054
2062
  */
2055
2063
  this.peerMap = new Map();
2056
2064
  this.stores = [];
2065
+ this.requestProtos = {};
2057
2066
  this.storePrefix = options.storePrefix;
2058
2067
  this.root = options.root;
2059
2068
 
@@ -2077,7 +2086,7 @@ class Peernet {
2077
2086
  'peernet-data': DataMessage,
2078
2087
  'peernet-data-response': DataMessageResponse,
2079
2088
  'peernet-ps': PsMessage,
2080
- 'chat-message': ChatMessage
2089
+ 'chat-message': ChatMessage,
2081
2090
  };
2082
2091
  this.protos = globalThis.peernet.protos;
2083
2092
 
@@ -2178,6 +2187,10 @@ class Peernet {
2178
2187
  }
2179
2188
  }
2180
2189
 
2190
+ addRequestHandler(name, method) {
2191
+ this.requestProtos[name] = method;
2192
+ }
2193
+
2181
2194
  /**
2182
2195
  * @private
2183
2196
  *
@@ -2280,14 +2293,10 @@ class Peernet {
2280
2293
  } else if (proto.name === 'peernet-request') {
2281
2294
  // TODO: make dynamic
2282
2295
  // exposeddevapi[proto.decoded.request](proto.decoded.params)
2283
- let response;
2284
- if (proto.decoded.request === 'lastBlock') {
2285
- const height = await chainStore.get('localIndex');
2286
- const hash = await chainStore.get('localBlock');
2287
- response = JSON.stringify({ height: height.toString(), hash: hash.toString() });
2288
- const data = new ResponseMessage({ response });
2296
+ const method = this.requestProtos[proto.decoded.request];
2297
+ if (method) {
2298
+ const data = await method();
2289
2299
  const node = await this.prepareMessage(from, data.encoded);
2290
-
2291
2300
  peer.write(Buffer.from(JSON.stringify({id, data: node.encoded})));
2292
2301
  }
2293
2302
  } else if (proto.name === 'peernet-ps' &&
@@ -2431,7 +2440,6 @@ class Peernet {
2431
2440
  }
2432
2441
 
2433
2442
 
2434
-
2435
2443
  get message() {
2436
2444
  return {
2437
2445
  /**
@@ -2584,6 +2592,10 @@ class Peernet {
2584
2592
  async removePeer(peer) {
2585
2593
  connections.delete(peer.id);
2586
2594
  }
2595
+
2596
+ get Buffer() {
2597
+ return Buffer
2598
+ }
2587
2599
  // async block(index) {
2588
2600
  // const _values = []
2589
2601
  // for (const peer of this.peers) {
@@ -1,8 +1,7 @@
1
1
  'use strict';
2
2
 
3
- require('protons');
4
- var peernetMessage = require('./peernet-message-b6925673.js');
5
- require('./codec-format-interface.js');
3
+ var protons = require('protons');
4
+ var codecFormatInterface = require('./codec-format-interface.js');
6
5
  require('bs32');
7
6
  require('bs58');
8
7
  require('is-hex');
@@ -11,6 +10,29 @@ require('varint');
11
10
  require('./hash.js');
12
11
  require('keccak');
13
12
 
13
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
14
 
15
+ var protons__default = /*#__PURE__*/_interopDefaultLegacy(protons);
15
16
 
16
- module.exports = peernetMessage.PeernetMessage;
17
+ var proto = `
18
+ // PeernetMessage
19
+ message PeernetMessage {
20
+ required bytes data = 1;
21
+ required bytes signature = 2;
22
+ optional bytes from = 3;
23
+ optional bytes to = 4;
24
+ optional string id = 5;
25
+ }`;
26
+
27
+ class PeernetMessage extends codecFormatInterface {
28
+ get keys() {
29
+ return ['data', 'signature', 'from', 'to', 'id']
30
+ }
31
+
32
+ constructor(buffer) {
33
+ const name = 'peernet-message';
34
+ super(buffer, protons__default['default'](proto).PeernetMessage, {name});
35
+ }
36
+ }
37
+
38
+ module.exports = PeernetMessage;
@@ -6,7 +6,7 @@ var P2P = require('p2pt');
6
6
  var websocket = require('websocket');
7
7
  var http$1 = require('http');
8
8
  var Koa = require('koa');
9
- var peernetMessage = require('./peernet-message-b6925673.js');
9
+ var peernetMessage = require('./peernet-message.js');
10
10
  var dht = require('./dht.js');
11
11
  var dhtResponse = require('./dht-response.js');
12
12
  var protons = require('protons');
@@ -264,7 +264,7 @@ class LeofcoinStorage$1 {
264
264
 
265
265
  }
266
266
 
267
- var version = "0.9.0";
267
+ var version = "0.9.3";
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,10 +1007,18 @@ 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
1011
  }
1012
1012
  }
1013
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
+
1014
1022
  class ChatMessage extends codecFormatInterface {
1015
1023
  get keys() {
1016
1024
  return ['author', 'value', 'timestamp', 'files']
@@ -1018,7 +1026,7 @@ class ChatMessage extends codecFormatInterface {
1018
1026
 
1019
1027
  constructor(buffer) {
1020
1028
  const name = 'chat-message';
1021
- super(buffer, protons__default['default'](peernetMessage.proto).ChatMessage, {name});
1029
+ super(buffer, protons__default['default'](proto).ChatMessage, {name});
1022
1030
  }
1023
1031
  }
1024
1032
 
@@ -1361,7 +1369,7 @@ class MessageHandler {
1361
1369
  data,
1362
1370
  };
1363
1371
  const signature = await this.hashAndSignMessage(message);
1364
- const node = new peernetMessage.PeernetMessage({
1372
+ const node = new peernetMessage({
1365
1373
  ...message,
1366
1374
  signature,
1367
1375
  });
@@ -1489,6 +1497,7 @@ class Peernet {
1489
1497
  */
1490
1498
  this.peerMap = new Map();
1491
1499
  this.stores = [];
1500
+ this.requestProtos = {};
1492
1501
  this.storePrefix = options.storePrefix;
1493
1502
  this.root = options.root;
1494
1503
 
@@ -1506,13 +1515,13 @@ class Peernet {
1506
1515
  'peernet-response': response,
1507
1516
  'peernet-peer': PeerMessage,
1508
1517
  'peernet-peer-response': PeerMessageResponse,
1509
- 'peernet-message': peernetMessage.PeernetMessage,
1518
+ 'peernet-message': peernetMessage,
1510
1519
  'peernet-dht': dht,
1511
1520
  'peernet-dht-response': dhtResponse,
1512
1521
  'peernet-data': DataMessage,
1513
1522
  'peernet-data-response': DataMessageResponse,
1514
1523
  'peernet-ps': PsMessage,
1515
- 'chat-message': ChatMessage
1524
+ 'chat-message': ChatMessage,
1516
1525
  };
1517
1526
  this.protos = globalThis.peernet.protos;
1518
1527
 
@@ -1561,7 +1570,7 @@ class Peernet {
1561
1570
  this._peerHandler.discover(peer);
1562
1571
  peer.on('peernet.data', async (message) => {
1563
1572
  const id = message.id;
1564
- message = new peernetMessage.PeernetMessage(Buffer.from(message.data.data));
1573
+ message = new peernetMessage(Buffer.from(message.data.data));
1565
1574
  const proto = protoFor(message.decoded.data);
1566
1575
  await this._protoHandler({id, proto}, peer);
1567
1576
  const fulldId = this._getPeerId(peer.id);
@@ -1613,6 +1622,10 @@ class Peernet {
1613
1622
  }
1614
1623
  }
1615
1624
 
1625
+ addRequestHandler(name, method) {
1626
+ this.requestProtos[name] = method;
1627
+ }
1628
+
1616
1629
  /**
1617
1630
  * @private
1618
1631
  *
@@ -1715,14 +1728,10 @@ class Peernet {
1715
1728
  } else if (proto.name === 'peernet-request') {
1716
1729
  // TODO: make dynamic
1717
1730
  // exposeddevapi[proto.decoded.request](proto.decoded.params)
1718
- let response$1;
1719
- if (proto.decoded.request === 'lastBlock') {
1720
- const height = await chainStore.get('localIndex');
1721
- const hash = await chainStore.get('localBlock');
1722
- response$1 = JSON.stringify({ height: height.toString(), hash: hash.toString() });
1723
- const data = new response({ response: response$1 });
1731
+ const method = this.requestProtos[proto.decoded.request];
1732
+ if (method) {
1733
+ const data = await method();
1724
1734
  const node = await this.prepareMessage(from, data.encoded);
1725
-
1726
1735
  peer.write(Buffer.from(JSON.stringify({id, data: node.encoded})));
1727
1736
  }
1728
1737
  } else if (proto.name === 'peernet-ps' &&
@@ -1866,7 +1875,6 @@ class Peernet {
1866
1875
  }
1867
1876
 
1868
1877
 
1869
-
1870
1878
  get message() {
1871
1879
  return {
1872
1880
  /**
@@ -2019,6 +2027,10 @@ class Peernet {
2019
2027
  async removePeer(peer) {
2020
2028
  connections.delete(peer.id);
2021
2029
  }
2030
+
2031
+ get Buffer() {
2032
+ return Buffer
2033
+ }
2022
2034
  // async block(index) {
2023
2035
  // const _values = []
2024
2036
  // for (const peer of this.peers) {
@@ -244,7 +244,7 @@ class LeofcoinStorage$1 {
244
244
 
245
245
  }
246
246
 
247
- var version = "0.9.0";
247
+ var version = "0.9.3";
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;
@@ -1378,11 +1378,11 @@ class PeernetMessage extends FormatInterface {
1378
1378
 
1379
1379
  constructor(buffer) {
1380
1380
  const name = 'peernet-message';
1381
- super(buffer, protons(proto$9).PeernetMessage, {name});
1381
+ super(buffer, protons(proto$a).PeernetMessage, {name});
1382
1382
  }
1383
1383
  }
1384
1384
 
1385
- var proto$8 = `
1385
+ var proto$9 = `
1386
1386
  // PeernetDHTMessage
1387
1387
  message PeernetDHTMessage {
1388
1388
  required string hash = 1;
@@ -1408,11 +1408,11 @@ class DHTMessage extends FormatInterface {
1408
1408
 
1409
1409
  constructor(data) {
1410
1410
  const name = 'peernet-dht';
1411
- super(data, protons(proto$8).PeernetDHTMessage, {name});
1411
+ super(data, protons(proto$9).PeernetDHTMessage, {name});
1412
1412
  }
1413
1413
  }
1414
1414
 
1415
- var proto$7 = `
1415
+ var proto$8 = `
1416
1416
  // PeernetDHTMessageResponse
1417
1417
  message PeernetDHTMessageResponse {
1418
1418
  required string hash = 1;
@@ -1427,11 +1427,11 @@ class DHTMessageResponse extends FormatInterface {
1427
1427
 
1428
1428
  constructor(data) {
1429
1429
  const name = 'peernet-dht-response';
1430
- super(data, protons(proto$7).PeernetDHTMessageResponse, {name});
1430
+ super(data, protons(proto$8).PeernetDHTMessageResponse, {name});
1431
1431
  }
1432
1432
  }
1433
1433
 
1434
- var proto$6 = `
1434
+ var proto$7 = `
1435
1435
  // PeernetDataMessage
1436
1436
  message PeernetDataMessage {
1437
1437
  required string hash = 1;
@@ -1446,11 +1446,11 @@ class DataMessage extends FormatInterface {
1446
1446
 
1447
1447
  constructor(data) {
1448
1448
  const name = 'peernet-data';
1449
- super(data, protons(proto$6).PeernetDataMessage, {name});
1449
+ super(data, protons(proto$7).PeernetDataMessage, {name});
1450
1450
  }
1451
1451
  }
1452
1452
 
1453
- var proto$5 = `
1453
+ var proto$6 = `
1454
1454
  // PsMessage
1455
1455
  message PsMessage {
1456
1456
  required bytes data = 1;
@@ -1464,11 +1464,11 @@ class PsMessage extends FormatInterface {
1464
1464
 
1465
1465
  constructor(buffer) {
1466
1466
  const name = 'peernet-ps';
1467
- super(buffer, protons(proto$5).PsMessage, {name});
1467
+ super(buffer, protons(proto$6).PsMessage, {name});
1468
1468
  }
1469
1469
  }
1470
1470
 
1471
- var proto$4 = `
1471
+ var proto$5 = `
1472
1472
  // PeernetPeerMessage
1473
1473
  message PeernetPeerMessage {
1474
1474
  required string id = 1;
@@ -1482,11 +1482,11 @@ class PeerMessage extends FormatInterface {
1482
1482
 
1483
1483
  constructor(data) {
1484
1484
  const name = 'peernet-peer';
1485
- super(data, protons(proto$4).PeernetPeerMessage, {name});
1485
+ super(data, protons(proto$5).PeernetPeerMessage, {name});
1486
1486
  }
1487
1487
  }
1488
1488
 
1489
- var proto$3 = `
1489
+ var proto$4 = `
1490
1490
  // PeernetRequestMessage
1491
1491
  message PeernetRequestMessage {
1492
1492
  required string request = 1;
@@ -1500,11 +1500,11 @@ class RequestMessage extends FormatInterface {
1500
1500
 
1501
1501
  constructor(data) {
1502
1502
  const name = 'peernet-request';
1503
- super(data, protons(proto$3).PeernetRequestMessage, {name});
1503
+ super(data, protons(proto$4).PeernetRequestMessage, {name});
1504
1504
  }
1505
1505
  }
1506
1506
 
1507
- var proto$2 = `
1507
+ var proto$3 = `
1508
1508
  // PeernetResponseMessage
1509
1509
  message PeernetResponseMessage {
1510
1510
  required string response = 1;
@@ -1518,11 +1518,11 @@ class ResponseMessage extends FormatInterface {
1518
1518
 
1519
1519
  constructor(data) {
1520
1520
  const name = 'peernet-response';
1521
- super(data, protons(proto$2).PeernetResponseMessage, {name});
1521
+ super(data, protons(proto$3).PeernetResponseMessage, {name});
1522
1522
  }
1523
1523
  }
1524
1524
 
1525
- var proto$1 = `
1525
+ var proto$2 = `
1526
1526
  // PeernetPeerMessageResponse
1527
1527
  message PeernetPeerMessageResponse {
1528
1528
  required string id = 1;
@@ -1536,11 +1536,11 @@ class PeerMessageResponse extends FormatInterface {
1536
1536
 
1537
1537
  constructor(data) {
1538
1538
  const name = 'peernet-peer-response';
1539
- super(data, protons(proto$1).PeernetPeerMessageResponse, {name});
1539
+ super(data, protons(proto$2).PeernetPeerMessageResponse, {name});
1540
1540
  }
1541
1541
  }
1542
1542
 
1543
- var proto = `
1543
+ var proto$1 = `
1544
1544
  // PeernetDataMessageResponse
1545
1545
  message PeernetDataMessageResponse {
1546
1546
  required string hash = 1;
@@ -1555,10 +1555,18 @@ class DataMessageResponse extends FormatInterface {
1555
1555
 
1556
1556
  constructor(data) {
1557
1557
  const name = 'peernet-data-response';
1558
- super(data, protons(proto).PeernetDataMessageResponse, {name});
1558
+ super(data, protons(proto$1).PeernetDataMessageResponse, {name});
1559
1559
  }
1560
1560
  }
1561
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
+
1562
1570
  class ChatMessage extends FormatInterface {
1563
1571
  get keys() {
1564
1572
  return ['author', 'value', 'timestamp', 'files']
@@ -1566,7 +1574,7 @@ class ChatMessage extends FormatInterface {
1566
1574
 
1567
1575
  constructor(buffer) {
1568
1576
  const name = 'chat-message';
1569
- super(buffer, protons(proto$9).ChatMessage, {name});
1577
+ super(buffer, protons(proto).ChatMessage, {name});
1570
1578
  }
1571
1579
  }
1572
1580
 
@@ -2037,6 +2045,7 @@ class Peernet {
2037
2045
  */
2038
2046
  this.peerMap = new Map();
2039
2047
  this.stores = [];
2048
+ this.requestProtos = {};
2040
2049
  this.storePrefix = options.storePrefix;
2041
2050
  this.root = options.root;
2042
2051
 
@@ -2161,6 +2170,10 @@ class Peernet {
2161
2170
  }
2162
2171
  }
2163
2172
 
2173
+ addRequestHandler(name, method) {
2174
+ this.requestProtos[name] = method;
2175
+ }
2176
+
2164
2177
  /**
2165
2178
  * @private
2166
2179
  *
@@ -2263,14 +2276,10 @@ class Peernet {
2263
2276
  } else if (proto.name === 'peernet-request') {
2264
2277
  // TODO: make dynamic
2265
2278
  // exposeddevapi[proto.decoded.request](proto.decoded.params)
2266
- let response;
2267
- if (proto.decoded.request === 'lastBlock') {
2268
- const height = await chainStore.get('localIndex');
2269
- const hash = await chainStore.get('localBlock');
2270
- response = JSON.stringify({ height: height.toString(), hash: hash.toString() });
2271
- const data = new ResponseMessage({ response });
2279
+ const method = this.requestProtos[proto.decoded.request];
2280
+ if (method) {
2281
+ const data = await method();
2272
2282
  const node = await this.prepareMessage(from, data.encoded);
2273
-
2274
2283
  peer.write(Buffer.from(JSON.stringify({id, data: node.encoded})));
2275
2284
  }
2276
2285
  } else if (proto.name === 'peernet-ps' &&
@@ -2566,6 +2575,10 @@ class Peernet {
2566
2575
  async removePeer(peer) {
2567
2576
  connections.delete(peer.id);
2568
2577
  }
2578
+
2579
+ get Buffer() {
2580
+ return Buffer
2581
+ }
2569
2582
  // async block(index) {
2570
2583
  // const _values = []
2571
2584
  // for (const peer of this.peers) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leofcoin/peernet",
3
- "version": "0.9.1",
3
+ "version": "0.9.4",
4
4
  "description": "",
5
5
  "main": "dist/commonjs/peernet.js",
6
6
  "module": "dist/module/peernet.js",
@@ -0,0 +1,7 @@
1
+ peernet.addRequestHandler('lastBlock', () => {
2
+ let response;
3
+ const height = await chainStore.get('localIndex')
4
+ const hash = await chainStore.get('localBlock')
5
+ response = JSON.stringify({ height: height.toString(), hash: hash.toString() })
6
+ return new peernet.protos['peernet-response']({ response })
7
+ })