@leofcoin/peernet 1.1.46 → 1.1.47
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/browser-store.js +62 -1
- package/exports/browser/{index-b203939f.js → index-96b718dc.js} +1 -2
- package/exports/browser/messages-591e0b2c.js +224 -0
- package/exports/browser/{peernet-4dde5a19.js → peernet-20a06ecc.js} +176 -339
- package/exports/browser/peernet.d.ts +233 -0
- package/exports/browser/peernet.js +1 -2
- package/exports/messages-dc960cb3.js +224 -0
- package/exports/peernet.js +150 -146
- package/exports/types/peernet.d.ts +233 -0
- package/package.json +3 -2
- package/rollup.config.js +2 -2
- package/src/peernet.ts +23 -8
- 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/browser/value-157ab062.js +0 -64
- 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,6 @@
|
|
|
1
1
|
import '@vandeurenglenn/debug';
|
|
2
2
|
import PubSub from '@vandeurenglenn/little-pubsub';
|
|
3
3
|
import { Codec } from '@leofcoin/codec-format-interface';
|
|
4
|
-
import LeofcoinStorage from '@leofcoin/storage';
|
|
5
4
|
import { utils } from '@leofcoin/codecs';
|
|
6
5
|
import MultiWallet from '@leofcoin/multi-wallet';
|
|
7
6
|
import base58 from '@vandeurenglenn/base58';
|
|
@@ -10,55 +9,54 @@ import QrScanner from 'qr-scanner';
|
|
|
10
9
|
import qrcode from 'qrcode';
|
|
11
10
|
|
|
12
11
|
const BufferToUint8Array = data => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
if (data.type === 'Buffer') {
|
|
13
|
+
data = new Uint8Array(data.data);
|
|
14
|
+
}
|
|
15
|
+
return data
|
|
17
16
|
};
|
|
17
|
+
|
|
18
18
|
const protoFor = (message) => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
throw (new Error(`No proto defined for ${codec.name}`));
|
|
25
|
-
return new Proto(message);
|
|
19
|
+
const codec = new Codec(message);
|
|
20
|
+
if (!codec.name) throw new Error('proto not found')
|
|
21
|
+
const Proto = globalThis.peernet.protos[codec.name];
|
|
22
|
+
if (!Proto) throw (new Error(`No proto defined for ${codec.name}`))
|
|
23
|
+
return new Proto(message)
|
|
26
24
|
};
|
|
25
|
+
|
|
27
26
|
/**
|
|
28
27
|
* wether or not a peernet daemon is active
|
|
29
28
|
* @return {Boolean}
|
|
30
29
|
*/
|
|
31
30
|
const hasDaemon = async () => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
31
|
+
try {
|
|
32
|
+
let response = await fetch('http://127.0.0.1:1000/api/version');
|
|
33
|
+
response = await response.json();
|
|
34
|
+
return Boolean(response.client === '@peernet/api/http')
|
|
35
|
+
} catch (e) {
|
|
36
|
+
return false
|
|
37
|
+
}
|
|
40
38
|
};
|
|
39
|
+
|
|
41
40
|
const https = () => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return Boolean(globalThis.location.protocol === 'https:');
|
|
41
|
+
if (!globalThis.location) return false;
|
|
42
|
+
return Boolean(globalThis.location.protocol === 'https:')
|
|
45
43
|
};
|
|
44
|
+
|
|
46
45
|
/**
|
|
47
46
|
* Get current environment
|
|
48
47
|
* @return {String} current environment [node, electron, browser]
|
|
49
48
|
*/
|
|
50
49
|
const environment = () => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return 'browser';
|
|
60
|
-
}
|
|
50
|
+
const _navigator = globalThis.navigator;
|
|
51
|
+
if (!_navigator) {
|
|
52
|
+
return 'node'
|
|
53
|
+
} else if (_navigator && /electron/i.test(_navigator.userAgent)) {
|
|
54
|
+
return 'electron'
|
|
55
|
+
} else {
|
|
56
|
+
return 'browser'
|
|
57
|
+
}
|
|
61
58
|
};
|
|
59
|
+
|
|
62
60
|
/**
|
|
63
61
|
* * Get current environment
|
|
64
62
|
* @return {Object} result
|
|
@@ -66,84 +64,84 @@ const environment = () => {
|
|
|
66
64
|
* @property {Boolean} reult.environment Current environment
|
|
67
65
|
*/
|
|
68
66
|
const target = async () => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
let daemon = false;
|
|
68
|
+
if (!https()) daemon = await hasDaemon();
|
|
69
|
+
|
|
70
|
+
return {daemon, environment: environment()}
|
|
73
71
|
};
|
|
74
72
|
|
|
75
73
|
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;
|
|
74
|
+
constructor(id) {
|
|
75
|
+
this.id = id;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
_getPeerId(id) {
|
|
79
|
+
if (!peernet.peerMap || peernet.peerMap && peernet.peerMap.size === 0) return false
|
|
80
|
+
|
|
81
|
+
for (const entry of [...peernet.peerMap.entries()]) {
|
|
82
|
+
for (const _id of entry[1]) {
|
|
83
|
+
if (_id === id) return entry[0]
|
|
84
|
+
}
|
|
111
85
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
async discover(peer) {
|
|
89
|
+
let id = this._getPeerId(peer.id);
|
|
90
|
+
if (id) return id
|
|
91
|
+
const data = await new peernet.protos['peernet-peer']({id: this.id});
|
|
92
|
+
const node = await peernet.prepareMessage(peer.id, data.encoded);
|
|
93
|
+
|
|
94
|
+
let response = await peer.request(node.encoded);
|
|
95
|
+
response = await protoFor(response);
|
|
96
|
+
response = await new peernet.protos['peernet-peer-response'](response.decoded.data);
|
|
97
|
+
|
|
98
|
+
id = response.decoded.id;
|
|
99
|
+
if (id === this.id) return;
|
|
100
|
+
|
|
101
|
+
if (!peernet.peerMap.has(id)) peernet.peerMap.set(id, [peer.id]);
|
|
102
|
+
else {
|
|
103
|
+
const connections = peernet.peerMap.get(id);
|
|
104
|
+
if (connections.indexOf(peer.id) === -1) {
|
|
105
|
+
connections.push(peer.id);
|
|
106
|
+
peernet.peerMap.set(peer.id, connections);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return id
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
async discoverHandler(message, peer) {
|
|
113
|
+
const {id, proto} = message;
|
|
114
|
+
// if (typeof message.data === 'string') message.data = Buffer.from(message.data)
|
|
115
|
+
if (proto.name === 'peernet-peer') {
|
|
116
|
+
const from = proto.decoded.id;
|
|
117
|
+
if (from === this.id) return;
|
|
118
|
+
|
|
119
|
+
if (!peernet.peerMap.has(from)) peernet.peerMap.set(from, [peer.id]);
|
|
120
|
+
else {
|
|
121
|
+
const connections = peernet.peerMap.get(from);
|
|
122
|
+
if (connections.indexOf(peer.id) === -1) {
|
|
123
|
+
connections.push(peer.id);
|
|
124
|
+
peernet.peerMap.set(from, connections);
|
|
131
125
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
126
|
+
}
|
|
127
|
+
const data = await new peernet.protos['peernet-peer-response']({id: this.id});
|
|
128
|
+
const node = await peernet.prepareMessage(from, data.encoded);
|
|
129
|
+
|
|
130
|
+
peer.write(Buffer.from(JSON.stringify({id, data: node.encoded})));
|
|
131
|
+
} else if (proto.name === 'peernet-peer-response') {
|
|
132
|
+
const from = proto.decoded.id;
|
|
133
|
+
if (from === this.id) return;
|
|
134
|
+
|
|
135
|
+
if (!peernet.peerMap.has(from)) peernet.peerMap.set(from, [peer.id]);
|
|
136
|
+
else {
|
|
137
|
+
const connections = peernet.peerMap.get(from);
|
|
138
|
+
if (connections.indexOf(peer.id) === -1) {
|
|
139
|
+
connections.push(peer.id);
|
|
140
|
+
peernet.peerMap.set(from, connections);
|
|
145
141
|
}
|
|
142
|
+
}
|
|
146
143
|
}
|
|
144
|
+
}
|
|
147
145
|
}
|
|
148
146
|
|
|
149
147
|
/**
|
|
@@ -256,52 +254,55 @@ class DhtEarth {
|
|
|
256
254
|
}
|
|
257
255
|
|
|
258
256
|
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;
|
|
257
|
+
constructor(network) {
|
|
258
|
+
this.network = network;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* hash and sign message
|
|
262
|
+
*
|
|
263
|
+
* @param {object} message
|
|
264
|
+
* @param {Buffer} message.from peer id
|
|
265
|
+
* @param {Buffer} message.to peer id
|
|
266
|
+
* @param {string} message.data Peernet message
|
|
267
|
+
* (PeernetMessage excluded) encoded as a string
|
|
268
|
+
* @return message
|
|
269
|
+
*/
|
|
270
|
+
async hashAndSignMessage(message) {
|
|
271
|
+
const hash = await message.peernetHash;
|
|
272
|
+
message.decoded.signature = globalThis.identity.sign(hash.buffer);
|
|
273
|
+
return message
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* @param {String} from - peer id
|
|
278
|
+
* @param {String} to - peer id
|
|
279
|
+
* @param {String|PeernetMessage} data - data encoded message string
|
|
280
|
+
* or the messageNode itself
|
|
281
|
+
*/
|
|
282
|
+
async prepareMessage(message) {
|
|
283
|
+
if (message.keys.includes('signature')) {
|
|
284
|
+
message = await this.hashAndSignMessage(message);
|
|
288
285
|
}
|
|
286
|
+
|
|
287
|
+
return message
|
|
288
|
+
}
|
|
289
289
|
}
|
|
290
290
|
|
|
291
|
-
const dataHandler = async
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
291
|
+
const dataHandler = async message => {
|
|
292
|
+
if (!message) return
|
|
293
|
+
|
|
294
|
+
const {data, id, from, peer} = message;
|
|
295
|
+
const proto = await protoFor(data);
|
|
296
|
+
peernet._protoHandler({id, proto}, peernet.connections[from] || peer, from);
|
|
297
297
|
};
|
|
298
298
|
|
|
299
299
|
const dhtError = (proto) => {
|
|
300
|
-
|
|
301
|
-
|
|
300
|
+
const text = `Received proto ${proto.name} expected peernet-dht-response`;
|
|
301
|
+
return new Error(`Routing error: ${text}`)
|
|
302
302
|
};
|
|
303
|
+
|
|
303
304
|
const nothingFoundError = (hash) => {
|
|
304
|
-
|
|
305
|
+
return new Error(`nothing found for ${hash}`)
|
|
305
306
|
};
|
|
306
307
|
|
|
307
308
|
class Identity {
|
|
@@ -381,8 +382,8 @@ class Identity {
|
|
|
381
382
|
|
|
382
383
|
globalThis.LeofcoinStorage = LeofcoinStorage;
|
|
383
384
|
globalThis.leofcoin = globalThis.leofcoin || {};
|
|
384
|
-
|
|
385
|
-
|
|
385
|
+
pubsub = pubsub || new PubSub();
|
|
386
|
+
globalSub = globalSub || new PubSub();
|
|
386
387
|
/**
|
|
387
388
|
* @access public
|
|
388
389
|
* @example
|
|
@@ -402,11 +403,14 @@ class Peernet {
|
|
|
402
403
|
stars;
|
|
403
404
|
networkVersion;
|
|
404
405
|
bw;
|
|
406
|
+
hasDaemon = false;
|
|
405
407
|
autoStart = true;
|
|
406
408
|
#starting = false;
|
|
407
409
|
#started = false;
|
|
408
410
|
#connections = {};
|
|
409
411
|
requestProtos = {};
|
|
412
|
+
_messageHandler;
|
|
413
|
+
protos;
|
|
410
414
|
/**
|
|
411
415
|
* @access public
|
|
412
416
|
* @param {Object} options
|
|
@@ -436,7 +440,7 @@ class Peernet {
|
|
|
436
440
|
if (!options.root) {
|
|
437
441
|
parts[1] ? options.root = `.${parts[0]}/${parts[1]}` : options.root = `.${this.network}`;
|
|
438
442
|
}
|
|
439
|
-
|
|
443
|
+
peernet = this;
|
|
440
444
|
this.bw = {
|
|
441
445
|
up: 0,
|
|
442
446
|
down: 0,
|
|
@@ -512,7 +516,7 @@ class Peernet {
|
|
|
512
516
|
this.root = options.root;
|
|
513
517
|
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile
|
|
514
518
|
// FolderMessageResponse
|
|
515
|
-
} = await import(/* webpackChunkName: "messages" */ './messages-
|
|
519
|
+
} = await import(/* webpackChunkName: "messages" */ './messages-dc960cb3.js');
|
|
516
520
|
/**
|
|
517
521
|
* proto Object containing protos
|
|
518
522
|
* @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 { LeofcoinStorage as 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.47",
|
|
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'
|