@leofcoin/peernet 1.1.99 → 1.1.100

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.
@@ -0,0 +1,204 @@
1
+ import { FormatInterface } from '@leofcoin/codec-format-interface';
2
+
3
+ var proto$b = {
4
+ data: new Uint8Array(),
5
+ signature: new Uint8Array(),
6
+ 'from?': String(),
7
+ 'to?': String(),
8
+ 'id?': String()
9
+ };
10
+
11
+ class PeernetMessage extends FormatInterface {
12
+ get messageName() {
13
+ return 'PeernetMessage';
14
+ }
15
+ constructor(buffer) {
16
+ const name = 'peernet-message';
17
+ super(buffer, proto$b, { name });
18
+ }
19
+ }
20
+
21
+ var proto$a = {
22
+ hash: String(),
23
+ 'store?': String()
24
+ };
25
+
26
+ /**
27
+ * @example `
28
+ new DHTMessage(hash, store)
29
+ // store = optional if not set, peernet checks every store
30
+ let message = new DHTMessage('hashmvbs124xcfd...', 'transaction')
31
+ message = new DHTMessage('hashmvbs124xcfd...', 'block')
32
+ `
33
+ */
34
+ class DHTMessage extends FormatInterface {
35
+ get messageName() {
36
+ return 'PeernetDHTMessage';
37
+ }
38
+ constructor(data) {
39
+ const name = 'peernet-dht';
40
+ super(data, proto$a, { name });
41
+ }
42
+ }
43
+
44
+ var proto$9 = {
45
+ hash: String(),
46
+ has: Boolean()
47
+ };
48
+
49
+ class DHTMessageResponse extends FormatInterface {
50
+ get messageName() {
51
+ return 'PeernetDHTMessageResponse';
52
+ }
53
+ constructor(data) {
54
+ const name = 'peernet-dht-response';
55
+ super(data, proto$9, { name });
56
+ }
57
+ }
58
+
59
+ var proto$8 = {
60
+ hash: String(),
61
+ 'store?': String()
62
+ };
63
+
64
+ /**
65
+ * @extends {CodecFormat}
66
+ */
67
+ class DataMessage extends FormatInterface {
68
+ get messageName() {
69
+ return 'PeernetDataMessage';
70
+ }
71
+ /**
72
+ * @param {Buffer|String|Object|DataMessage} data - The data needed to create the DataMessage
73
+ */
74
+ constructor(data) {
75
+ super(data, proto$8, { name: 'peernet-data' });
76
+ }
77
+ }
78
+
79
+ var proto$7 = {
80
+ data: new Uint8Array(),
81
+ topic: new Uint8Array()
82
+ };
83
+
84
+ class PsMessage extends FormatInterface {
85
+ get messageName() {
86
+ return 'PsMessage';
87
+ }
88
+ constructor(buffer) {
89
+ const name = 'peernet-ps';
90
+ super(buffer, proto$7, { name });
91
+ }
92
+ }
93
+
94
+ var proto$6 = {
95
+ id: String()
96
+ };
97
+
98
+ class PeerMessage extends FormatInterface {
99
+ get messageName() {
100
+ return 'PeernetPeerMessage';
101
+ }
102
+ constructor(data) {
103
+ const name = 'peernet-peer';
104
+ super(data, proto$6, { name });
105
+ }
106
+ }
107
+
108
+ var proto$5 = {
109
+ request: String(),
110
+ 'requested?': new Uint8Array()
111
+ };
112
+
113
+ class RequestMessage extends FormatInterface {
114
+ get messageName() {
115
+ return 'PeernetRequestMessage';
116
+ }
117
+ constructor(data) {
118
+ const name = 'peernet-request';
119
+ super(data, proto$5, { name });
120
+ }
121
+ }
122
+
123
+ var proto$4 = {
124
+ response: {}
125
+ };
126
+
127
+ class ResponseMessage extends FormatInterface {
128
+ get messageName() {
129
+ return 'PeernetResponseMessage';
130
+ }
131
+ constructor(data) {
132
+ const name = 'peernet-response';
133
+ super(data, proto$4, { name });
134
+ }
135
+ }
136
+
137
+ var proto$3 = {
138
+ id: String()
139
+ };
140
+
141
+ class PeerMessageResponse extends FormatInterface {
142
+ get messageName() {
143
+ return 'PeernetPeerMessageResponse';
144
+ }
145
+ constructor(data) {
146
+ const name = 'peernet-peer-response';
147
+ super(data, proto$3, { name });
148
+ }
149
+ }
150
+
151
+ var proto$2 = {
152
+ hash: String(),
153
+ data: new Uint8Array()
154
+ };
155
+
156
+ class DataMessageResponse extends FormatInterface {
157
+ get messageName() {
158
+ return 'PeernetDataMessageResponse';
159
+ }
160
+ constructor(data) {
161
+ const name = 'peernet-data-response';
162
+ super(data, proto$2, { name });
163
+ }
164
+ }
165
+
166
+ var proto$1 = {
167
+ value: String(),
168
+ author: String(),
169
+ timestamp: Number(),
170
+ files: [String()]
171
+ };
172
+
173
+ class ChatMessage extends FormatInterface {
174
+ get messageName() {
175
+ return 'ChatMessage';
176
+ }
177
+ constructor(buffer) {
178
+ const name = 'chat-message';
179
+ super(buffer, proto$1, { name });
180
+ }
181
+ }
182
+
183
+ var proto = {
184
+ path: String(),
185
+ 'content?': '',
186
+ 'links?': []
187
+ };
188
+
189
+ /**
190
+ * @extends {CodecFormat}
191
+ */
192
+ class PeernetFile extends FormatInterface {
193
+ get messageName() {
194
+ return 'PeernetFile';
195
+ }
196
+ /**
197
+ * @param {Buffer|String|Object|DataMessage} data - The data needed to create the DataMessage
198
+ */
199
+ constructor(data) {
200
+ super(data, proto, { name: 'peernet-file' });
201
+ }
202
+ }
203
+
204
+ export { ChatMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PeerMessage, PeerMessageResponse, PeernetFile, PeernetMessage, PsMessage, RequestMessage, ResponseMessage };
@@ -11,54 +11,55 @@ import 'qr-scanner';
11
11
  import 'qrcode';
12
12
 
13
13
  const BufferToUint8Array = (data) => {
14
- if (data.type === 'Buffer') {
15
- data = new Uint8Array(data.data);
16
- }
17
- return data
14
+ if (data.type === 'Buffer') {
15
+ data = new Uint8Array(data.data);
16
+ }
17
+ return data;
18
18
  };
19
-
20
19
  const protoFor = (message) => {
21
- const codec = new Codec(message);
22
- if (!codec.name) throw new Error(`proto not found ${message}`)
23
- const Proto = globalThis.peernet.protos[codec.name];
24
- if (!Proto) throw new Error(`No proto defined for ${codec.name}`)
25
- return new Proto(message)
20
+ const codec = new Codec(message);
21
+ if (!codec.name)
22
+ throw new Error(`proto not found ${message}`);
23
+ const Proto = globalThis.peernet.protos[codec.name];
24
+ if (!Proto)
25
+ throw new Error(`No proto defined for ${codec.name}`);
26
+ return new Proto(message);
26
27
  };
27
-
28
28
  /**
29
29
  * wether or not a peernet daemon is active
30
30
  * @return {Boolean}
31
31
  */
32
32
  const hasDaemon = async () => {
33
- try {
34
- let response = await fetch('http://127.0.0.1:1000/api/version');
35
- response = await response.json();
36
- return Boolean(response.client === '@peernet/api/http')
37
- } catch (e) {
38
- return false
39
- }
33
+ try {
34
+ let response = await fetch('http://127.0.0.1:1000/api/version');
35
+ response = await response.json();
36
+ return Boolean(response.client === '@peernet/api/http');
37
+ }
38
+ catch (e) {
39
+ return false;
40
+ }
40
41
  };
41
-
42
42
  const https = () => {
43
- if (!globalThis.location) return false
44
- return Boolean(globalThis.location.protocol === 'https:')
43
+ if (!globalThis.location)
44
+ return false;
45
+ return Boolean(globalThis.location.protocol === 'https:');
45
46
  };
46
-
47
47
  /**
48
48
  * Get current environment
49
49
  * @return {String} current environment [node, electron, browser]
50
50
  */
51
51
  const environment = () => {
52
- const _navigator = globalThis.navigator;
53
- if (!_navigator) {
54
- return 'node'
55
- } else if (_navigator && /electron/i.test(_navigator.userAgent)) {
56
- return 'electron'
57
- } else {
58
- return 'browser'
59
- }
52
+ const _navigator = globalThis.navigator;
53
+ if (!_navigator) {
54
+ return 'node';
55
+ }
56
+ else if (_navigator && /electron/i.test(_navigator.userAgent)) {
57
+ return 'electron';
58
+ }
59
+ else {
60
+ return 'browser';
61
+ }
60
62
  };
61
-
62
63
  /**
63
64
  * * Get current environment
64
65
  * @return {Object} result
@@ -66,84 +67,84 @@ const environment = () => {
66
67
  * @property {Boolean} reult.environment Current environment
67
68
  */
68
69
  const target = async () => {
69
- let daemon = false;
70
- if (!https()) daemon = await hasDaemon();
71
-
72
- return { daemon, environment: environment() }
70
+ let daemon = false;
71
+ if (!https())
72
+ daemon = await hasDaemon();
73
+ return { daemon, environment: environment() };
73
74
  };
74
75
 
75
76
  class PeerDiscovery {
76
- constructor(id) {
77
- this.id = id;
78
- }
79
-
80
- _getPeerId(id) {
81
- if (!peernet.peerMap || (peernet.peerMap && peernet.peerMap.size === 0)) return false
82
-
83
- for (const entry of [...peernet.peerMap.entries()]) {
84
- for (const _id of entry[1]) {
85
- if (_id === id) return entry[0]
86
- }
77
+ constructor(id) {
78
+ this.id = id;
87
79
  }
88
- }
89
-
90
- async discover(peer) {
91
- let id = this._getPeerId(peer.id);
92
- if (id) 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
-
96
- let response = await peer.request(node.encoded);
97
- response = await protoFor(response);
98
- response = await new peernet.protos['peernet-peer-response'](response.decoded.data);
99
-
100
- id = response.decoded.id;
101
- if (id === this.id) return
102
-
103
- if (!peernet.peerMap.has(id)) peernet.peerMap.set(id, [peer.id]);
104
- else {
105
- const connections = peernet.peerMap.get(id);
106
- if (connections.indexOf(peer.id) === -1) {
107
- connections.push(peer.id);
108
- peernet.peerMap.set(peer.id, connections);
109
- }
80
+ _getPeerId(id) {
81
+ if (!peernet.peerMap || (peernet.peerMap && peernet.peerMap.size === 0))
82
+ return false;
83
+ for (const entry of [...peernet.peerMap.entries()]) {
84
+ for (const _id of entry[1]) {
85
+ if (_id === id)
86
+ return entry[0];
87
+ }
88
+ }
110
89
  }
111
- return id
112
- }
113
-
114
- async discoverHandler(message, peer) {
115
- const { id, proto } = message;
116
- // if (typeof message.data === 'string') message.data = Buffer.from(message.data)
117
- if (proto.name === 'peernet-peer') {
118
- const from = proto.decoded.id;
119
- if (from === this.id) return
120
-
121
- if (!peernet.peerMap.has(from)) peernet.peerMap.set(from, [peer.id]);
122
- else {
123
- const connections = peernet.peerMap.get(from);
124
- if (connections.indexOf(peer.id) === -1) {
125
- connections.push(peer.id);
126
- peernet.peerMap.set(from, connections);
90
+ async discover(peer) {
91
+ let id = this._getPeerId(peer.id);
92
+ if (id)
93
+ return id;
94
+ const data = await new peernet.protos['peernet-peer']({ id: this.id });
95
+ const node = await peernet.prepareMessage(peer.id, data.encoded);
96
+ let response = await peer.request(node.encoded);
97
+ response = await protoFor(response);
98
+ response = await new peernet.protos['peernet-peer-response'](response.decoded.data);
99
+ id = response.decoded.id;
100
+ if (id === this.id)
101
+ return;
102
+ if (!peernet.peerMap.has(id))
103
+ peernet.peerMap.set(id, [peer.id]);
104
+ else {
105
+ const connections = peernet.peerMap.get(id);
106
+ if (connections.indexOf(peer.id) === -1) {
107
+ connections.push(peer.id);
108
+ peernet.peerMap.set(peer.id, connections);
109
+ }
127
110
  }
128
- }
129
- const data = await new peernet.protos['peernet-peer-response']({ id: this.id });
130
- const node = await peernet.prepareMessage(from, data.encoded);
131
-
132
- peer.write(Buffer.from(JSON.stringify({ id, data: node.encoded })));
133
- } else if (proto.name === 'peernet-peer-response') {
134
- const from = proto.decoded.id;
135
- if (from === this.id) return
136
-
137
- if (!peernet.peerMap.has(from)) peernet.peerMap.set(from, [peer.id]);
138
- else {
139
- const connections = peernet.peerMap.get(from);
140
- if (connections.indexOf(peer.id) === -1) {
141
- connections.push(peer.id);
142
- peernet.peerMap.set(from, connections);
111
+ return id;
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)
119
+ return;
120
+ if (!peernet.peerMap.has(from))
121
+ peernet.peerMap.set(from, [peer.id]);
122
+ else {
123
+ const connections = peernet.peerMap.get(from);
124
+ if (connections.indexOf(peer.id) === -1) {
125
+ connections.push(peer.id);
126
+ peernet.peerMap.set(from, connections);
127
+ }
128
+ }
129
+ const data = await new peernet.protos['peernet-peer-response']({ id: this.id });
130
+ const node = await peernet.prepareMessage(from, data.encoded);
131
+ peer.write(Buffer.from(JSON.stringify({ id, data: node.encoded })));
132
+ }
133
+ else if (proto.name === 'peernet-peer-response') {
134
+ const from = proto.decoded.id;
135
+ if (from === this.id)
136
+ return;
137
+ if (!peernet.peerMap.has(from))
138
+ peernet.peerMap.set(from, [peer.id]);
139
+ else {
140
+ const connections = peernet.peerMap.get(from);
141
+ if (connections.indexOf(peer.id) === -1) {
142
+ connections.push(peer.id);
143
+ peernet.peerMap.set(from, connections);
144
+ }
145
+ }
143
146
  }
144
- }
145
147
  }
146
- }
147
148
  }
148
149
 
149
150
  /**
@@ -245,59 +246,57 @@ class DhtEarth {
245
246
  }
246
247
 
247
248
  class MessageHandler {
248
- constructor(network) {
249
- this.network = network;
250
- }
251
- /**
252
- * hash and sign message
253
- *
254
- * @param {object} message
255
- * @param {Buffer} message.from peer id
256
- * @param {Buffer} message.to peer id
257
- * @param {string} message.data Peernet message
258
- * (PeernetMessage excluded) encoded as a string
259
- * @return message
260
- */
261
- async hashAndSignMessage(message) {
262
- const hash = await message.peernetHash;
263
- message.decoded.signature = globalThis.identity.sign(hash.buffer);
264
- return message
265
- }
266
-
267
- /**
268
- * @param {String} from - peer id
269
- * @param {String} to - peer id
270
- * @param {String|PeernetMessage} data - data encoded message string
271
- * or the messageNode itself
272
- */
273
- async prepareMessage(message) {
274
- if (message.keys.includes('signature')) {
275
- message = await this.hashAndSignMessage(message);
249
+ constructor(network) {
250
+ this.network = network;
251
+ }
252
+ /**
253
+ * hash and sign message
254
+ *
255
+ * @param {object} message
256
+ * @param {Buffer} message.from peer id
257
+ * @param {Buffer} message.to peer id
258
+ * @param {string} message.data Peernet message
259
+ * (PeernetMessage excluded) encoded as a string
260
+ * @return message
261
+ */
262
+ async hashAndSignMessage(message) {
263
+ const hash = await message.peernetHash;
264
+ message.decoded.signature = globalThis.identity.sign(hash.buffer);
265
+ return message;
266
+ }
267
+ /**
268
+ * @param {String} from - peer id
269
+ * @param {String} to - peer id
270
+ * @param {String|PeernetMessage} data - data encoded message string
271
+ * or the messageNode itself
272
+ */
273
+ async prepareMessage(message) {
274
+ if (message.keys.includes('signature')) {
275
+ message = await this.hashAndSignMessage(message);
276
+ }
277
+ return message;
276
278
  }
277
-
278
- return message
279
- }
280
279
  }
281
280
 
282
281
  const dataHandler = async (message) => {
283
- if (!message) return
284
-
285
- try {
286
- const { data, id, from, peer } = message;
287
- const proto = await protoFor(data);
288
- peernet._protoHandler({ id, proto }, peernet.connections[from] || peer, from);
289
- } catch (error) {
290
- console.error(error);
291
- }
282
+ if (!message)
283
+ return;
284
+ try {
285
+ const { data, id, from, peer } = message;
286
+ const proto = await protoFor(data);
287
+ peernet._protoHandler({ id, proto }, peernet.connections[from] || peer, from);
288
+ }
289
+ catch (error) {
290
+ console.error(error);
291
+ }
292
292
  };
293
293
 
294
294
  const dhtError = (proto) => {
295
- const text = `Received proto ${proto.name} expected peernet-dht-response`;
296
- return new Error(`Routing error: ${text}`)
295
+ const text = `Received proto ${proto.name} expected peernet-dht-response`;
296
+ return new Error(`Routing error: ${text}`);
297
297
  };
298
-
299
298
  const nothingFoundError = (hash) => {
300
- return new Error(`nothing found for ${hash}`)
299
+ return new Error(`nothing found for ${hash}`);
301
300
  };
302
301
 
303
302
  globalThis.LeofcoinStorage = Storage;
@@ -448,7 +447,7 @@ class Peernet {
448
447
  this.root = options.root;
449
448
  const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile
450
449
  // FolderMessageResponse
451
- } = await import(/* webpackChunkName: "messages" */ './messages-BmpgEM4y.js');
450
+ } = await import(/* webpackChunkName: "messages" */ './messages-CsDqTaBh.js');
452
451
  /**
453
452
  * proto Object containing protos
454
453
  * @type {Object}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @extends {CodecFormat}
3
+ */
4
+ export default class PeernetFileLink {
5
+ /**
6
+ * @param {Buffer|String|Object|DataMessage} data - The data needed to create the DataMessage
7
+ */
8
+ constructor(data: Buffer | string | any | DataMessage);
9
+ get messageName(): string;
10
+ }
@@ -0,0 +1,4 @@
1
+ export default class PeerInfo {
2
+ constructor(data: any, options: any);
3
+ keys: string[];
4
+ }
@@ -0,0 +1,2 @@
1
+ declare function _default(): Promise<string>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare function _default(): Promise<any>;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ declare const _default: {
2
+ hash: string;
3
+ path: string;
4
+ 'size?': number;
5
+ };
6
+ export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leofcoin/peernet",
3
- "version": "1.1.99",
3
+ "version": "1.1.100",
4
4
  "description": "",
5
5
  "browser": "./exports/browser/peernet.js",
6
6
  "exports": {
@@ -37,7 +37,7 @@
37
37
  "@leofcoin/identity-utils": "^1.0.2",
38
38
  "@leofcoin/multi-wallet": "^3.1.8",
39
39
  "@leofcoin/storage": "^3.5.38",
40
- "@netpeer/swarm": "^0.8.29",
40
+ "@netpeer/swarm": "^0.8.30",
41
41
  "@vandeurenglenn/base32": "^1.2.4",
42
42
  "@vandeurenglenn/base58": "^1.1.9",
43
43
  "@vandeurenglenn/debug": "^1.2.6",
@@ -55,7 +55,7 @@
55
55
  "@rollup/plugin-commonjs": "^28.0.8",
56
56
  "@rollup/plugin-json": "^6.1.0",
57
57
  "@rollup/plugin-node-resolve": "^16.0.3",
58
- "@rollup/plugin-typescript": "^12.1.4",
58
+ "@rollup/plugin-typescript": "^12.2.0",
59
59
  "@rollup/plugin-wasm": "^6.2.2",
60
60
  "@types/bs58check": "^3.0.1",
61
61
  "@types/node": "^24.9.1",