@leofcoin/peernet 0.9.4 → 0.9.7

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 +10 -12
  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 +12 -14
  10. package/dist/commonjs/request.js +1 -1
  11. package/dist/commonjs/response.js +1 -1
  12. package/dist/module/peernet.js +10 -12
  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 +121 -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
@@ -261,7 +261,7 @@ class LeofcoinStorage$1 {
261
261
 
262
262
  }
263
263
 
264
- var version = "0.9.3";
264
+ var version = "0.9.6";
265
265
 
266
266
  var api$1 = {
267
267
  version: ({send}) => send({client: '@peernet/api/http', version}),
@@ -1818,17 +1818,13 @@ class DhtEarth {
1818
1818
  const peerLoc = await this.getCoordinates(address);
1819
1819
 
1820
1820
  for (const provider of providers) {
1821
- all.push(this.getDistance(peerLoc, provider));
1821
+ if (provider.address === '127.0.0.1') all.push({provider, distance: 0});
1822
+ else all.push(this.getDistance(peerLoc, provider));
1822
1823
  }
1823
1824
 
1824
1825
  all = await Promise.all(all);
1825
-
1826
- const closestPeer = all.reduce((p, c) => {
1827
- if (!c.distance || c.distance === NaN) c.distance = 0;
1828
- if (c.distance < p || p === 0) return c.provider;
1829
- }, 0);
1830
-
1831
- return closestPeer;
1826
+ all = all.sort((previous, current) => previous.distance - current.distance);
1827
+ return all[0].provider;
1832
1828
  }
1833
1829
 
1834
1830
  /**
@@ -2000,11 +1996,11 @@ class Peernet {
2000
1996
  }
2001
1997
 
2002
1998
  addProto(name, proto) {
2003
- if (!globalThis.peernet.protos[name]) globalThis.peernet.protos[name] = proto;
1999
+ if (!this.protos[name]) this.protos[name] = proto;
2004
2000
  }
2005
2001
 
2006
- addCodec(name, proto) {
2007
- if (!globalThis.peernet.codecs[name]) globalThis.peernet.codecs[name] = proto;
2002
+ addCodec(name, codec) {
2003
+ if (!this.codecs[name]) this.codecs[name] = codec;
2008
2004
  }
2009
2005
 
2010
2006
  async addStore(name, prefix, root, isPrivate = true) {
@@ -2088,7 +2084,9 @@ class Peernet {
2088
2084
  'peernet-ps': PsMessage,
2089
2085
  'chat-message': ChatMessage,
2090
2086
  };
2087
+
2091
2088
  this.protos = globalThis.peernet.protos;
2089
+ this.codecs = codecs;
2092
2090
 
2093
2091
  this._messageHandler = new MessageHandler(this.network);
2094
2092
 
@@ -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');
@@ -14,7 +14,7 @@ var codecFormatInterface = require('./codec-format-interface.js');
14
14
  var request = require('./request.js');
15
15
  var response = require('./response.js');
16
16
  var fetch$1 = require('node-fetch');
17
- var codec = require('./codec.js');
17
+ var codec = require('./codec-73adfc0f.js');
18
18
  var hash = require('./hash.js');
19
19
  var MultiWallet = require('@leofcoin/multi-wallet');
20
20
  require('bs32');
@@ -264,7 +264,7 @@ class LeofcoinStorage$1 {
264
264
 
265
265
  }
266
266
 
267
- var version = "0.9.3";
267
+ var version = "0.9.6";
268
268
 
269
269
  var api$1 = {
270
270
  version: ({send}) => send({client: '@peernet/api/http', version}),
@@ -1036,7 +1036,7 @@ const debug = (log) => {
1036
1036
 
1037
1037
  const protoFor = (data) => {
1038
1038
  if (!Buffer.isBuffer(data)) data = Buffer.from(data);
1039
- const codec$1 = new codec(data);
1039
+ const codec$1 = new codec.PeernetCodec(data);
1040
1040
  if (!codec$1.name) throw new Error('proto not found')
1041
1041
  const Proto = globalThis.peernet.protos[codec$1.name];
1042
1042
  if (!Proto) throw (new Error(`No proto defined for ${codec$1.name}`))
@@ -1253,17 +1253,13 @@ class DhtEarth {
1253
1253
  const peerLoc = await this.getCoordinates(address);
1254
1254
 
1255
1255
  for (const provider of providers) {
1256
- all.push(this.getDistance(peerLoc, provider));
1256
+ if (provider.address === '127.0.0.1') all.push({provider, distance: 0});
1257
+ else all.push(this.getDistance(peerLoc, provider));
1257
1258
  }
1258
1259
 
1259
1260
  all = await Promise.all(all);
1260
-
1261
- const closestPeer = all.reduce((p, c) => {
1262
- if (!c.distance || c.distance === NaN) c.distance = 0;
1263
- if (c.distance < p || p === 0) return c.provider;
1264
- }, 0);
1265
-
1266
- return closestPeer;
1261
+ all = all.sort((previous, current) => previous.distance - current.distance);
1262
+ return all[0].provider;
1267
1263
  }
1268
1264
 
1269
1265
  /**
@@ -1435,11 +1431,11 @@ class Peernet {
1435
1431
  }
1436
1432
 
1437
1433
  addProto(name, proto) {
1438
- if (!globalThis.peernet.protos[name]) globalThis.peernet.protos[name] = proto;
1434
+ if (!this.protos[name]) this.protos[name] = proto;
1439
1435
  }
1440
1436
 
1441
- addCodec(name, proto) {
1442
- if (!globalThis.peernet.codecs[name]) globalThis.peernet.codecs[name] = proto;
1437
+ addCodec(name, codec) {
1438
+ if (!this.codecs[name]) this.codecs[name] = codec;
1443
1439
  }
1444
1440
 
1445
1441
  async addStore(name, prefix, root, isPrivate = true) {
@@ -1523,7 +1519,9 @@ class Peernet {
1523
1519
  'peernet-ps': PsMessage,
1524
1520
  'chat-message': ChatMessage,
1525
1521
  };
1522
+
1526
1523
  this.protos = globalThis.peernet.protos;
1524
+ this.codecs = codec.codecs;
1527
1525
 
1528
1526
  this._messageHandler = new MessageHandler(this.network);
1529
1527
 
@@ -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 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');