@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.
@@ -1,4 +1,4 @@
1
- import { L as LittlePubSub, d as deflate_1, i as inflate_1, c as createDebugger } from './peernet-BpKdfmda.js';
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.subscribers['error']) {
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.subscribers[id]) {
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-BpKdfmda.js';
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: String(),
170
- author: String(),
169
+ value: new Uint8Array(),
170
+ author: new Uint8Array(),
171
171
  timestamp: Number(),
172
- files: [String()]
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-C-BwUsHC.js');
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-DN_Y7L6h.js');
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
  }
@@ -1,3 +1,3 @@
1
- export { P as default } from './peernet-BpKdfmda.js';
1
+ export { P as default } from './peernet-dd6ESbyH.js';
2
2
  import './identity-CqSnKXWH.js';
3
3
  import './value-C3vAp-wb.js';
@@ -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: String(),
168
- author: String(),
167
+ value: new Uint8Array(),
168
+ author: new Uint8Array(),
169
169
  timestamp: Number(),
170
- files: [String()]
170
+ files: [new Uint8Array()]
171
171
  };
172
172
 
173
173
  class ChatMessage extends FormatInterface {
@@ -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-C9lYBAhD.js');
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: string;
3
- let author: string;
2
+ let value: Uint8Array<ArrayBuffer>;
3
+ let author: Uint8Array<ArrayBuffer>;
4
4
  let timestamp: number;
5
- let files: string[];
5
+ let files: Uint8Array<ArrayBuffer>[];
6
6
  }
7
7
  export default _default;
@@ -1,4 +1,4 @@
1
1
  declare namespace _default {
2
- let response: {};
2
+ let response: Uint8Array<ArrayBuffer>;
3
3
  }
4
4
  export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leofcoin/peernet",
3
- "version": "1.2.13",
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.3",
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.2",
262
+ "inquirer": "^13.2.5",
263
263
  "qr-scanner": "^1.4.2",
264
264
  "qrcode": "^1.5.4",
265
- "tar": "^7.5.7"
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.1",
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
  *
@@ -1,6 +1,6 @@
1
1
  export default {
2
- value: String(),
3
- author: String(),
2
+ value: new Uint8Array(),
3
+ author: new Uint8Array(),
4
4
  timestamp: Number(),
5
- files: [String()]
5
+ files: [new Uint8Array()]
6
6
  }
@@ -1,3 +1,3 @@
1
1
  export default {
2
- response: {}
2
+ response: new Uint8Array()
3
3
  }