@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.
- package/dist/browser/peernet.js +10 -12
- package/dist/commonjs/codec-73adfc0f.js +205 -0
- package/dist/commonjs/codec-format-interface.js +5 -5
- package/dist/commonjs/codec.js +6 -199
- package/dist/commonjs/dht-response.js +1 -1
- package/dist/commonjs/dht.js +1 -1
- package/dist/commonjs/hash.js +4 -4
- package/dist/commonjs/peernet-message.js +1 -1
- package/dist/commonjs/peernet.js +12 -14
- package/dist/commonjs/request.js +1 -1
- package/dist/commonjs/response.js +1 -1
- package/dist/module/peernet.js +10 -12
- package/package.json +1 -1
- package/src/client.js +71 -0
- package/src/codec/codec-format-interface.js +139 -0
- package/src/codec/codec.js +114 -0
- package/src/codec/codecs.js +79 -0
- package/src/dht/dht.js +121 -0
- package/src/discovery/peer-discovery.js +75 -0
- package/src/errors/errors.js +12 -0
- package/src/handlers/message.js +52 -0
- package/src/hash/hash.js +145 -0
- package/src/http/api.js +115 -0
- package/src/http/client/api.js +41 -0
- package/src/http/client/client.js +10 -0
- package/src/http/client/http-client.js +44 -0
- package/src/http/client/storage.js +36 -0
- package/src/http/http.js +28 -0
- package/src/messages/chat-message.js +14 -0
- package/src/messages/data-response.js +14 -0
- package/src/messages/data.js +14 -0
- package/src/messages/dht-response.js +15 -0
- package/src/messages/dht.js +25 -0
- package/src/messages/peer-response.js +14 -0
- package/src/messages/peer.js +14 -0
- package/src/messages/peernet-message.js +14 -0
- package/src/messages/ps.js +14 -0
- package/src/messages/request.js +14 -0
- package/src/messages/response.js +14 -0
- package/src/peer-info.js +9 -0
- package/src/peer.js +43 -0
- package/src/peernet.js +680 -0
- package/src/proto/chat-message.proto.js +7 -0
- package/src/proto/data-response.proto.js +7 -0
- package/src/proto/data.proto.js +7 -0
- package/src/proto/dht-response.proto.js +7 -0
- package/src/proto/dht.proto.js +7 -0
- package/src/proto/peer-response.proto.js +6 -0
- package/src/proto/peer.proto.js +6 -0
- package/src/proto/peernet.proto.js +9 -0
- package/src/proto/ps.proto.js +6 -0
- package/src/proto/request.proto.js +6 -0
- package/src/proto/response.proto.js +6 -0
- package/src/server.js +25 -0
- package/src/utils/utils.js +78 -0
- package/.nyc_output/39a61420-013f-4db1-a597-7c5444da26e7.json +0 -1
- package/.nyc_output/4b387323-32a3-4eee-8f05-d13f2e0a5bf4.json +0 -1
- package/.nyc_output/ef71cf24-d9d9-45dd-814f-8d53cb6769f3.json +0 -1
- package/.nyc_output/processinfo/39a61420-013f-4db1-a597-7c5444da26e7.json +0 -1
- package/.nyc_output/processinfo/4b387323-32a3-4eee-8f05-d13f2e0a5bf4.json +0 -1
- package/.nyc_output/processinfo/ef71cf24-d9d9-45dd-814f-8d53cb6769f3.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
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.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(
|
|
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
|
-
|
|
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 (!
|
|
1999
|
+
if (!this.protos[name]) this.protos[name] = proto;
|
|
2004
2000
|
}
|
|
2005
2001
|
|
|
2006
|
-
addCodec(name,
|
|
2007
|
-
if (!
|
|
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();
|
package/dist/commonjs/codec.js
CHANGED
|
@@ -1,204 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
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;
|
package/dist/commonjs/dht.js
CHANGED
package/dist/commonjs/hash.js
CHANGED
|
@@ -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);
|
package/dist/commonjs/peernet.js
CHANGED
|
@@ -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.
|
|
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(
|
|
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
|
-
|
|
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 (!
|
|
1434
|
+
if (!this.protos[name]) this.protos[name] = proto;
|
|
1439
1435
|
}
|
|
1440
1436
|
|
|
1441
|
-
addCodec(name,
|
|
1442
|
-
if (!
|
|
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
|
|
package/dist/commonjs/request.js
CHANGED