@leofcoin/peernet 1.2.13 → 1.2.15
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/{client-DN_Y7L6h.js → client-Dl1IxbL-.js} +4 -4
- package/exports/browser/{messages-C-BwUsHC.js → messages-BHDRCKN5.js} +5 -5
- package/exports/browser/{peernet-BpKdfmda.js → peernet-dd6ESbyH.js} +41 -6
- package/exports/browser/peernet.js +1 -1
- package/exports/{messages-C9lYBAhD.js → messages-CHKVVTVE.js} +4 -4
- package/exports/peernet.js +40 -5
- package/exports/types/peernet.d.ts +8 -0
- package/exports/types/proto/chat-message.proto.d.ts +3 -3
- package/exports/types/proto/response.proto.d.ts +1 -1
- package/package.json +5 -5
- package/src/peernet.ts +35 -0
- package/src/proto/chat-message.proto.js +3 -3
- package/src/proto/response.proto.js +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { L as LittlePubSub, d as deflate_1, i as inflate_1, c as createDebugger } from './peernet-
|
|
1
|
+
import { L as LittlePubSub, d as deflate_1, i as inflate_1, c as createDebugger } from './peernet-dd6ESbyH.js';
|
|
2
2
|
import './identity-CqSnKXWH.js';
|
|
3
3
|
import './value-C3vAp-wb.js';
|
|
4
4
|
|
|
@@ -220,7 +220,7 @@ class SocketRequestClient {
|
|
|
220
220
|
if (times !== undefined)
|
|
221
221
|
this.#times = times;
|
|
222
222
|
if (experimentalWebsocket !== undefined)
|
|
223
|
-
this.#experimentalWebsocket;
|
|
223
|
+
this.#experimentalWebsocket = experimentalWebsocket;
|
|
224
224
|
this.#url = url;
|
|
225
225
|
this.#protocol = protocol;
|
|
226
226
|
this.#options = options;
|
|
@@ -286,7 +286,7 @@ class SocketRequestClient {
|
|
|
286
286
|
});
|
|
287
287
|
}
|
|
288
288
|
onerror = (error) => {
|
|
289
|
-
if (globalThis.pubsub.
|
|
289
|
+
if (globalThis.pubsub.hasSubscribers('error')) {
|
|
290
290
|
globalThis.pubsub.publish('error', error);
|
|
291
291
|
}
|
|
292
292
|
else {
|
|
@@ -856,7 +856,7 @@ class Client {
|
|
|
856
856
|
const dataOut = message instanceof Uint8Array
|
|
857
857
|
? message
|
|
858
858
|
: new Uint8Array(Object.values(message));
|
|
859
|
-
if (globalThis.pubsub.
|
|
859
|
+
if (globalThis.pubsub.hasSubscribers(id)) {
|
|
860
860
|
globalThis.pubsub.publish(id, {
|
|
861
861
|
data: dataOut,
|
|
862
862
|
id,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as FormatInterface } from './peernet-
|
|
1
|
+
import { F as FormatInterface } from './peernet-dd6ESbyH.js';
|
|
2
2
|
import './identity-CqSnKXWH.js';
|
|
3
3
|
import './value-C3vAp-wb.js';
|
|
4
4
|
|
|
@@ -123,7 +123,7 @@ class RequestMessage extends FormatInterface {
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
var proto$4 = {
|
|
126
|
-
response:
|
|
126
|
+
response: new Uint8Array()
|
|
127
127
|
};
|
|
128
128
|
|
|
129
129
|
class ResponseMessage extends FormatInterface {
|
|
@@ -166,10 +166,10 @@ class DataMessageResponse extends FormatInterface {
|
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
var proto$1 = {
|
|
169
|
-
value:
|
|
170
|
-
author:
|
|
169
|
+
value: new Uint8Array(),
|
|
170
|
+
author: new Uint8Array(),
|
|
171
171
|
timestamp: Number(),
|
|
172
|
-
files: [
|
|
172
|
+
files: [new Uint8Array()]
|
|
173
173
|
};
|
|
174
174
|
|
|
175
175
|
class ChatMessage extends FormatInterface {
|
|
@@ -8473,7 +8473,7 @@ class Peernet {
|
|
|
8473
8473
|
await getAddress();
|
|
8474
8474
|
this.storePrefix = options.storePrefix;
|
|
8475
8475
|
this.root = options.root;
|
|
8476
|
-
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile } = await import(/* webpackChunkName: "messages" */ './messages-
|
|
8476
|
+
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile } = await import(/* webpackChunkName: "messages" */ './messages-BHDRCKN5.js');
|
|
8477
8477
|
/**
|
|
8478
8478
|
* proto Object containing protos
|
|
8479
8479
|
* @type {Object}
|
|
@@ -8520,7 +8520,7 @@ class Peernet {
|
|
|
8520
8520
|
if (this.#starting || this.#started)
|
|
8521
8521
|
return;
|
|
8522
8522
|
this.#starting = true;
|
|
8523
|
-
const importee = await import('./client-
|
|
8523
|
+
const importee = await import('./client-Dl1IxbL-.js');
|
|
8524
8524
|
/**
|
|
8525
8525
|
* @access public
|
|
8526
8526
|
* @type {PeernetClient}
|
|
@@ -8678,6 +8678,41 @@ class Peernet {
|
|
|
8678
8678
|
this.sendMessage(peer, id, node.encoded);
|
|
8679
8679
|
}
|
|
8680
8680
|
}
|
|
8681
|
+
/**
|
|
8682
|
+
* Send a request to connected peers and return the first response.
|
|
8683
|
+
*
|
|
8684
|
+
* @param {String} requestName - name of the registered request handler on remote peers
|
|
8685
|
+
* @param {Uint8Array} [requested] - optional data to send with the request
|
|
8686
|
+
* @returns {Promise<Uint8Array|undefined>} decoded response data or undefined
|
|
8687
|
+
*/
|
|
8688
|
+
async request(requestName, requested) {
|
|
8689
|
+
const input = { request: requestName };
|
|
8690
|
+
if (requested)
|
|
8691
|
+
input.requested = requested;
|
|
8692
|
+
const data = await new globalThis.peernet.protos['peernet-request'](input);
|
|
8693
|
+
const node = await this.prepareMessage(data);
|
|
8694
|
+
const requests = [];
|
|
8695
|
+
for (const [peerId, peer] of Object.entries(this.connections)) {
|
|
8696
|
+
if (peerId !== this.id && peer.connected) {
|
|
8697
|
+
requests.push(peer.request(node.encoded));
|
|
8698
|
+
}
|
|
8699
|
+
}
|
|
8700
|
+
if (requests.length === 0)
|
|
8701
|
+
return undefined;
|
|
8702
|
+
try {
|
|
8703
|
+
let result = await Promise.any(requests);
|
|
8704
|
+
if (result)
|
|
8705
|
+
result = new Uint8Array(Object.values(result));
|
|
8706
|
+
if (!result || result.length === 0)
|
|
8707
|
+
return undefined;
|
|
8708
|
+
const proto = await protoFor(result);
|
|
8709
|
+
return proto.decoded.response;
|
|
8710
|
+
}
|
|
8711
|
+
catch (error) {
|
|
8712
|
+
debug('request failed', error);
|
|
8713
|
+
return undefined;
|
|
8714
|
+
}
|
|
8715
|
+
}
|
|
8681
8716
|
/**
|
|
8682
8717
|
* @private
|
|
8683
8718
|
*
|
|
@@ -8990,7 +9025,7 @@ class Peernet {
|
|
|
8990
9025
|
const links = [];
|
|
8991
9026
|
for (const file of files) {
|
|
8992
9027
|
const fileNode = await new globalThis.peernet.protos['peernet-file'](file);
|
|
8993
|
-
const hash = await fileNode.hash;
|
|
9028
|
+
const hash = await fileNode.hash();
|
|
8994
9029
|
await dataStore.put(hash, fileNode.encoded);
|
|
8995
9030
|
links.push({ hash, path: file.path });
|
|
8996
9031
|
}
|
|
@@ -8998,7 +9033,7 @@ class Peernet {
|
|
|
8998
9033
|
path: '/',
|
|
8999
9034
|
links
|
|
9000
9035
|
});
|
|
9001
|
-
const hash = await node.hash;
|
|
9036
|
+
const hash = await node.hash();
|
|
9002
9037
|
await dataStore.put(hash, node.encoded);
|
|
9003
9038
|
return hash;
|
|
9004
9039
|
}
|
|
@@ -9016,7 +9051,7 @@ class Peernet {
|
|
|
9016
9051
|
const links = [];
|
|
9017
9052
|
for (const file of files) {
|
|
9018
9053
|
const fileNode = await new globalThis.peernet.protos['peernet-file'](file);
|
|
9019
|
-
const hash = await fileNode.hash;
|
|
9054
|
+
const hash = await fileNode.hash();
|
|
9020
9055
|
await dataStore.put(hash, fileNode.encoded);
|
|
9021
9056
|
links.push({ hash, path: file.path });
|
|
9022
9057
|
}
|
|
@@ -9024,7 +9059,7 @@ class Peernet {
|
|
|
9024
9059
|
path: '/',
|
|
9025
9060
|
links
|
|
9026
9061
|
});
|
|
9027
|
-
const hash = await node.hash;
|
|
9062
|
+
const hash = await node.hash();
|
|
9028
9063
|
await dataStore.put(hash, node.encoded);
|
|
9029
9064
|
return hash;
|
|
9030
9065
|
}
|
|
@@ -121,7 +121,7 @@ class RequestMessage extends FormatInterface {
|
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
var proto$4 = {
|
|
124
|
-
response:
|
|
124
|
+
response: new Uint8Array()
|
|
125
125
|
};
|
|
126
126
|
|
|
127
127
|
class ResponseMessage extends FormatInterface {
|
|
@@ -164,10 +164,10 @@ class DataMessageResponse extends FormatInterface {
|
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
var proto$1 = {
|
|
167
|
-
value:
|
|
168
|
-
author:
|
|
167
|
+
value: new Uint8Array(),
|
|
168
|
+
author: new Uint8Array(),
|
|
169
169
|
timestamp: Number(),
|
|
170
|
-
files: [
|
|
170
|
+
files: [new Uint8Array()]
|
|
171
171
|
};
|
|
172
172
|
|
|
173
173
|
class ChatMessage extends FormatInterface {
|
package/exports/peernet.js
CHANGED
|
@@ -451,7 +451,7 @@ class Peernet {
|
|
|
451
451
|
await getAddress();
|
|
452
452
|
this.storePrefix = options.storePrefix;
|
|
453
453
|
this.root = options.root;
|
|
454
|
-
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile } = await import(/* webpackChunkName: "messages" */ './messages-
|
|
454
|
+
const { RequestMessage, ResponseMessage, PeerMessage, PeerMessageResponse, PeernetMessage, DHTMessage, DHTMessageResponse, DataMessage, DataMessageResponse, PsMessage, ChatMessage, PeernetFile } = await import(/* webpackChunkName: "messages" */ './messages-CHKVVTVE.js');
|
|
455
455
|
/**
|
|
456
456
|
* proto Object containing protos
|
|
457
457
|
* @type {Object}
|
|
@@ -656,6 +656,41 @@ class Peernet {
|
|
|
656
656
|
this.sendMessage(peer, id, node.encoded);
|
|
657
657
|
}
|
|
658
658
|
}
|
|
659
|
+
/**
|
|
660
|
+
* Send a request to connected peers and return the first response.
|
|
661
|
+
*
|
|
662
|
+
* @param {String} requestName - name of the registered request handler on remote peers
|
|
663
|
+
* @param {Uint8Array} [requested] - optional data to send with the request
|
|
664
|
+
* @returns {Promise<Uint8Array|undefined>} decoded response data or undefined
|
|
665
|
+
*/
|
|
666
|
+
async request(requestName, requested) {
|
|
667
|
+
const input = { request: requestName };
|
|
668
|
+
if (requested)
|
|
669
|
+
input.requested = requested;
|
|
670
|
+
const data = await new globalThis.peernet.protos['peernet-request'](input);
|
|
671
|
+
const node = await this.prepareMessage(data);
|
|
672
|
+
const requests = [];
|
|
673
|
+
for (const [peerId, peer] of Object.entries(this.connections)) {
|
|
674
|
+
if (peerId !== this.id && peer.connected) {
|
|
675
|
+
requests.push(peer.request(node.encoded));
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
if (requests.length === 0)
|
|
679
|
+
return undefined;
|
|
680
|
+
try {
|
|
681
|
+
let result = await Promise.any(requests);
|
|
682
|
+
if (result)
|
|
683
|
+
result = new Uint8Array(Object.values(result));
|
|
684
|
+
if (!result || result.length === 0)
|
|
685
|
+
return undefined;
|
|
686
|
+
const proto = await protoFor(result);
|
|
687
|
+
return proto.decoded.response;
|
|
688
|
+
}
|
|
689
|
+
catch (error) {
|
|
690
|
+
debug('request failed', error);
|
|
691
|
+
return undefined;
|
|
692
|
+
}
|
|
693
|
+
}
|
|
659
694
|
/**
|
|
660
695
|
* @private
|
|
661
696
|
*
|
|
@@ -968,7 +1003,7 @@ class Peernet {
|
|
|
968
1003
|
const links = [];
|
|
969
1004
|
for (const file of files) {
|
|
970
1005
|
const fileNode = await new globalThis.peernet.protos['peernet-file'](file);
|
|
971
|
-
const hash = await fileNode.hash;
|
|
1006
|
+
const hash = await fileNode.hash();
|
|
972
1007
|
await dataStore.put(hash, fileNode.encoded);
|
|
973
1008
|
links.push({ hash, path: file.path });
|
|
974
1009
|
}
|
|
@@ -976,7 +1011,7 @@ class Peernet {
|
|
|
976
1011
|
path: '/',
|
|
977
1012
|
links
|
|
978
1013
|
});
|
|
979
|
-
const hash = await node.hash;
|
|
1014
|
+
const hash = await node.hash();
|
|
980
1015
|
await dataStore.put(hash, node.encoded);
|
|
981
1016
|
return hash;
|
|
982
1017
|
}
|
|
@@ -994,7 +1029,7 @@ class Peernet {
|
|
|
994
1029
|
const links = [];
|
|
995
1030
|
for (const file of files) {
|
|
996
1031
|
const fileNode = await new globalThis.peernet.protos['peernet-file'](file);
|
|
997
|
-
const hash = await fileNode.hash;
|
|
1032
|
+
const hash = await fileNode.hash();
|
|
998
1033
|
await dataStore.put(hash, fileNode.encoded);
|
|
999
1034
|
links.push({ hash, path: file.path });
|
|
1000
1035
|
}
|
|
@@ -1002,7 +1037,7 @@ class Peernet {
|
|
|
1002
1037
|
path: '/',
|
|
1003
1038
|
links
|
|
1004
1039
|
});
|
|
1005
|
-
const hash = await node.hash;
|
|
1040
|
+
const hash = await node.hash();
|
|
1006
1041
|
await dataStore.put(hash, node.encoded);
|
|
1007
1042
|
return hash;
|
|
1008
1043
|
}
|
|
@@ -131,6 +131,14 @@ export default class Peernet {
|
|
|
131
131
|
}): Promise<string>;
|
|
132
132
|
handleData(peer: any, id: any, proto: any): Promise<any>;
|
|
133
133
|
handleRequest(peer: any, id: any, proto: any): Promise<void>;
|
|
134
|
+
/**
|
|
135
|
+
* Send a request to connected peers and return the first response.
|
|
136
|
+
*
|
|
137
|
+
* @param {String} requestName - name of the registered request handler on remote peers
|
|
138
|
+
* @param {Uint8Array} [requested] - optional data to send with the request
|
|
139
|
+
* @returns {Promise<Uint8Array|undefined>} decoded response data or undefined
|
|
140
|
+
*/
|
|
141
|
+
request(requestName: string, requested?: Uint8Array): Promise<any>;
|
|
134
142
|
/**
|
|
135
143
|
* @private
|
|
136
144
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
declare namespace _default {
|
|
2
|
-
let value:
|
|
3
|
-
let author:
|
|
2
|
+
let value: Uint8Array<ArrayBuffer>;
|
|
3
|
+
let author: Uint8Array<ArrayBuffer>;
|
|
4
4
|
let timestamp: number;
|
|
5
|
-
let files:
|
|
5
|
+
let files: Uint8Array<ArrayBuffer>[];
|
|
6
6
|
}
|
|
7
7
|
export default _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leofcoin/peernet",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.15",
|
|
4
4
|
"description": "",
|
|
5
5
|
"browser": "./exports/browser/peernet.js",
|
|
6
6
|
"exports": {
|
|
@@ -255,14 +255,14 @@
|
|
|
255
255
|
"@leofcoin/multi-wallet": "^3.1.8",
|
|
256
256
|
"@leofcoin/storage": "^3.5.38",
|
|
257
257
|
"@mapbox/node-pre-gyp": "^2.0.3",
|
|
258
|
-
"@netpeer/swarm": "^0.9.
|
|
258
|
+
"@netpeer/swarm": "^0.9.4",
|
|
259
259
|
"@vandeurenglenn/base58": "^1.1.9",
|
|
260
260
|
"@vandeurenglenn/debug": "^1.4.0",
|
|
261
261
|
"@vandeurenglenn/little-pubsub": "^1.5.2",
|
|
262
|
-
"inquirer": "^13.2.
|
|
262
|
+
"inquirer": "^13.2.5",
|
|
263
263
|
"qr-scanner": "^1.4.2",
|
|
264
264
|
"qrcode": "^1.5.4",
|
|
265
|
-
"tar": "^7.5.
|
|
265
|
+
"tar": "^7.5.9"
|
|
266
266
|
},
|
|
267
267
|
"devDependencies": {
|
|
268
268
|
"@rollup/plugin-commonjs": "^29.0.0",
|
|
@@ -270,7 +270,7 @@
|
|
|
270
270
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
271
271
|
"@rollup/plugin-typescript": "^12.3.0",
|
|
272
272
|
"@rollup/plugin-wasm": "^6.2.2",
|
|
273
|
-
"@types/node": "^25.2.
|
|
273
|
+
"@types/node": "^25.2.3",
|
|
274
274
|
"@types/qrcode": "^1.5.6",
|
|
275
275
|
"rollup": "^4.57.1",
|
|
276
276
|
"rollup-plugin-auto-exports": "^1.1.1"
|
package/src/peernet.ts
CHANGED
|
@@ -442,6 +442,41 @@ export default class Peernet {
|
|
|
442
442
|
}
|
|
443
443
|
}
|
|
444
444
|
|
|
445
|
+
/**
|
|
446
|
+
* Send a request to connected peers and return the first response.
|
|
447
|
+
*
|
|
448
|
+
* @param {String} requestName - name of the registered request handler on remote peers
|
|
449
|
+
* @param {Uint8Array} [requested] - optional data to send with the request
|
|
450
|
+
* @returns {Promise<Uint8Array|undefined>} decoded response data or undefined
|
|
451
|
+
*/
|
|
452
|
+
async request(requestName: string, requested?: Uint8Array) {
|
|
453
|
+
const input: { request: string; requested?: Uint8Array } = { request: requestName }
|
|
454
|
+
if (requested) input.requested = requested
|
|
455
|
+
|
|
456
|
+
const data = await new globalThis.peernet.protos['peernet-request'](input)
|
|
457
|
+
const node = await this.prepareMessage(data)
|
|
458
|
+
|
|
459
|
+
const requests: Promise<any>[] = []
|
|
460
|
+
for (const [peerId, peer] of Object.entries(this.connections)) {
|
|
461
|
+
if (peerId !== this.id && peer.connected) {
|
|
462
|
+
requests.push(peer.request(node.encoded))
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
if (requests.length === 0) return undefined
|
|
467
|
+
|
|
468
|
+
try {
|
|
469
|
+
let result = await Promise.any(requests)
|
|
470
|
+
if (result) result = new Uint8Array(Object.values(result))
|
|
471
|
+
if (!result || result.length === 0) return undefined
|
|
472
|
+
const proto = await protoFor(result)
|
|
473
|
+
return proto.decoded.response
|
|
474
|
+
} catch (error) {
|
|
475
|
+
debug('request failed', error)
|
|
476
|
+
return undefined
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
|
|
445
480
|
/**
|
|
446
481
|
* @private
|
|
447
482
|
*
|