@leofcoin/peernet 1.1.46 → 1.1.48
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/exports/browser/{index-b203939f.js → index-4df57fd7.js} +1 -1
- package/exports/browser/messages-194cb7ee.js +225 -0
- package/exports/browser/{peernet-4dde5a19.js → peernet-813e6173.js} +153 -148
- package/exports/browser/peernet.d.ts +233 -0
- package/exports/browser/peernet.js +1 -1
- package/exports/messages-dc960cb3.js +224 -0
- package/exports/peernet.js +152 -147
- package/exports/types/peernet.d.ts +233 -0
- package/package.json +3 -2
- package/rollup.config.js +2 -2
- package/src/peernet.ts +24 -9
- package/tsconfig.json +1 -0
- package/exports/browser/discovery/peer-discovery.d.ts +0 -7
- package/exports/browser/errors/errors.d.ts +0 -3
- package/exports/browser/handlers/data.d.ts +0 -2
- package/exports/browser/handlers/message.d.ts +0 -30
- package/exports/browser/messages/chat.d.ts +0 -6
- package/exports/browser/messages/data-response.d.ts +0 -6
- package/exports/browser/messages/data.d.ts +0 -10
- package/exports/browser/messages/dht-response.d.ts +0 -6
- package/exports/browser/messages/dht.d.ts +0 -14
- package/exports/browser/messages/file-link.d.ts +0 -10
- package/exports/browser/messages/file.d.ts +0 -10
- package/exports/browser/messages/peer-response.d.ts +0 -6
- package/exports/browser/messages/peer.d.ts +0 -6
- package/exports/browser/messages/peernet.d.ts +0 -6
- package/exports/browser/messages/ps.d.ts +0 -6
- package/exports/browser/messages/request.d.ts +0 -6
- package/exports/browser/messages/response.d.ts +0 -6
- package/exports/browser/messages-7138679c.js +0 -205
- package/exports/browser/messages.d.ts +0 -12
- package/exports/browser/peer-info.d.ts +0 -4
- package/exports/browser/prompts/password/browser.d.ts +0 -2
- package/exports/browser/prompts/password/node.d.ts +0 -2
- package/exports/browser/proto/chat-message.proto.d.ts +0 -7
- package/exports/browser/proto/data-response.proto.d.ts +0 -5
- package/exports/browser/proto/data.proto.d.ts +0 -5
- package/exports/browser/proto/dht-response.proto.d.ts +0 -5
- package/exports/browser/proto/dht.proto.d.ts +0 -5
- package/exports/browser/proto/file-link.proto.d.ts +0 -6
- package/exports/browser/proto/file.proto.d.ts +0 -6
- package/exports/browser/proto/peer-response.proto.d.ts +0 -4
- package/exports/browser/proto/peer.proto.d.ts +0 -4
- package/exports/browser/proto/peernet.proto.d.ts +0 -8
- package/exports/browser/proto/ps.proto.d.ts +0 -5
- package/exports/browser/proto/request.proto.d.ts +0 -5
- package/exports/browser/proto/response.proto.d.ts +0 -4
- package/exports/browser/utils/utils.d.ts +0 -7
- package/exports/discovery/peer-discovery.d.ts +0 -7
- package/exports/errors/errors.d.ts +0 -3
- package/exports/handlers/data.d.ts +0 -2
- package/exports/handlers/message.d.ts +0 -30
- package/exports/messages/chat.d.ts +0 -6
- package/exports/messages/data-response.d.ts +0 -6
- package/exports/messages/data.d.ts +0 -10
- package/exports/messages/dht-response.d.ts +0 -6
- package/exports/messages/dht.d.ts +0 -14
- package/exports/messages/file-link.d.ts +0 -10
- package/exports/messages/file.d.ts +0 -10
- package/exports/messages/peer-response.d.ts +0 -6
- package/exports/messages/peer.d.ts +0 -6
- package/exports/messages/peernet.d.ts +0 -6
- package/exports/messages/ps.d.ts +0 -6
- package/exports/messages/request.d.ts +0 -6
- package/exports/messages/response.d.ts +0 -6
- package/exports/messages-6645d42e.js +0 -204
- package/exports/messages.d.ts +0 -12
- package/exports/peer-info.d.ts +0 -4
- package/exports/prompts/password/browser.d.ts +0 -2
- package/exports/prompts/password/node.d.ts +0 -2
- package/exports/proto/chat-message.proto.d.ts +0 -7
- package/exports/proto/data-response.proto.d.ts +0 -5
- package/exports/proto/data.proto.d.ts +0 -5
- package/exports/proto/dht-response.proto.d.ts +0 -5
- package/exports/proto/dht.proto.d.ts +0 -5
- package/exports/proto/file-link.proto.d.ts +0 -6
- package/exports/proto/file.proto.d.ts +0 -6
- package/exports/proto/peer-response.proto.d.ts +0 -4
- package/exports/proto/peer.proto.d.ts +0 -4
- package/exports/proto/peernet.proto.d.ts +0 -8
- package/exports/proto/ps.proto.d.ts +0 -5
- package/exports/proto/request.proto.d.ts +0 -5
- package/exports/proto/response.proto.d.ts +0 -4
- package/exports/utils/utils.d.ts +0 -7
- /package/exports/{dht → types/dht}/dht.d.ts +0 -0
package/exports/peernet.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import '@vandeurenglenn/debug';
|
|
2
2
|
import PubSub from '@vandeurenglenn/little-pubsub';
|
|
3
3
|
import { Codec } from '@leofcoin/codec-format-interface';
|
|
4
|
-
import
|
|
4
|
+
import LeofcoinStorageClass from '@leofcoin/storage';
|
|
5
5
|
import { utils } from '@leofcoin/codecs';
|
|
6
6
|
import MultiWallet from '@leofcoin/multi-wallet';
|
|
7
7
|
import base58 from '@vandeurenglenn/base58';
|
|
@@ -10,55 +10,54 @@ import QrScanner from 'qr-scanner';
|
|
|
10
10
|
import qrcode from 'qrcode';
|
|
11
11
|
|
|
12
12
|
const BufferToUint8Array = data => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
if (data.type === 'Buffer') {
|
|
14
|
+
data = new Uint8Array(data.data);
|
|
15
|
+
}
|
|
16
|
+
return data
|
|
17
17
|
};
|
|
18
|
+
|
|
18
19
|
const protoFor = (message) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
throw (new Error(`No proto defined for ${codec.name}`));
|
|
25
|
-
return new Proto(message);
|
|
20
|
+
const codec = new Codec(message);
|
|
21
|
+
if (!codec.name) throw new Error('proto not found')
|
|
22
|
+
const Proto = globalThis.peernet.protos[codec.name];
|
|
23
|
+
if (!Proto) throw (new Error(`No proto defined for ${codec.name}`))
|
|
24
|
+
return new Proto(message)
|
|
26
25
|
};
|
|
26
|
+
|
|
27
27
|
/**
|
|
28
28
|
* wether or not a peernet daemon is active
|
|
29
29
|
* @return {Boolean}
|
|
30
30
|
*/
|
|
31
31
|
const hasDaemon = async () => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
32
|
+
try {
|
|
33
|
+
let response = await fetch('http://127.0.0.1:1000/api/version');
|
|
34
|
+
response = await response.json();
|
|
35
|
+
return Boolean(response.client === '@peernet/api/http')
|
|
36
|
+
} catch (e) {
|
|
37
|
+
return false
|
|
38
|
+
}
|
|
40
39
|
};
|
|
40
|
+
|
|
41
41
|
const https = () => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return Boolean(globalThis.location.protocol === 'https:');
|
|
42
|
+
if (!globalThis.location) return false;
|
|
43
|
+
return Boolean(globalThis.location.protocol === 'https:')
|
|
45
44
|
};
|
|
45
|
+
|
|
46
46
|
/**
|
|
47
47
|
* Get current environment
|
|
48
48
|
* @return {String} current environment [node, electron, browser]
|
|
49
49
|
*/
|
|
50
50
|
const environment = () => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return 'browser';
|
|
60
|
-
}
|
|
51
|
+
const _navigator = globalThis.navigator;
|
|
52
|
+
if (!_navigator) {
|
|
53
|
+
return 'node'
|
|
54
|
+
} else if (_navigator && /electron/i.test(_navigator.userAgent)) {
|
|
55
|
+
return 'electron'
|
|
56
|
+
} else {
|
|
57
|
+
return 'browser'
|
|
58
|
+
}
|
|
61
59
|
};
|
|
60
|
+
|
|
62
61
|
/**
|
|
63
62
|
* * Get current environment
|
|
64
63
|
* @return {Object} result
|
|
@@ -66,84 +65,84 @@ const environment = () => {
|
|
|
66
65
|
* @property {Boolean} reult.environment Current environment
|
|
67
66
|
*/
|
|
68
67
|
const target = async () => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
let daemon = false;
|
|
69
|
+
if (!https()) daemon = await hasDaemon();
|
|
70
|
+
|
|
71
|
+
return {daemon, environment: environment()}
|
|
73
72
|
};
|
|
74
73
|
|
|
75
74
|
class PeerDiscovery {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
async discover(peer) {
|
|
90
|
-
let id = this._getPeerId(peer.id);
|
|
91
|
-
if (id)
|
|
92
|
-
return id;
|
|
93
|
-
const data = await new peernet.protos['peernet-peer']({ id: this.id });
|
|
94
|
-
const node = await peernet.prepareMessage(peer.id, data.encoded);
|
|
95
|
-
let response = await peer.request(node.encoded);
|
|
96
|
-
response = await protoFor(response);
|
|
97
|
-
response = await new peernet.protos['peernet-peer-response'](response.decoded.data);
|
|
98
|
-
id = response.decoded.id;
|
|
99
|
-
if (id === this.id)
|
|
100
|
-
return;
|
|
101
|
-
if (!peernet.peerMap.has(id))
|
|
102
|
-
peernet.peerMap.set(id, [peer.id]);
|
|
103
|
-
else {
|
|
104
|
-
const connections = peernet.peerMap.get(id);
|
|
105
|
-
if (connections.indexOf(peer.id) === -1) {
|
|
106
|
-
connections.push(peer.id);
|
|
107
|
-
peernet.peerMap.set(peer.id, connections);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return id;
|
|
75
|
+
constructor(id) {
|
|
76
|
+
this.id = id;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
_getPeerId(id) {
|
|
80
|
+
if (!peernet.peerMap || peernet.peerMap && peernet.peerMap.size === 0) return false
|
|
81
|
+
|
|
82
|
+
for (const entry of [...peernet.peerMap.entries()]) {
|
|
83
|
+
for (const _id of entry[1]) {
|
|
84
|
+
if (_id === id) return entry[0]
|
|
85
|
+
}
|
|
111
86
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
async discover(peer) {
|
|
90
|
+
let id = this._getPeerId(peer.id);
|
|
91
|
+
if (id) return id
|
|
92
|
+
const data = await new peernet.protos['peernet-peer']({id: this.id});
|
|
93
|
+
const node = await peernet.prepareMessage(peer.id, data.encoded);
|
|
94
|
+
|
|
95
|
+
let response = await peer.request(node.encoded);
|
|
96
|
+
response = await protoFor(response);
|
|
97
|
+
response = await new peernet.protos['peernet-peer-response'](response.decoded.data);
|
|
98
|
+
|
|
99
|
+
id = response.decoded.id;
|
|
100
|
+
if (id === this.id) return;
|
|
101
|
+
|
|
102
|
+
if (!peernet.peerMap.has(id)) peernet.peerMap.set(id, [peer.id]);
|
|
103
|
+
else {
|
|
104
|
+
const connections = peernet.peerMap.get(id);
|
|
105
|
+
if (connections.indexOf(peer.id) === -1) {
|
|
106
|
+
connections.push(peer.id);
|
|
107
|
+
peernet.peerMap.set(peer.id, connections);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return id
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
async discoverHandler(message, peer) {
|
|
114
|
+
const {id, proto} = message;
|
|
115
|
+
// if (typeof message.data === 'string') message.data = Buffer.from(message.data)
|
|
116
|
+
if (proto.name === 'peernet-peer') {
|
|
117
|
+
const from = proto.decoded.id;
|
|
118
|
+
if (from === this.id) return;
|
|
119
|
+
|
|
120
|
+
if (!peernet.peerMap.has(from)) peernet.peerMap.set(from, [peer.id]);
|
|
121
|
+
else {
|
|
122
|
+
const connections = peernet.peerMap.get(from);
|
|
123
|
+
if (connections.indexOf(peer.id) === -1) {
|
|
124
|
+
connections.push(peer.id);
|
|
125
|
+
peernet.peerMap.set(from, connections);
|
|
131
126
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
127
|
+
}
|
|
128
|
+
const data = await new peernet.protos['peernet-peer-response']({id: this.id});
|
|
129
|
+
const node = await peernet.prepareMessage(from, data.encoded);
|
|
130
|
+
|
|
131
|
+
peer.write(Buffer.from(JSON.stringify({id, data: node.encoded})));
|
|
132
|
+
} else if (proto.name === 'peernet-peer-response') {
|
|
133
|
+
const from = proto.decoded.id;
|
|
134
|
+
if (from === this.id) return;
|
|
135
|
+
|
|
136
|
+
if (!peernet.peerMap.has(from)) peernet.peerMap.set(from, [peer.id]);
|
|
137
|
+
else {
|
|
138
|
+
const connections = peernet.peerMap.get(from);
|
|
139
|
+
if (connections.indexOf(peer.id) === -1) {
|
|
140
|
+
connections.push(peer.id);
|
|
141
|
+
peernet.peerMap.set(from, connections);
|
|
145
142
|
}
|
|
143
|
+
}
|
|
146
144
|
}
|
|
145
|
+
}
|
|
147
146
|
}
|
|
148
147
|
|
|
149
148
|
/**
|
|
@@ -256,52 +255,55 @@ class DhtEarth {
|
|
|
256
255
|
}
|
|
257
256
|
|
|
258
257
|
class MessageHandler {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
return message;
|
|
258
|
+
constructor(network) {
|
|
259
|
+
this.network = network;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* hash and sign message
|
|
263
|
+
*
|
|
264
|
+
* @param {object} message
|
|
265
|
+
* @param {Buffer} message.from peer id
|
|
266
|
+
* @param {Buffer} message.to peer id
|
|
267
|
+
* @param {string} message.data Peernet message
|
|
268
|
+
* (PeernetMessage excluded) encoded as a string
|
|
269
|
+
* @return message
|
|
270
|
+
*/
|
|
271
|
+
async hashAndSignMessage(message) {
|
|
272
|
+
const hash = await message.peernetHash;
|
|
273
|
+
message.decoded.signature = globalThis.identity.sign(hash.buffer);
|
|
274
|
+
return message
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* @param {String} from - peer id
|
|
279
|
+
* @param {String} to - peer id
|
|
280
|
+
* @param {String|PeernetMessage} data - data encoded message string
|
|
281
|
+
* or the messageNode itself
|
|
282
|
+
*/
|
|
283
|
+
async prepareMessage(message) {
|
|
284
|
+
if (message.keys.includes('signature')) {
|
|
285
|
+
message = await this.hashAndSignMessage(message);
|
|
288
286
|
}
|
|
287
|
+
|
|
288
|
+
return message
|
|
289
|
+
}
|
|
289
290
|
}
|
|
290
291
|
|
|
291
|
-
const dataHandler = async
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
292
|
+
const dataHandler = async message => {
|
|
293
|
+
if (!message) return
|
|
294
|
+
|
|
295
|
+
const {data, id, from, peer} = message;
|
|
296
|
+
const proto = await protoFor(data);
|
|
297
|
+
peernet._protoHandler({id, proto}, peernet.connections[from] || peer, from);
|
|
297
298
|
};
|
|
298
299
|
|
|
299
300
|
const dhtError = (proto) => {
|
|
300
|
-
|
|
301
|
-
|
|
301
|
+
const text = `Received proto ${proto.name} expected peernet-dht-response`;
|
|
302
|
+
return new Error(`Routing error: ${text}`)
|
|
302
303
|
};
|
|
304
|
+
|
|
303
305
|
const nothingFoundError = (hash) => {
|
|
304
|
-
|
|
306
|
+
return new Error(`nothing found for ${hash}`)
|
|
305
307
|
};
|
|
306
308
|
|
|
307
309
|
class Identity {
|
|
@@ -379,10 +381,10 @@ class Identity {
|
|
|
379
381
|
}
|
|
380
382
|
}
|
|
381
383
|
|
|
382
|
-
globalThis.LeofcoinStorage =
|
|
384
|
+
globalThis.LeofcoinStorage = LeofcoinStorageClass;
|
|
383
385
|
globalThis.leofcoin = globalThis.leofcoin || {};
|
|
384
|
-
|
|
385
|
-
|
|
386
|
+
pubsub = pubsub || new PubSub();
|
|
387
|
+
globalSub = globalSub || new PubSub();
|
|
386
388
|
/**
|
|
387
389
|
* @access public
|
|
388
390
|
* @example
|
|
@@ -402,11 +404,14 @@ class Peernet {
|
|
|
402
404
|
stars;
|
|
403
405
|
networkVersion;
|
|
404
406
|
bw;
|
|
407
|
+
hasDaemon = false;
|
|
405
408
|
autoStart = true;
|
|
406
409
|
#starting = false;
|
|
407
410
|
#started = false;
|
|
408
411
|
#connections = {};
|
|
409
412
|
requestProtos = {};
|
|
413
|
+
_messageHandler;
|
|
414
|
+
protos;
|
|
410
415
|
/**
|
|
411
416
|
* @access public
|
|
412
417
|
* @param {Object} options
|
|
@@ -436,7 +441,7 @@ class Peernet {
|
|
|
436
441
|
if (!options.root) {
|
|
437
442
|
parts[1] ? options.root = `.${parts[0]}/${parts[1]}` : options.root = `.${this.network}`;
|
|
438
443
|
}
|
|
439
|
-
|
|
444
|
+
peernet = this;
|
|
440
445
|
this.bw = {
|
|
441
446
|
up: 0,
|
|
442
447
|
down: 0,
|
|
@@ -512,7 +517,7 @@ class Peernet {
|
|
|
512
517
|
this.root = options.root;
|
|
513
518
|
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile
|
|
514
519
|
// FolderMessageResponse
|
|
515
|
-
} = await import(/* webpackChunkName: "messages" */ './messages-
|
|
520
|
+
} = await import(/* webpackChunkName: "messages" */ './messages-dc960cb3.js');
|
|
516
521
|
/**
|
|
517
522
|
* proto Object containing protos
|
|
518
523
|
* @type {Object}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import '@vandeurenglenn/debug';
|
|
3
|
+
import PubSub from '@vandeurenglenn/little-pubsub';
|
|
4
|
+
import DHT from './dht/dht.js';
|
|
5
|
+
import MessageHandler from './handlers/message.js';
|
|
6
|
+
import LeofcoinStorageClass from '@leofcoin/storage';
|
|
7
|
+
import Identity from './identity.js';
|
|
8
|
+
declare global {
|
|
9
|
+
var globalSub: PubSub;
|
|
10
|
+
var pubsub: PubSub;
|
|
11
|
+
var peernet: Peernet;
|
|
12
|
+
var LeofcoinStorage: typeof LeofcoinStorageClass;
|
|
13
|
+
var LeofcoinStorageClient: any;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @access public
|
|
17
|
+
* @example
|
|
18
|
+
* const peernet = new Peernet();
|
|
19
|
+
*/
|
|
20
|
+
export default class Peernet {
|
|
21
|
+
#private;
|
|
22
|
+
identity: Identity;
|
|
23
|
+
stores: string[];
|
|
24
|
+
/**
|
|
25
|
+
* @type {Object}
|
|
26
|
+
* @property {Object} peer Instance of Peer
|
|
27
|
+
*/
|
|
28
|
+
dht: DHT;
|
|
29
|
+
/** @leofcoin/peernet-swarm/client */
|
|
30
|
+
client: {
|
|
31
|
+
connections: [];
|
|
32
|
+
id: string;
|
|
33
|
+
removePeer: (peer: string) => {};
|
|
34
|
+
close: () => {};
|
|
35
|
+
};
|
|
36
|
+
network: string;
|
|
37
|
+
stars: string[];
|
|
38
|
+
networkVersion: string;
|
|
39
|
+
bw: {
|
|
40
|
+
up: number;
|
|
41
|
+
down: number;
|
|
42
|
+
};
|
|
43
|
+
hasDaemon: boolean;
|
|
44
|
+
autoStart: boolean;
|
|
45
|
+
requestProtos: {};
|
|
46
|
+
_messageHandler: MessageHandler;
|
|
47
|
+
protos: {};
|
|
48
|
+
/**
|
|
49
|
+
* @access public
|
|
50
|
+
* @param {Object} options
|
|
51
|
+
* @param {String} options.network - desired network
|
|
52
|
+
* @param {String} options.stars - star list for selected network (these should match, don't mix networks)
|
|
53
|
+
* @param {String} options.root - path to root directory
|
|
54
|
+
* @param {String} options.storePrefix - prefix for datatores (lfc)
|
|
55
|
+
*
|
|
56
|
+
* @return {Promise} instance of Peernet
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* const peernet = new Peernet({network: 'leofcoin', root: '.leofcoin'});
|
|
60
|
+
*/
|
|
61
|
+
constructor(options: any, password: any);
|
|
62
|
+
get id(): string;
|
|
63
|
+
get accounts(): Promise<[[name: string, externalAddress: string, internalAddress: string]]>;
|
|
64
|
+
get defaultStores(): string[];
|
|
65
|
+
addProto(name: any, proto: any): void;
|
|
66
|
+
addCodec(codec: any): void;
|
|
67
|
+
addStore(name: any, prefix: any, root: any, isPrivate?: boolean): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* @see MessageHandler
|
|
70
|
+
*/
|
|
71
|
+
prepareMessage(data: any): Promise<any>;
|
|
72
|
+
/**
|
|
73
|
+
* @access public
|
|
74
|
+
*
|
|
75
|
+
* @return {Array} peerId
|
|
76
|
+
*/
|
|
77
|
+
get peers(): [string, unknown][];
|
|
78
|
+
get connections(): unknown[];
|
|
79
|
+
get peerEntries(): unknown[];
|
|
80
|
+
/**
|
|
81
|
+
* @return {String} id - peerId
|
|
82
|
+
*/
|
|
83
|
+
getConnection(id: any): never;
|
|
84
|
+
/**
|
|
85
|
+
* @private
|
|
86
|
+
*
|
|
87
|
+
* @param {Object} options
|
|
88
|
+
* @param {String} options.root - path to root directory
|
|
89
|
+
*
|
|
90
|
+
* @return {Promise} instance of Peernet
|
|
91
|
+
*/
|
|
92
|
+
_init(options: any, password: any): Peernet;
|
|
93
|
+
start(): Promise<void>;
|
|
94
|
+
addRequestHandler(name: any, method: any): void;
|
|
95
|
+
sendMessage(peer: any, id: any, data: any): Promise<void>;
|
|
96
|
+
handleDHT(peer: any, id: any, proto: any): Promise<void>;
|
|
97
|
+
handleData(peer: any, id: any, proto: any): Promise<void>;
|
|
98
|
+
handleRequest(peer: any, id: any, proto: any): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* @private
|
|
101
|
+
*
|
|
102
|
+
* @param {Buffer} message - peernet message
|
|
103
|
+
* @param {PeernetPeer} peer - peernet peer
|
|
104
|
+
*/
|
|
105
|
+
_protoHandler(message: any, peer: any, from: any): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* performs a walk and resolves first encounter
|
|
108
|
+
*
|
|
109
|
+
* @param {String} hash
|
|
110
|
+
*/
|
|
111
|
+
walk(hash: any): Promise<any[]>;
|
|
112
|
+
/**
|
|
113
|
+
* Override DHT behavior, try's finding the content three times
|
|
114
|
+
*
|
|
115
|
+
* @param {String} hash
|
|
116
|
+
*/
|
|
117
|
+
providersFor(hash: string, store?: undefined): Promise<Set<string>>;
|
|
118
|
+
get block(): {
|
|
119
|
+
get: (hash: any) => Promise<any>;
|
|
120
|
+
put: (hash: any, data: any) => Promise<any>;
|
|
121
|
+
has: (hash: any) => Promise<any>;
|
|
122
|
+
};
|
|
123
|
+
get transaction(): {
|
|
124
|
+
get: (hash: any) => Promise<any>;
|
|
125
|
+
put: (hash: any, data: any) => Promise<any>;
|
|
126
|
+
has: (hash: any) => Promise<any>;
|
|
127
|
+
};
|
|
128
|
+
requestData(hash: any, store: any): any;
|
|
129
|
+
get message(): {
|
|
130
|
+
/**
|
|
131
|
+
* Get content for given message hash
|
|
132
|
+
*
|
|
133
|
+
* @param {String} hash
|
|
134
|
+
*/
|
|
135
|
+
get: (hash: any) => Promise<any>;
|
|
136
|
+
/**
|
|
137
|
+
* put message content
|
|
138
|
+
*
|
|
139
|
+
* @param {String} hash
|
|
140
|
+
* @param {Buffer} message
|
|
141
|
+
*/
|
|
142
|
+
put: (hash: any, message: any) => Promise<any>;
|
|
143
|
+
/**
|
|
144
|
+
* @param {String} hash
|
|
145
|
+
* @return {Boolean}
|
|
146
|
+
*/
|
|
147
|
+
has: (hash: any) => Promise<any>;
|
|
148
|
+
};
|
|
149
|
+
get data(): {
|
|
150
|
+
/**
|
|
151
|
+
* Get content for given data hash
|
|
152
|
+
*
|
|
153
|
+
* @param {String} hash
|
|
154
|
+
*/
|
|
155
|
+
get: (hash: any) => Promise<any>;
|
|
156
|
+
/**
|
|
157
|
+
* put data content
|
|
158
|
+
*
|
|
159
|
+
* @param {String} hash
|
|
160
|
+
* @param {Buffer} data
|
|
161
|
+
*/
|
|
162
|
+
put: (hash: any, data: any) => Promise<any>;
|
|
163
|
+
/**
|
|
164
|
+
* @param {String} hash
|
|
165
|
+
* @return {Boolean}
|
|
166
|
+
*/
|
|
167
|
+
has: (hash: any) => Promise<any>;
|
|
168
|
+
};
|
|
169
|
+
get folder(): {
|
|
170
|
+
/**
|
|
171
|
+
* Get content for given data hash
|
|
172
|
+
*
|
|
173
|
+
* @param {String} hash
|
|
174
|
+
*/
|
|
175
|
+
get: (hash: any) => Promise<any>;
|
|
176
|
+
/**
|
|
177
|
+
* put data content
|
|
178
|
+
*
|
|
179
|
+
* @param {String} hash
|
|
180
|
+
* @param {Buffer} data
|
|
181
|
+
*/
|
|
182
|
+
put: (hash: any, data: any) => Promise<any>;
|
|
183
|
+
/**
|
|
184
|
+
* @param {String} hash
|
|
185
|
+
* @return {Boolean}
|
|
186
|
+
*/
|
|
187
|
+
has: (hash: any) => Promise<any>;
|
|
188
|
+
};
|
|
189
|
+
addFolder(files: any): Promise<any>;
|
|
190
|
+
ls(hash: any, options: any): Promise<any[]>;
|
|
191
|
+
cat(hash: any, options: any): Promise<any>;
|
|
192
|
+
/**
|
|
193
|
+
* goes trough given stores and tries to find data for given hash
|
|
194
|
+
* @param {Array} stores
|
|
195
|
+
* @param {string} hash
|
|
196
|
+
*/
|
|
197
|
+
whichStore(stores: any, hash: any): any;
|
|
198
|
+
/**
|
|
199
|
+
* Get content for given hash
|
|
200
|
+
*
|
|
201
|
+
* @param {String} hash - the hash of the wanted data
|
|
202
|
+
* @param {String} store - storeName to access
|
|
203
|
+
*/
|
|
204
|
+
get(hash: any, store: any): Promise<any>;
|
|
205
|
+
/**
|
|
206
|
+
* put content
|
|
207
|
+
*
|
|
208
|
+
* @param {String} hash
|
|
209
|
+
* @param {Buffer} data
|
|
210
|
+
* @param {String} store - storeName to access
|
|
211
|
+
*/
|
|
212
|
+
put(hash: any, data: any, store?: string): Promise<any>;
|
|
213
|
+
/**
|
|
214
|
+
* @param {String} hash
|
|
215
|
+
* @return {Boolean}
|
|
216
|
+
*/
|
|
217
|
+
has(hash: any): Promise<boolean>;
|
|
218
|
+
/**
|
|
219
|
+
*
|
|
220
|
+
* @param {String} topic
|
|
221
|
+
* @param {String|Object|Array|Boolean|Buffer} data
|
|
222
|
+
*/
|
|
223
|
+
publish(topic: any, data: any): Promise<void>;
|
|
224
|
+
createHash(data: any, name: any): any;
|
|
225
|
+
/**
|
|
226
|
+
*
|
|
227
|
+
* @param {String} topic
|
|
228
|
+
* @param {Method} cb
|
|
229
|
+
*/
|
|
230
|
+
subscribe(topic: any, callback: any): Promise<void>;
|
|
231
|
+
removePeer(peer: any): Promise<any>;
|
|
232
|
+
get Buffer(): BufferConstructor;
|
|
233
|
+
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leofcoin/peernet",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.48",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "src/peernet.js",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
8
8
|
"import": "./exports/peernet.js",
|
|
9
|
-
"require": "./exports/commonjs/peernet.js"
|
|
9
|
+
"require": "./exports/commonjs/peernet.js",
|
|
10
|
+
"types": "./exports/types/peernet.d.ts"
|
|
10
11
|
},
|
|
11
12
|
"./browser": "./exports/browser/peernet.js"
|
|
12
13
|
},
|
package/rollup.config.js
CHANGED
|
@@ -34,7 +34,7 @@ export default [{
|
|
|
34
34
|
mainFields: ['browser', 'module', 'main']
|
|
35
35
|
}),
|
|
36
36
|
|
|
37
|
-
typescript({
|
|
37
|
+
typescript({ compilerOptions: { outDir: './exports/browser'} })
|
|
38
38
|
],
|
|
39
39
|
external: [
|
|
40
40
|
'./prompts/password.js'
|
|
@@ -49,7 +49,7 @@ export default [{
|
|
|
49
49
|
modify({
|
|
50
50
|
"@netpeer/p2pt-swarm": '@netpeer/p2pt-swarm'
|
|
51
51
|
}),
|
|
52
|
-
typescript({
|
|
52
|
+
typescript({ compilerOptions: { outDir: './exports', declarationDir: './exports/types'} })
|
|
53
53
|
],
|
|
54
54
|
external: [
|
|
55
55
|
'./prompts/password.js'
|