@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
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { F as FormatInterface } from './peernet-813e6173.js';
|
|
2
|
+
import './value-157ab062.js';
|
|
3
|
+
|
|
4
|
+
var proto$b = {
|
|
5
|
+
data: new Uint8Array(),
|
|
6
|
+
signature: new Uint8Array(),
|
|
7
|
+
'from?': String(),
|
|
8
|
+
'to?': String(),
|
|
9
|
+
'id?': String()
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
class PeernetMessage extends FormatInterface {
|
|
13
|
+
|
|
14
|
+
get messageName() {
|
|
15
|
+
return 'PeernetMessage'
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
constructor(buffer) {
|
|
19
|
+
const name = 'peernet-message';
|
|
20
|
+
super(buffer, proto$b, {name});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
var proto$a = {
|
|
25
|
+
hash: String(),
|
|
26
|
+
'store?': String()
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @example `
|
|
31
|
+
new DHTMessage(hash, store)
|
|
32
|
+
// store = optional if not set, peernet checks every store
|
|
33
|
+
let message = new DHTMessage('hashmvbs124xcfd...', 'transaction')
|
|
34
|
+
message = new DHTMessage('hashmvbs124xcfd...', 'block')
|
|
35
|
+
`
|
|
36
|
+
*/
|
|
37
|
+
class DHTMessage extends FormatInterface {
|
|
38
|
+
|
|
39
|
+
get messageName() {
|
|
40
|
+
return 'PeernetDHTMessage'
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
constructor(data) {
|
|
44
|
+
const name = 'peernet-dht';
|
|
45
|
+
super(data, proto$a, {name});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
var proto$9 = {
|
|
50
|
+
hash: String(),
|
|
51
|
+
has: Boolean()
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
class DHTMessageResponse extends FormatInterface {
|
|
55
|
+
|
|
56
|
+
get messageName() {
|
|
57
|
+
return 'PeernetDHTMessageResponse'
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
constructor(data) {
|
|
61
|
+
const name = 'peernet-dht-response';
|
|
62
|
+
super(data, proto$9, {name});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
var proto$8 = {
|
|
67
|
+
hash: String(),
|
|
68
|
+
'store?': String()
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @extends {CodecFormat}
|
|
73
|
+
*/
|
|
74
|
+
class DataMessage extends FormatInterface {
|
|
75
|
+
|
|
76
|
+
get messageName() {
|
|
77
|
+
return 'PeernetDataMessage'
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* @param {Buffer|String|Object|DataMessage} data - The data needed to create the DataMessage
|
|
81
|
+
*/
|
|
82
|
+
constructor(data) {
|
|
83
|
+
super(data, proto$8, {name: 'peernet-data'});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
var proto$7 = {
|
|
88
|
+
data: new Uint8Array(),
|
|
89
|
+
topic: new Uint8Array()
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
class PsMessage extends FormatInterface {
|
|
93
|
+
get messageName() {
|
|
94
|
+
return 'PsMessage'
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
constructor(buffer) {
|
|
98
|
+
const name = 'peernet-ps';
|
|
99
|
+
super(buffer, proto$7, {name});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
var proto$6 = {
|
|
104
|
+
id: String()
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
class PeerMessage extends FormatInterface {
|
|
108
|
+
get messageName() {
|
|
109
|
+
return 'PeernetPeerMessage'
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
constructor(data) {
|
|
113
|
+
const name = 'peernet-peer';
|
|
114
|
+
super(data, proto$6, {name});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
var proto$5 = {
|
|
119
|
+
request: String(),
|
|
120
|
+
'requested?': new Uint8Array()
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
class RequestMessage extends FormatInterface {
|
|
124
|
+
|
|
125
|
+
get messageName() {
|
|
126
|
+
return 'PeernetRequestMessage'
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
constructor(data) {
|
|
130
|
+
const name = 'peernet-request';
|
|
131
|
+
super(data, proto$5, {name});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
var proto$4 = {
|
|
136
|
+
response: {}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
class ResponseMessage extends FormatInterface {
|
|
140
|
+
|
|
141
|
+
get messageName() {
|
|
142
|
+
return 'PeernetResponseMessage'
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
constructor(data) {
|
|
146
|
+
const name = 'peernet-response';
|
|
147
|
+
super(data, proto$4, {name});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
var proto$3 = {
|
|
152
|
+
id: String()
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
class PeerMessageResponse extends FormatInterface {
|
|
156
|
+
|
|
157
|
+
get messageName() {
|
|
158
|
+
return 'PeernetPeerMessageResponse'
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
constructor(data) {
|
|
162
|
+
const name = 'peernet-peer-response';
|
|
163
|
+
super(data, proto$3, {name});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
var proto$2 = {
|
|
168
|
+
hash: String(),
|
|
169
|
+
data: new Uint8Array(),
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
class DataMessageResponse extends FormatInterface {
|
|
173
|
+
|
|
174
|
+
get messageName() {
|
|
175
|
+
return 'PeernetDataMessageResponse'
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
constructor(data) {
|
|
179
|
+
const name = 'peernet-data-response';
|
|
180
|
+
super(data, proto$2, {name});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
var proto$1 = {
|
|
185
|
+
value: String(),
|
|
186
|
+
author: String(),
|
|
187
|
+
timestamp: Number(),
|
|
188
|
+
files: [String()],
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
class ChatMessage extends FormatInterface {
|
|
192
|
+
|
|
193
|
+
get messageName() {
|
|
194
|
+
return 'ChatMessage'
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
constructor(buffer) {
|
|
198
|
+
const name = 'chat-message';
|
|
199
|
+
super(buffer, proto$1, {name});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
var proto = {
|
|
204
|
+
path: String(),
|
|
205
|
+
'content?': '',
|
|
206
|
+
'links?': []
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* @extends {CodecFormat}
|
|
211
|
+
*/
|
|
212
|
+
class PeernetFile extends FormatInterface {
|
|
213
|
+
|
|
214
|
+
get messageName() {
|
|
215
|
+
return 'PeernetFile'
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* @param {Buffer|String|Object|DataMessage} data - The data needed to create the DataMessage
|
|
219
|
+
*/
|
|
220
|
+
constructor(data) {
|
|
221
|
+
super(data, proto, {name: 'peernet-file'});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
export { ChatMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PeerMessage, PeerMessageResponse, PeernetFile, PeernetMessage, PsMessage, RequestMessage, ResponseMessage };
|
|
@@ -6048,55 +6048,54 @@ const FormatInterface = FormatInterface$1;
|
|
|
6048
6048
|
const Codec = Codec$1;
|
|
6049
6049
|
|
|
6050
6050
|
const BufferToUint8Array = data => {
|
|
6051
|
-
|
|
6052
|
-
|
|
6053
|
-
|
|
6054
|
-
|
|
6051
|
+
if (data.type === 'Buffer') {
|
|
6052
|
+
data = new Uint8Array(data.data);
|
|
6053
|
+
}
|
|
6054
|
+
return data
|
|
6055
6055
|
};
|
|
6056
|
+
|
|
6056
6057
|
const protoFor = (message) => {
|
|
6057
|
-
|
|
6058
|
-
|
|
6059
|
-
|
|
6060
|
-
|
|
6061
|
-
|
|
6062
|
-
throw (new Error(`No proto defined for ${codec.name}`));
|
|
6063
|
-
return new Proto(message);
|
|
6058
|
+
const codec = new Codec(message);
|
|
6059
|
+
if (!codec.name) throw new Error('proto not found')
|
|
6060
|
+
const Proto = globalThis.peernet.protos[codec.name];
|
|
6061
|
+
if (!Proto) throw (new Error(`No proto defined for ${codec.name}`))
|
|
6062
|
+
return new Proto(message)
|
|
6064
6063
|
};
|
|
6064
|
+
|
|
6065
6065
|
/**
|
|
6066
6066
|
* wether or not a peernet daemon is active
|
|
6067
6067
|
* @return {Boolean}
|
|
6068
6068
|
*/
|
|
6069
6069
|
const hasDaemon = async () => {
|
|
6070
|
-
|
|
6071
|
-
|
|
6072
|
-
|
|
6073
|
-
|
|
6074
|
-
|
|
6075
|
-
|
|
6076
|
-
|
|
6077
|
-
}
|
|
6070
|
+
try {
|
|
6071
|
+
let response = await fetch('http://127.0.0.1:1000/api/version');
|
|
6072
|
+
response = await response.json();
|
|
6073
|
+
return Boolean(response.client === '@peernet/api/http')
|
|
6074
|
+
} catch (e) {
|
|
6075
|
+
return false
|
|
6076
|
+
}
|
|
6078
6077
|
};
|
|
6078
|
+
|
|
6079
6079
|
const https = () => {
|
|
6080
|
-
|
|
6081
|
-
|
|
6082
|
-
return Boolean(globalThis.location.protocol === 'https:');
|
|
6080
|
+
if (!globalThis.location) return false;
|
|
6081
|
+
return Boolean(globalThis.location.protocol === 'https:')
|
|
6083
6082
|
};
|
|
6083
|
+
|
|
6084
6084
|
/**
|
|
6085
6085
|
* Get current environment
|
|
6086
6086
|
* @return {String} current environment [node, electron, browser]
|
|
6087
6087
|
*/
|
|
6088
6088
|
const environment = () => {
|
|
6089
|
-
|
|
6090
|
-
|
|
6091
|
-
|
|
6092
|
-
|
|
6093
|
-
|
|
6094
|
-
|
|
6095
|
-
|
|
6096
|
-
|
|
6097
|
-
return 'browser';
|
|
6098
|
-
}
|
|
6089
|
+
const _navigator = globalThis.navigator;
|
|
6090
|
+
if (!_navigator) {
|
|
6091
|
+
return 'node'
|
|
6092
|
+
} else if (_navigator && /electron/i.test(_navigator.userAgent)) {
|
|
6093
|
+
return 'electron'
|
|
6094
|
+
} else {
|
|
6095
|
+
return 'browser'
|
|
6096
|
+
}
|
|
6099
6097
|
};
|
|
6098
|
+
|
|
6100
6099
|
/**
|
|
6101
6100
|
* * Get current environment
|
|
6102
6101
|
* @return {Object} result
|
|
@@ -6104,84 +6103,84 @@ const environment = () => {
|
|
|
6104
6103
|
* @property {Boolean} reult.environment Current environment
|
|
6105
6104
|
*/
|
|
6106
6105
|
const target = async () => {
|
|
6107
|
-
|
|
6108
|
-
|
|
6109
|
-
|
|
6110
|
-
|
|
6106
|
+
let daemon = false;
|
|
6107
|
+
if (!https()) daemon = await hasDaemon();
|
|
6108
|
+
|
|
6109
|
+
return {daemon, environment: environment()}
|
|
6111
6110
|
};
|
|
6112
6111
|
|
|
6113
6112
|
class PeerDiscovery {
|
|
6114
|
-
|
|
6115
|
-
|
|
6116
|
-
|
|
6117
|
-
|
|
6118
|
-
|
|
6119
|
-
|
|
6120
|
-
|
|
6121
|
-
|
|
6122
|
-
|
|
6123
|
-
|
|
6124
|
-
|
|
6125
|
-
}
|
|
6113
|
+
constructor(id) {
|
|
6114
|
+
this.id = id;
|
|
6115
|
+
}
|
|
6116
|
+
|
|
6117
|
+
_getPeerId(id) {
|
|
6118
|
+
if (!peernet.peerMap || peernet.peerMap && peernet.peerMap.size === 0) return false
|
|
6119
|
+
|
|
6120
|
+
for (const entry of [...peernet.peerMap.entries()]) {
|
|
6121
|
+
for (const _id of entry[1]) {
|
|
6122
|
+
if (_id === id) return entry[0]
|
|
6123
|
+
}
|
|
6126
6124
|
}
|
|
6127
|
-
|
|
6128
|
-
|
|
6129
|
-
|
|
6130
|
-
|
|
6131
|
-
|
|
6132
|
-
|
|
6133
|
-
|
|
6134
|
-
|
|
6135
|
-
|
|
6136
|
-
|
|
6137
|
-
|
|
6138
|
-
|
|
6139
|
-
|
|
6140
|
-
|
|
6141
|
-
|
|
6142
|
-
|
|
6143
|
-
|
|
6144
|
-
|
|
6145
|
-
|
|
6146
|
-
|
|
6147
|
-
|
|
6148
|
-
|
|
6125
|
+
}
|
|
6126
|
+
|
|
6127
|
+
async discover(peer) {
|
|
6128
|
+
let id = this._getPeerId(peer.id);
|
|
6129
|
+
if (id) return id
|
|
6130
|
+
const data = await new peernet.protos['peernet-peer']({id: this.id});
|
|
6131
|
+
const node = await peernet.prepareMessage(peer.id, data.encoded);
|
|
6132
|
+
|
|
6133
|
+
let response = await peer.request(node.encoded);
|
|
6134
|
+
response = await protoFor(response);
|
|
6135
|
+
response = await new peernet.protos['peernet-peer-response'](response.decoded.data);
|
|
6136
|
+
|
|
6137
|
+
id = response.decoded.id;
|
|
6138
|
+
if (id === this.id) return;
|
|
6139
|
+
|
|
6140
|
+
if (!peernet.peerMap.has(id)) peernet.peerMap.set(id, [peer.id]);
|
|
6141
|
+
else {
|
|
6142
|
+
const connections = peernet.peerMap.get(id);
|
|
6143
|
+
if (connections.indexOf(peer.id) === -1) {
|
|
6144
|
+
connections.push(peer.id);
|
|
6145
|
+
peernet.peerMap.set(peer.id, connections);
|
|
6146
|
+
}
|
|
6149
6147
|
}
|
|
6150
|
-
|
|
6151
|
-
|
|
6152
|
-
|
|
6153
|
-
|
|
6154
|
-
|
|
6155
|
-
|
|
6156
|
-
|
|
6157
|
-
|
|
6158
|
-
|
|
6159
|
-
|
|
6160
|
-
|
|
6161
|
-
|
|
6162
|
-
|
|
6163
|
-
|
|
6164
|
-
|
|
6165
|
-
|
|
6166
|
-
const data = await new peernet.protos['peernet-peer-response']({ id: this.id });
|
|
6167
|
-
const node = await peernet.prepareMessage(from, data.encoded);
|
|
6168
|
-
peer.write(Buffer.from(JSON.stringify({ id, data: node.encoded })));
|
|
6148
|
+
return id
|
|
6149
|
+
}
|
|
6150
|
+
|
|
6151
|
+
async discoverHandler(message, peer) {
|
|
6152
|
+
const {id, proto} = message;
|
|
6153
|
+
// if (typeof message.data === 'string') message.data = Buffer.from(message.data)
|
|
6154
|
+
if (proto.name === 'peernet-peer') {
|
|
6155
|
+
const from = proto.decoded.id;
|
|
6156
|
+
if (from === this.id) return;
|
|
6157
|
+
|
|
6158
|
+
if (!peernet.peerMap.has(from)) peernet.peerMap.set(from, [peer.id]);
|
|
6159
|
+
else {
|
|
6160
|
+
const connections = peernet.peerMap.get(from);
|
|
6161
|
+
if (connections.indexOf(peer.id) === -1) {
|
|
6162
|
+
connections.push(peer.id);
|
|
6163
|
+
peernet.peerMap.set(from, connections);
|
|
6169
6164
|
}
|
|
6170
|
-
|
|
6171
|
-
|
|
6172
|
-
|
|
6173
|
-
|
|
6174
|
-
|
|
6175
|
-
|
|
6176
|
-
|
|
6177
|
-
|
|
6178
|
-
|
|
6179
|
-
|
|
6180
|
-
|
|
6181
|
-
|
|
6182
|
-
|
|
6165
|
+
}
|
|
6166
|
+
const data = await new peernet.protos['peernet-peer-response']({id: this.id});
|
|
6167
|
+
const node = await peernet.prepareMessage(from, data.encoded);
|
|
6168
|
+
|
|
6169
|
+
peer.write(Buffer.from(JSON.stringify({id, data: node.encoded})));
|
|
6170
|
+
} else if (proto.name === 'peernet-peer-response') {
|
|
6171
|
+
const from = proto.decoded.id;
|
|
6172
|
+
if (from === this.id) return;
|
|
6173
|
+
|
|
6174
|
+
if (!peernet.peerMap.has(from)) peernet.peerMap.set(from, [peer.id]);
|
|
6175
|
+
else {
|
|
6176
|
+
const connections = peernet.peerMap.get(from);
|
|
6177
|
+
if (connections.indexOf(peer.id) === -1) {
|
|
6178
|
+
connections.push(peer.id);
|
|
6179
|
+
peernet.peerMap.set(from, connections);
|
|
6183
6180
|
}
|
|
6181
|
+
}
|
|
6184
6182
|
}
|
|
6183
|
+
}
|
|
6185
6184
|
}
|
|
6186
6185
|
|
|
6187
6186
|
/**
|
|
@@ -6294,52 +6293,55 @@ class DhtEarth {
|
|
|
6294
6293
|
}
|
|
6295
6294
|
|
|
6296
6295
|
class MessageHandler {
|
|
6297
|
-
|
|
6298
|
-
|
|
6299
|
-
|
|
6300
|
-
|
|
6301
|
-
|
|
6302
|
-
|
|
6303
|
-
|
|
6304
|
-
|
|
6305
|
-
|
|
6306
|
-
|
|
6307
|
-
|
|
6308
|
-
|
|
6309
|
-
|
|
6310
|
-
|
|
6311
|
-
|
|
6312
|
-
|
|
6313
|
-
|
|
6314
|
-
|
|
6315
|
-
|
|
6316
|
-
|
|
6317
|
-
|
|
6318
|
-
|
|
6319
|
-
|
|
6320
|
-
|
|
6321
|
-
|
|
6322
|
-
|
|
6323
|
-
|
|
6324
|
-
|
|
6325
|
-
return message;
|
|
6296
|
+
constructor(network) {
|
|
6297
|
+
this.network = network;
|
|
6298
|
+
}
|
|
6299
|
+
/**
|
|
6300
|
+
* hash and sign message
|
|
6301
|
+
*
|
|
6302
|
+
* @param {object} message
|
|
6303
|
+
* @param {Buffer} message.from peer id
|
|
6304
|
+
* @param {Buffer} message.to peer id
|
|
6305
|
+
* @param {string} message.data Peernet message
|
|
6306
|
+
* (PeernetMessage excluded) encoded as a string
|
|
6307
|
+
* @return message
|
|
6308
|
+
*/
|
|
6309
|
+
async hashAndSignMessage(message) {
|
|
6310
|
+
const hash = await message.peernetHash;
|
|
6311
|
+
message.decoded.signature = globalThis.identity.sign(hash.buffer);
|
|
6312
|
+
return message
|
|
6313
|
+
}
|
|
6314
|
+
|
|
6315
|
+
/**
|
|
6316
|
+
* @param {String} from - peer id
|
|
6317
|
+
* @param {String} to - peer id
|
|
6318
|
+
* @param {String|PeernetMessage} data - data encoded message string
|
|
6319
|
+
* or the messageNode itself
|
|
6320
|
+
*/
|
|
6321
|
+
async prepareMessage(message) {
|
|
6322
|
+
if (message.keys.includes('signature')) {
|
|
6323
|
+
message = await this.hashAndSignMessage(message);
|
|
6326
6324
|
}
|
|
6325
|
+
|
|
6326
|
+
return message
|
|
6327
|
+
}
|
|
6327
6328
|
}
|
|
6328
6329
|
|
|
6329
|
-
const dataHandler = async
|
|
6330
|
-
|
|
6331
|
-
|
|
6332
|
-
|
|
6333
|
-
|
|
6334
|
-
|
|
6330
|
+
const dataHandler = async message => {
|
|
6331
|
+
if (!message) return
|
|
6332
|
+
|
|
6333
|
+
const {data, id, from, peer} = message;
|
|
6334
|
+
const proto = await protoFor(data);
|
|
6335
|
+
peernet._protoHandler({id, proto}, peernet.connections[from] || peer, from);
|
|
6335
6336
|
};
|
|
6336
6337
|
|
|
6337
6338
|
const dhtError = (proto) => {
|
|
6338
|
-
|
|
6339
|
-
|
|
6339
|
+
const text = `Received proto ${proto.name} expected peernet-dht-response`;
|
|
6340
|
+
return new Error(`Routing error: ${text}`)
|
|
6340
6341
|
};
|
|
6342
|
+
|
|
6341
6343
|
const nothingFoundError = (hash) => {
|
|
6342
|
-
|
|
6344
|
+
return new Error(`nothing found for ${hash}`)
|
|
6343
6345
|
};
|
|
6344
6346
|
|
|
6345
6347
|
// import base32 from '@vandeurenglenn/base32'
|
|
@@ -6421,7 +6423,7 @@ class KeyPath {
|
|
|
6421
6423
|
|
|
6422
6424
|
}
|
|
6423
6425
|
|
|
6424
|
-
class LeofcoinStorage {
|
|
6426
|
+
let LeofcoinStorage$1 = class LeofcoinStorage {
|
|
6425
6427
|
|
|
6426
6428
|
constructor(name = 'storage', root = '.leofcoin') {
|
|
6427
6429
|
this.name = name;
|
|
@@ -6506,7 +6508,7 @@ class LeofcoinStorage {
|
|
|
6506
6508
|
return this.db.iterate()
|
|
6507
6509
|
}
|
|
6508
6510
|
|
|
6509
|
-
}
|
|
6511
|
+
};
|
|
6510
6512
|
|
|
6511
6513
|
const randombytes = strength => crypto.getRandomValues(new Uint8Array(strength));
|
|
6512
6514
|
|
|
@@ -20178,7 +20180,7 @@ class Identity {
|
|
|
20178
20180
|
globalThis.peernet.selectedAccount = new TextDecoder().decode(selected);
|
|
20179
20181
|
}
|
|
20180
20182
|
else {
|
|
20181
|
-
const importee = await import(/* webpackChunkName: "generate-account" */ './index-
|
|
20183
|
+
const importee = await import(/* webpackChunkName: "generate-account" */ './index-4df57fd7.js');
|
|
20182
20184
|
const { identity, accounts } = await importee.default(password, this.network);
|
|
20183
20185
|
await globalThis.accountStore.put('public', JSON.stringify({ walletId: identity.walletId }));
|
|
20184
20186
|
await globalThis.walletStore.put('version', String(1));
|
|
@@ -20216,10 +20218,10 @@ class Identity {
|
|
|
20216
20218
|
}
|
|
20217
20219
|
}
|
|
20218
20220
|
|
|
20219
|
-
globalThis.LeofcoinStorage = LeofcoinStorage;
|
|
20221
|
+
globalThis.LeofcoinStorage = LeofcoinStorage$1;
|
|
20220
20222
|
globalThis.leofcoin = globalThis.leofcoin || {};
|
|
20221
|
-
|
|
20222
|
-
|
|
20223
|
+
pubsub = pubsub || new LittlePubSub();
|
|
20224
|
+
globalSub = globalSub || new LittlePubSub();
|
|
20223
20225
|
/**
|
|
20224
20226
|
* @access public
|
|
20225
20227
|
* @example
|
|
@@ -20239,11 +20241,14 @@ class Peernet {
|
|
|
20239
20241
|
stars;
|
|
20240
20242
|
networkVersion;
|
|
20241
20243
|
bw;
|
|
20244
|
+
hasDaemon = false;
|
|
20242
20245
|
autoStart = true;
|
|
20243
20246
|
#starting = false;
|
|
20244
20247
|
#started = false;
|
|
20245
20248
|
#connections = {};
|
|
20246
20249
|
requestProtos = {};
|
|
20250
|
+
_messageHandler;
|
|
20251
|
+
protos;
|
|
20247
20252
|
/**
|
|
20248
20253
|
* @access public
|
|
20249
20254
|
* @param {Object} options
|
|
@@ -20273,7 +20278,7 @@ class Peernet {
|
|
|
20273
20278
|
if (!options.root) {
|
|
20274
20279
|
parts[1] ? options.root = `.${parts[0]}/${parts[1]}` : options.root = `.${this.network}`;
|
|
20275
20280
|
}
|
|
20276
|
-
|
|
20281
|
+
peernet = this;
|
|
20277
20282
|
this.bw = {
|
|
20278
20283
|
up: 0,
|
|
20279
20284
|
down: 0,
|
|
@@ -20349,7 +20354,7 @@ class Peernet {
|
|
|
20349
20354
|
this.root = options.root;
|
|
20350
20355
|
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile
|
|
20351
20356
|
// FolderMessageResponse
|
|
20352
|
-
} = await import(/* webpackChunkName: "messages" */ './messages-
|
|
20357
|
+
} = await import(/* webpackChunkName: "messages" */ './messages-194cb7ee.js');
|
|
20353
20358
|
/**
|
|
20354
20359
|
* proto Object containing protos
|
|
20355
20360
|
* @type {Object}
|