@leofcoin/peernet 0.9.3 → 0.9.6

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.
Files changed (62) hide show
  1. package/dist/browser/peernet.js +651 -646
  2. package/dist/commonjs/codec-73adfc0f.js +205 -0
  3. package/dist/commonjs/codec-format-interface.js +5 -5
  4. package/dist/commonjs/codec.js +6 -199
  5. package/dist/commonjs/dht-response.js +1 -1
  6. package/dist/commonjs/dht.js +1 -1
  7. package/dist/commonjs/hash.js +4 -4
  8. package/dist/commonjs/peernet-message.js +1 -1
  9. package/dist/commonjs/peernet.js +653 -648
  10. package/dist/commonjs/request.js +1 -1
  11. package/dist/commonjs/response.js +1 -1
  12. package/dist/module/peernet.js +10 -4
  13. package/package.json +1 -1
  14. package/src/client.js +71 -0
  15. package/src/codec/codec-format-interface.js +139 -0
  16. package/src/codec/codec.js +114 -0
  17. package/src/codec/codecs.js +79 -0
  18. package/src/dht/dht.js +125 -0
  19. package/src/discovery/peer-discovery.js +75 -0
  20. package/src/errors/errors.js +12 -0
  21. package/src/handlers/message.js +52 -0
  22. package/src/hash/hash.js +145 -0
  23. package/src/http/api.js +115 -0
  24. package/src/http/client/api.js +41 -0
  25. package/src/http/client/client.js +10 -0
  26. package/src/http/client/http-client.js +44 -0
  27. package/src/http/client/storage.js +36 -0
  28. package/src/http/http.js +28 -0
  29. package/src/messages/chat-message.js +14 -0
  30. package/src/messages/data-response.js +14 -0
  31. package/src/messages/data.js +14 -0
  32. package/src/messages/dht-response.js +15 -0
  33. package/src/messages/dht.js +25 -0
  34. package/src/messages/peer-response.js +14 -0
  35. package/src/messages/peer.js +14 -0
  36. package/src/messages/peernet-message.js +14 -0
  37. package/src/messages/ps.js +14 -0
  38. package/src/messages/request.js +14 -0
  39. package/src/messages/response.js +14 -0
  40. package/src/peer-info.js +9 -0
  41. package/src/peer.js +43 -0
  42. package/src/peernet.js +680 -0
  43. package/src/proto/chat-message.proto.js +7 -0
  44. package/src/proto/data-response.proto.js +7 -0
  45. package/src/proto/data.proto.js +7 -0
  46. package/src/proto/dht-response.proto.js +7 -0
  47. package/src/proto/dht.proto.js +7 -0
  48. package/src/proto/peer-response.proto.js +6 -0
  49. package/src/proto/peer.proto.js +6 -0
  50. package/src/proto/peernet.proto.js +9 -0
  51. package/src/proto/ps.proto.js +6 -0
  52. package/src/proto/request.proto.js +6 -0
  53. package/src/proto/response.proto.js +6 -0
  54. package/src/server.js +25 -0
  55. package/src/utils/utils.js +78 -0
  56. package/.nyc_output/39a61420-013f-4db1-a597-7c5444da26e7.json +0 -1
  57. package/.nyc_output/4b387323-32a3-4eee-8f05-d13f2e0a5bf4.json +0 -1
  58. package/.nyc_output/ef71cf24-d9d9-45dd-814f-8d53cb6769f3.json +0 -1
  59. package/.nyc_output/processinfo/39a61420-013f-4db1-a597-7c5444da26e7.json +0 -1
  60. package/.nyc_output/processinfo/4b387323-32a3-4eee-8f05-d13f2e0a5bf4.json +0 -1
  61. package/.nyc_output/processinfo/ef71cf24-d9d9-45dd-814f-8d53cb6769f3.json +0 -1
  62. package/.nyc_output/processinfo/index.json +0 -1
@@ -0,0 +1,205 @@
1
+ 'use strict';
2
+
3
+ var varint = require('varint');
4
+ var bs32 = require('bs32');
5
+ var bs58 = require('bs58');
6
+ var isHex = require('is-hex');
7
+
8
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
+
10
+ var varint__default = /*#__PURE__*/_interopDefaultLegacy(varint);
11
+ var bs32__default = /*#__PURE__*/_interopDefaultLegacy(bs32);
12
+ var bs58__default = /*#__PURE__*/_interopDefaultLegacy(bs58);
13
+ var isHex__default = /*#__PURE__*/_interopDefaultLegacy(isHex);
14
+
15
+ var codecs = {
16
+ // just a hash
17
+ 'disco-hash': {
18
+ codec: '30',
19
+ hashAlg: 'dbl-keccak-512', // ,
20
+ // testnet: 'olivia'
21
+ },
22
+ 'peernet-peer-response': {
23
+ codec: '707072',
24
+ hashAlg: 'keccak-256',
25
+ },
26
+ 'peernet-peer': {
27
+ codec: '7070',
28
+ hashAlg: 'keccak-256',
29
+ },
30
+ 'peernet-dht': {
31
+ codec: '706468',
32
+ hashAlg: 'keccak-256',
33
+ },
34
+ 'peernet-dht-response': {
35
+ codec: '706472',
36
+ hashAlg: 'keccak-256',
37
+ },
38
+ // data
39
+ 'peernet-data': {
40
+ codec: '706461',
41
+ hashAlg: 'keccak-256',
42
+ },
43
+ 'peernet-data-response': {
44
+ codec: '70646172',
45
+ hashAlg: 'keccak-256',
46
+ },
47
+ // message
48
+ 'peernet-message': {
49
+ codec: '706d65',
50
+ hashAlg: 'keccak-512',
51
+ },
52
+ // pubsub
53
+ 'peernet-ps': {
54
+ codec: '707073',
55
+ hashAlg: 'keccak-256',
56
+ },
57
+ 'peernet-response': {
58
+ codec: '7072',
59
+ hashAlg: 'keccak-256',
60
+ },
61
+ 'peernet-request': {
62
+ codec: '707271',
63
+ hashAlg: 'keccak-256',
64
+ },
65
+ // normal block
66
+ 'leofcoin-block': {
67
+ codec: '6c62',
68
+ hashAlg: 'dbl-keccak-512', // ,
69
+ // testnet: 'olivia'
70
+ },
71
+ 'leofcoin-tx': {
72
+ codec: '6c74',
73
+ hashAlg: 'dbl-keccak-512', // ,
74
+ // testnet: 'olivia'
75
+ },
76
+ // itx
77
+ 'leofcoin-itx': {
78
+ codec: '6c69',
79
+ hashAlg: 'keccak-512', // ,
80
+ // testnet: 'olivia'
81
+ },
82
+ // peer reputation
83
+ 'leofcoin-pr': {
84
+ codec: '6c70',
85
+ hashAlg: 'keccak-256', // ,
86
+ // testnet: 'olivia'
87
+ },
88
+ // chat message
89
+ 'chat-message': {
90
+ codec: '636d',
91
+ hashAlg: 'dbl-keccak-512',
92
+ },
93
+ };
94
+
95
+ class PeernetCodec {
96
+ get codecs() {
97
+ return {...globalThis.peernet.codecs, ...codecs}
98
+ }
99
+ constructor(buffer) {
100
+ if (buffer) {
101
+ if (Buffer.isBuffer(buffer)) {
102
+ const codec = varint__default['default'].decode(buffer);
103
+ const name = this.getCodecName(codec);
104
+
105
+ if (name) {
106
+ this.name = name;
107
+ this.encoded = buffer;
108
+ this.decode(buffer);
109
+ } else {
110
+ this.encode(buffer);
111
+ }
112
+ }
113
+ if (typeof buffer === 'string') {
114
+ if (this.codecs[buffer]) this.fromName(buffer);
115
+ else if (isHex__default['default'](buffer)) this.fromHex(buffer);
116
+ else if (bs32__default['default'].test(buffer)) this.fromBs32(buffer);
117
+ else this.fromBs58(buffer);
118
+ }
119
+ if (!isNaN(buffer)) if (this.codecs[this.getCodecName(buffer)]) this.fromCodec(buffer);
120
+ }
121
+ }
122
+
123
+ fromEncoded(encoded) {
124
+ const codec = varint__default['default'].decode(encoded);
125
+ const name = this.getCodecName(codec);
126
+ this.name = name;
127
+ this.encoded = encoded;
128
+ this.decode(encoded);
129
+ }
130
+
131
+ fromHex(hex) {
132
+ this.encoded = Buffer.from(hex, 'hex');
133
+ this.decode();
134
+ }
135
+
136
+ fromBs32(input) {
137
+ this.encoded = bs32__default['default'].decode(input);
138
+ this.decode();
139
+ }
140
+
141
+ fromBs58(input) {
142
+ this.encoded = bs58__default['default'].decode(input);
143
+ this.decode();
144
+ }
145
+
146
+ getCodec(name) {
147
+ return this.codecs[name].codec
148
+ }
149
+
150
+ getCodecName(codec) {
151
+ return Object.keys(this.codecs).reduce((p, c) => {
152
+ if (parseInt(Buffer.from(`${this.getCodec(c)}`, 'hex').toString('hex'), 16) === codec) return c;
153
+ else return p;
154
+ }, undefined)
155
+ }
156
+
157
+ getHashAlg(name) {
158
+ return this.codecs[name].hashAlg
159
+ }
160
+
161
+ fromCodec(codec) {
162
+ this.name = this.getCodecName(codec);
163
+ this.hashAlg = this.getHashAlg(this.name);
164
+
165
+ this.codec = this.getCodec(this.name);
166
+ this.codecBuffer = Buffer.from(varint__default['default'].encode(parseInt(Buffer.from(`${this.codec}`, 'hex').toString('hex'), 16)), 'hex');
167
+ }
168
+
169
+ fromName(name) {
170
+ const codec = this.getCodec(name);
171
+ this.name = name;
172
+ this.codec = codec;
173
+ this.hashAlg = this.getHashAlg(name);
174
+ this.codecBuffer = Buffer.from(varint__default['default'].encode(parseInt(Buffer.from(`${codec}`, 'hex').toString('hex'), 16)), 'hex');
175
+ }
176
+
177
+ toBs32() {
178
+ this.encode();
179
+ return bs32__default['default'].encode(this.encoded)
180
+ }
181
+
182
+ toBs58() {
183
+ this.encode();
184
+ return bs58__default['default'].encode(this.encoded)
185
+ }
186
+
187
+ toHex() {
188
+ return this.encoded.toString('hex')
189
+ }
190
+
191
+ decode() {
192
+ const codec = varint__default['default'].decode(this.encoded);
193
+ this.fromCodec(codec);
194
+ this.name = this.getCodecName(codec);
195
+ }
196
+
197
+ encode() {
198
+ const codec = Buffer.from(varint__default['default'].encode(parseInt(Buffer.from(`${this.codec}`, 'hex').toString('hex'), 16)), 'hex');
199
+ this.encoded = codec;
200
+ return this.encoded
201
+ }
202
+ }
203
+
204
+ exports.PeernetCodec = PeernetCodec;
205
+ exports.codecs = codecs;
@@ -3,7 +3,7 @@
3
3
  var bs32 = require('bs32');
4
4
  var bs58 = require('bs58');
5
5
  var isHex = require('is-hex');
6
- var codec = require('./codec.js');
6
+ var codec = require('./codec-73adfc0f.js');
7
7
  var hash = require('./hash.js');
8
8
  require('varint');
9
9
  require('keccak');
@@ -26,7 +26,7 @@ class FormatInterface {
26
26
  if (options.name) this.name = options.name;
27
27
  this.hashFormat = options.hashFormat || 'bs32';
28
28
  if (Buffer.isBuffer(buffer)) {
29
- const codec$1 = new codec(buffer);
29
+ const codec$1 = new codec.PeernetCodec(buffer);
30
30
  if (codec$1.name) {
31
31
  this.fromEncoded(buffer);
32
32
  } else {
@@ -64,7 +64,7 @@ class FormatInterface {
64
64
  */
65
65
  decode() {
66
66
  let encoded = this.encoded;
67
- const discoCodec = new codec(this.encoded.toString('hex'));
67
+ const discoCodec = new codec.PeernetCodec(this.encoded.toString('hex'));
68
68
  encoded = encoded.slice(discoCodec.codecBuffer.length);
69
69
  this.name = discoCodec.name;
70
70
  this.decoded = this.protoDecode(encoded);
@@ -76,7 +76,7 @@ class FormatInterface {
76
76
  */
77
77
  encode(decoded) {
78
78
  if (!decoded) decoded = this.decoded;
79
- const codec$1 = new codec(this.name);
79
+ const codec$1 = new codec.PeernetCodec(this.name);
80
80
  this.encoded = Buffer.concat([codec$1.codecBuffer, this.protoEncode(decoded)]);
81
81
  return this.encoded
82
82
  }
@@ -85,7 +85,7 @@ class FormatInterface {
85
85
  * @param {Buffer} encoded
86
86
  */
87
87
  fromEncoded(encoded) {
88
- const codec$1 = new codec(encoded);
88
+ const codec$1 = new codec.PeernetCodec(encoded);
89
89
  this.name = codec$1.name;
90
90
  this.encoded = encoded;
91
91
  this.decode();
@@ -1,204 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var varint = require('varint');
4
- var bs32 = require('bs32');
5
- var bs58 = require('bs58');
6
- var isHex = require('is-hex');
3
+ require('varint');
4
+ require('bs32');
5
+ require('bs58');
6
+ require('is-hex');
7
+ var codec = require('./codec-73adfc0f.js');
7
8
 
8
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
9
 
10
- var varint__default = /*#__PURE__*/_interopDefaultLegacy(varint);
11
- var bs32__default = /*#__PURE__*/_interopDefaultLegacy(bs32);
12
- var bs58__default = /*#__PURE__*/_interopDefaultLegacy(bs58);
13
- var isHex__default = /*#__PURE__*/_interopDefaultLegacy(isHex);
14
10
 
15
- var codecs = {
16
- // just a hash
17
- 'disco-hash': {
18
- codec: '30',
19
- hashAlg: 'dbl-keccak-512', // ,
20
- // testnet: 'olivia'
21
- },
22
- 'peernet-peer-response': {
23
- codec: '707072',
24
- hashAlg: 'keccak-256',
25
- },
26
- 'peernet-peer': {
27
- codec: '7070',
28
- hashAlg: 'keccak-256',
29
- },
30
- 'peernet-dht': {
31
- codec: '706468',
32
- hashAlg: 'keccak-256',
33
- },
34
- 'peernet-dht-response': {
35
- codec: '706472',
36
- hashAlg: 'keccak-256',
37
- },
38
- // data
39
- 'peernet-data': {
40
- codec: '706461',
41
- hashAlg: 'keccak-256',
42
- },
43
- 'peernet-data-response': {
44
- codec: '70646172',
45
- hashAlg: 'keccak-256',
46
- },
47
- // message
48
- 'peernet-message': {
49
- codec: '706d65',
50
- hashAlg: 'keccak-512',
51
- },
52
- // pubsub
53
- 'peernet-ps': {
54
- codec: '707073',
55
- hashAlg: 'keccak-256',
56
- },
57
- 'peernet-response': {
58
- codec: '7072',
59
- hashAlg: 'keccak-256',
60
- },
61
- 'peernet-request': {
62
- codec: '707271',
63
- hashAlg: 'keccak-256',
64
- },
65
- // normal block
66
- 'leofcoin-block': {
67
- codec: '6c62',
68
- hashAlg: 'dbl-keccak-512', // ,
69
- // testnet: 'olivia'
70
- },
71
- 'leofcoin-tx': {
72
- codec: '6c74',
73
- hashAlg: 'dbl-keccak-512', // ,
74
- // testnet: 'olivia'
75
- },
76
- // itx
77
- 'leofcoin-itx': {
78
- codec: '6c69',
79
- hashAlg: 'keccak-512', // ,
80
- // testnet: 'olivia'
81
- },
82
- // peer reputation
83
- 'leofcoin-pr': {
84
- codec: '6c70',
85
- hashAlg: 'keccak-256', // ,
86
- // testnet: 'olivia'
87
- },
88
- // chat message
89
- 'chat-message': {
90
- codec: '636d',
91
- hashAlg: 'dbl-keccak-512',
92
- },
93
- };
94
-
95
- class PeernetCodec {
96
- get codecs() {
97
- return {...globalThis.peernet.codecs, ...codecs}
98
- }
99
- constructor(buffer) {
100
- if (buffer) {
101
- if (Buffer.isBuffer(buffer)) {
102
- const codec = varint__default['default'].decode(buffer);
103
- const name = this.getCodecName(codec);
104
-
105
- if (name) {
106
- this.name = name;
107
- this.encoded = buffer;
108
- this.decode(buffer);
109
- } else {
110
- this.encode(buffer);
111
- }
112
- }
113
- if (typeof buffer === 'string') {
114
- if (this.codecs[buffer]) this.fromName(buffer);
115
- else if (isHex__default['default'](buffer)) this.fromHex(buffer);
116
- else if (bs32__default['default'].test(buffer)) this.fromBs32(buffer);
117
- else this.fromBs58(buffer);
118
- }
119
- if (!isNaN(buffer)) if (this.codecs[this.getCodecName(buffer)]) this.fromCodec(buffer);
120
- }
121
- }
122
-
123
- fromEncoded(encoded) {
124
- const codec = varint__default['default'].decode(encoded);
125
- const name = this.getCodecName(codec);
126
- this.name = name;
127
- this.encoded = encoded;
128
- this.decode(encoded);
129
- }
130
-
131
- fromHex(hex) {
132
- this.encoded = Buffer.from(hex, 'hex');
133
- this.decode();
134
- }
135
-
136
- fromBs32(input) {
137
- this.encoded = bs32__default['default'].decode(input);
138
- this.decode();
139
- }
140
-
141
- fromBs58(input) {
142
- this.encoded = bs58__default['default'].decode(input);
143
- this.decode();
144
- }
145
-
146
- getCodec(name) {
147
- return this.codecs[name].codec
148
- }
149
-
150
- getCodecName(codec) {
151
- return Object.keys(this.codecs).reduce((p, c) => {
152
- if (parseInt(Buffer.from(`${this.getCodec(c)}`, 'hex').toString('hex'), 16) === codec) return c;
153
- else return p;
154
- }, undefined)
155
- }
156
-
157
- getHashAlg(name) {
158
- return this.codecs[name].hashAlg
159
- }
160
-
161
- fromCodec(codec) {
162
- this.name = this.getCodecName(codec);
163
- this.hashAlg = this.getHashAlg(this.name);
164
-
165
- this.codec = this.getCodec(this.name);
166
- this.codecBuffer = Buffer.from(varint__default['default'].encode(parseInt(Buffer.from(`${this.codec}`, 'hex').toString('hex'), 16)), 'hex');
167
- }
168
-
169
- fromName(name) {
170
- const codec = this.getCodec(name);
171
- this.name = name;
172
- this.codec = codec;
173
- this.hashAlg = this.getHashAlg(name);
174
- this.codecBuffer = Buffer.from(varint__default['default'].encode(parseInt(Buffer.from(`${codec}`, 'hex').toString('hex'), 16)), 'hex');
175
- }
176
-
177
- toBs32() {
178
- this.encode();
179
- return bs32__default['default'].encode(this.encoded)
180
- }
181
-
182
- toBs58() {
183
- this.encode();
184
- return bs58__default['default'].encode(this.encoded)
185
- }
186
-
187
- toHex() {
188
- return this.encoded.toString('hex')
189
- }
190
-
191
- decode() {
192
- const codec = varint__default['default'].decode(this.encoded);
193
- this.fromCodec(codec);
194
- this.name = this.getCodecName(codec);
195
- }
196
-
197
- encode() {
198
- const codec = Buffer.from(varint__default['default'].encode(parseInt(Buffer.from(`${this.codec}`, 'hex').toString('hex'), 16)), 'hex');
199
- this.encoded = codec;
200
- return this.encoded
201
- }
202
- }
203
-
204
- module.exports = PeernetCodec;
11
+ module.exports = codec.PeernetCodec;
@@ -5,7 +5,7 @@ require('bs32');
5
5
  var codecFormatInterface = require('./codec-format-interface.js');
6
6
  require('bs58');
7
7
  require('is-hex');
8
- require('./codec.js');
8
+ require('./codec-73adfc0f.js');
9
9
  require('varint');
10
10
  require('./hash.js');
11
11
  require('keccak');
@@ -5,7 +5,7 @@ var codecFormatInterface = require('./codec-format-interface.js');
5
5
  require('bs32');
6
6
  require('bs58');
7
7
  require('is-hex');
8
- require('./codec.js');
8
+ require('./codec-73adfc0f.js');
9
9
  require('varint');
10
10
  require('./hash.js');
11
11
  require('keccak');
@@ -5,7 +5,7 @@ var varint = require('varint');
5
5
  var bs32 = require('bs32');
6
6
  var bs58 = require('bs58');
7
7
  var isHex = require('is-hex');
8
- var codec = require('./codec.js');
8
+ var codec = require('./codec-73adfc0f.js');
9
9
 
10
10
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
11
 
@@ -22,7 +22,7 @@ class PeernetHash {
22
22
  if (options.codecs) this.codecs = options.codecs;
23
23
  if (buffer) {
24
24
  if (Buffer.isBuffer(buffer)) {
25
- this.discoCodec = new codec(buffer, this.codecs);
25
+ this.discoCodec = new codec.PeernetCodec(buffer, this.codecs);
26
26
  const name = this.discoCodec.name;
27
27
 
28
28
  if (name) {
@@ -88,7 +88,7 @@ class PeernetHash {
88
88
  encode(buffer, name) {
89
89
  if (!this.name && name) this.name = name;
90
90
  if (!buffer) buffer = this.buffer;
91
- this.discoCodec = new codec(this.name, this.codecs);
91
+ this.discoCodec = new codec.PeernetCodec(this.name, this.codecs);
92
92
  this.discoCodec.fromName(this.name);
93
93
  let hashAlg = this.discoCodec.hashAlg;
94
94
  if (hashAlg.includes('dbl')) {
@@ -128,7 +128,7 @@ class PeernetHash {
128
128
  this.hash = buffer;
129
129
  const codec$1 = varint__default['default'].decode(buffer);
130
130
 
131
- this.discoCodec = new codec(codec$1, this.codecs);
131
+ this.discoCodec = new codec.PeernetCodec(codec$1, this.codecs);
132
132
  // TODO: validate codec
133
133
  buffer = buffer.slice(varint__default['default'].decode.bytes);
134
134
  this.size = varint__default['default'].decode(buffer);
@@ -5,7 +5,7 @@ var codecFormatInterface = require('./codec-format-interface.js');
5
5
  require('bs32');
6
6
  require('bs58');
7
7
  require('is-hex');
8
- require('./codec.js');
8
+ require('./codec-73adfc0f.js');
9
9
  require('varint');
10
10
  require('./hash.js');
11
11
  require('keccak');