@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 +26 -2
- package/dist/browser/peernet.js +43 -31
- package/dist/commonjs/peernet-message.js +26 -4
- package/dist/commonjs/peernet.js +37 -25
- package/dist/module/peernet.js +42 -29
- package/package.json +1 -1
- package/test/lastBlock.js +7 -0
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
|
+
```
|
package/dist/browser/peernet.js
CHANGED
|
@@ -261,7 +261,7 @@ class LeofcoinStorage$1 {
|
|
|
261
261
|
|
|
262
262
|
}
|
|
263
263
|
|
|
264
|
-
var version = "0.9.
|
|
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$
|
|
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$
|
|
1398
|
+
super(buffer, protons__default['default'](proto$a).PeernetMessage, {name});
|
|
1399
1399
|
}
|
|
1400
1400
|
}
|
|
1401
1401
|
|
|
1402
|
-
var proto$
|
|
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$
|
|
1428
|
+
super(data, protons__default['default'](proto$9).PeernetDHTMessage, {name});
|
|
1429
1429
|
}
|
|
1430
1430
|
}
|
|
1431
1431
|
|
|
1432
|
-
var proto$
|
|
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$
|
|
1447
|
+
super(data, protons__default['default'](proto$8).PeernetDHTMessageResponse, {name});
|
|
1448
1448
|
}
|
|
1449
1449
|
}
|
|
1450
1450
|
|
|
1451
|
-
var proto$
|
|
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$
|
|
1466
|
+
super(data, protons__default['default'](proto$7).PeernetDataMessage, {name});
|
|
1467
1467
|
}
|
|
1468
1468
|
}
|
|
1469
1469
|
|
|
1470
|
-
var proto$
|
|
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$
|
|
1484
|
+
super(buffer, protons__default['default'](proto$6).PsMessage, {name});
|
|
1485
1485
|
}
|
|
1486
1486
|
}
|
|
1487
1487
|
|
|
1488
|
-
var proto$
|
|
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$
|
|
1502
|
+
super(data, protons__default['default'](proto$5).PeernetPeerMessage, {name});
|
|
1503
1503
|
}
|
|
1504
1504
|
}
|
|
1505
1505
|
|
|
1506
|
-
var proto$
|
|
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$
|
|
1520
|
+
super(data, protons__default['default'](proto$4).PeernetRequestMessage, {name});
|
|
1521
1521
|
}
|
|
1522
1522
|
}
|
|
1523
1523
|
|
|
1524
|
-
var proto$
|
|
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$
|
|
1538
|
+
super(data, protons__default['default'](proto$3).PeernetResponseMessage, {name});
|
|
1539
1539
|
}
|
|
1540
1540
|
}
|
|
1541
1541
|
|
|
1542
|
-
var proto$
|
|
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$
|
|
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
|
|
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
|
-
|
|
2284
|
-
if (
|
|
2285
|
-
const
|
|
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
|
|
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
|
-
|
|
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;
|
package/dist/commonjs/peernet.js
CHANGED
|
@@ -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
|
|
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.
|
|
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$
|
|
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,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'](
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
1719
|
-
if (
|
|
1720
|
-
const
|
|
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) {
|
package/dist/module/peernet.js
CHANGED
|
@@ -244,7 +244,7 @@ class LeofcoinStorage$1 {
|
|
|
244
244
|
|
|
245
245
|
}
|
|
246
246
|
|
|
247
|
-
var version = "0.9.
|
|
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$
|
|
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$
|
|
1381
|
+
super(buffer, protons(proto$a).PeernetMessage, {name});
|
|
1382
1382
|
}
|
|
1383
1383
|
}
|
|
1384
1384
|
|
|
1385
|
-
var proto$
|
|
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$
|
|
1411
|
+
super(data, protons(proto$9).PeernetDHTMessage, {name});
|
|
1412
1412
|
}
|
|
1413
1413
|
}
|
|
1414
1414
|
|
|
1415
|
-
var proto$
|
|
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$
|
|
1430
|
+
super(data, protons(proto$8).PeernetDHTMessageResponse, {name});
|
|
1431
1431
|
}
|
|
1432
1432
|
}
|
|
1433
1433
|
|
|
1434
|
-
var proto$
|
|
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$
|
|
1449
|
+
super(data, protons(proto$7).PeernetDataMessage, {name});
|
|
1450
1450
|
}
|
|
1451
1451
|
}
|
|
1452
1452
|
|
|
1453
|
-
var proto$
|
|
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$
|
|
1467
|
+
super(buffer, protons(proto$6).PsMessage, {name});
|
|
1468
1468
|
}
|
|
1469
1469
|
}
|
|
1470
1470
|
|
|
1471
|
-
var proto$
|
|
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$
|
|
1485
|
+
super(data, protons(proto$5).PeernetPeerMessage, {name});
|
|
1486
1486
|
}
|
|
1487
1487
|
}
|
|
1488
1488
|
|
|
1489
|
-
var proto$
|
|
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$
|
|
1503
|
+
super(data, protons(proto$4).PeernetRequestMessage, {name});
|
|
1504
1504
|
}
|
|
1505
1505
|
}
|
|
1506
1506
|
|
|
1507
|
-
var proto$
|
|
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$
|
|
1521
|
+
super(data, protons(proto$3).PeernetResponseMessage, {name});
|
|
1522
1522
|
}
|
|
1523
1523
|
}
|
|
1524
1524
|
|
|
1525
|
-
var proto$
|
|
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$
|
|
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
|
|
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
|
-
|
|
2267
|
-
if (
|
|
2268
|
-
const
|
|
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
|
@@ -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
|
+
})
|