@leofcoin/peernet 1.2.14 → 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-Bl3tF9yA.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-Bl3tF9yA.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
 
@@ -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-oCxYLnpB.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-CXjaAk7-.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
  *
@@ -1,3 +1,3 @@
1
- export { P as default } from './peernet-Bl3tF9yA.js';
1
+ export { P as default } from './peernet-dd6ESbyH.js';
2
2
  import './identity-CqSnKXWH.js';
3
3
  import './value-C3vAp-wb.js';
@@ -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
  *
@@ -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
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leofcoin/peernet",
3
- "version": "1.2.14",
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
  *