@libp2p/daemon-server 0.0.1 → 1.0.1

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/dist/src/index.js CHANGED
@@ -1,20 +1,19 @@
1
1
  /* eslint max-depth: ["error", 6] */
2
2
  import { TCP } from '@libp2p/tcp';
3
- import { Multiaddr } from '@multiformats/multiaddr';
3
+ import { Multiaddr, protocols } from '@multiformats/multiaddr';
4
4
  import { CID } from 'multiformats/cid';
5
5
  import * as lp from 'it-length-prefixed';
6
6
  import { pipe } from 'it-pipe';
7
- import { StreamHandler } from './stream-handler.js';
8
- import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
9
- import { passThroughUpgrader } from './util/index.js';
7
+ import { StreamHandler } from '@libp2p/daemon-protocol/stream-handler';
8
+ import { passThroughUpgrader } from '@libp2p/daemon-protocol/upgrader';
10
9
  import { Request, DHTRequest, PeerstoreRequest, PSRequest, StreamInfo } from '@libp2p/daemon-protocol';
11
10
  import { ErrorResponse, OkResponse } from './responses.js';
12
11
  import { DHTOperations } from './dht.js';
13
- import { peerIdFromBytes, peerIdFromString } from '@libp2p/peer-id';
12
+ import { peerIdFromBytes } from '@libp2p/peer-id';
14
13
  import { PubSubOperations } from './pubsub.js';
15
14
  import { logger } from '@libp2p/logger';
16
15
  const LIMIT = 1 << 22; // 4MB
17
- const log = logger('libp2p:daemon');
16
+ const log = logger('libp2p:daemon-server');
18
17
  export class Server {
19
18
  constructor(init) {
20
19
  const { multiaddr, libp2pNode } = init;
@@ -45,7 +44,7 @@ export class Server {
45
44
  const addrs = request.connect.addrs.map((a) => new Multiaddr(a));
46
45
  const peerId = peerIdFromBytes(peer);
47
46
  await this.libp2p.peerStore.addressBook.set(peerId, addrs);
48
- return this.libp2p.dial(peerId);
47
+ return await this.libp2p.dial(peerId);
49
48
  }
50
49
  /**
51
50
  * Opens a stream on one of the given protocols to the given peer
@@ -55,7 +54,7 @@ export class Server {
55
54
  throw new Error('Invalid request');
56
55
  }
57
56
  const { peer, proto } = request.streamOpen;
58
- const peerId = peerIdFromString(uint8ArrayToString(peer, 'base58btc'));
57
+ const peerId = peerIdFromBytes(peer);
59
58
  const connection = await this.libp2p.dial(peerId);
60
59
  const { stream, protocol } = await connection.newStream(proto);
61
60
  return {
@@ -71,9 +70,6 @@ export class Server {
71
70
  * Sends inbound requests for the given protocol
72
71
  * to the unix socket path provided. If an existing handler
73
72
  * is registered at the path, it will be overridden.
74
- *
75
- * @param {StreamHandlerRequest} request
76
- * @returns {Promise<void>}
77
73
  */
78
74
  async registerStreamHandler(request) {
79
75
  if (request.streamHandler == null || request.streamHandler.proto == null) {
@@ -83,33 +79,32 @@ export class Server {
83
79
  const addr = new Multiaddr(request.streamHandler.addr);
84
80
  const addrString = addr.toString();
85
81
  // If we have a handler, end it
86
- if (this.streamHandlers[addrString]) {
87
- this.streamHandlers[addrString].close();
88
- delete this.streamHandlers[addrString];
82
+ if (this.streamHandlers[addrString] != null) {
83
+ await this.streamHandlers[addrString].close();
84
+ delete this.streamHandlers[addrString]; // eslint-disable-line @typescript-eslint/no-dynamic-delete
89
85
  }
90
- protocols.forEach((proto) => {
86
+ await Promise.all(protocols.map(async (proto) => {
91
87
  // Connect the client socket with the libp2p connection
92
- this.libp2p.handle(proto, ({ connection, stream, protocol }) => {
88
+ await this.libp2p.handle(proto, ({ connection, stream, protocol }) => {
93
89
  const message = StreamInfo.encode({
94
90
  peer: connection.remotePeer.toBytes(),
95
91
  addr: connection.remoteAddr.bytes,
96
92
  proto: protocol
97
- }).finish();
93
+ });
98
94
  const encodedMessage = lp.encode.single(message);
99
95
  // Tell the client about the new connection
100
96
  // And then begin piping the client and peer connection
101
- pipe([encodedMessage, stream.source], clientConnection, stream.sink);
97
+ void pipe([encodedMessage, stream.source], clientConnection, stream.sink).catch(err => {
98
+ log.error(err);
99
+ });
102
100
  });
103
- });
101
+ }));
104
102
  const clientConnection = await this.tcp.dial(addr, {
105
103
  upgrader: passThroughUpgrader
106
104
  });
107
105
  }
108
106
  /**
109
107
  * Listens for process exit to handle cleanup
110
- *
111
- * @private
112
- * @returns {void}
113
108
  */
114
109
  _listen() {
115
110
  // listen for graceful termination
@@ -118,7 +113,9 @@ export class Server {
118
113
  process.on('SIGHUP', this._onExit);
119
114
  }
120
115
  _onExit() {
121
- this.stop({ exit: true });
116
+ void this.stop({ exit: true }).catch(err => {
117
+ log.error(err);
118
+ });
122
119
  }
123
120
  /**
124
121
  * Starts the daemon
@@ -128,15 +125,15 @@ export class Server {
128
125
  await this.libp2p.start();
129
126
  await this.listener.listen(this.multiaddr);
130
127
  }
131
- getMultiaddrs() {
132
- return this.listener.getAddrs();
128
+ getMultiaddr() {
129
+ const addrs = this.listener.getAddrs();
130
+ if (addrs.length > 0) {
131
+ return addrs[0];
132
+ }
133
+ throw new Error('Not started');
133
134
  }
134
135
  /**
135
136
  * Stops the daemon
136
- *
137
- * @param {object} options
138
- * @param {boolean} options.exit - If the daemon process should exit
139
- * @returns {Promise<void>}
140
137
  */
141
138
  async stop(options = { exit: false }) {
142
139
  await this.libp2p.stop();
@@ -155,9 +152,9 @@ export class Server {
155
152
  if (request.id == null) {
156
153
  throw new Error('Invalid request');
157
154
  }
158
- const peerId = peerIdFromBytes(request.id);
159
- const peer = await this.libp2p.peerStore.get(peerId);
160
- const protos = peer.protocols;
155
+ const peerId = peerIdFromBytes(request.id); // eslint-disable-line no-case-declarations
156
+ const peer = await this.libp2p.peerStore.get(peerId); // eslint-disable-line no-case-declarations
157
+ const protos = peer.protocols; // eslint-disable-line no-case-declarations
161
158
  yield OkResponse({ peerStore: { protos } });
162
159
  return;
163
160
  case PeerstoreRequest.Type.GET_PEER_INFO:
@@ -167,6 +164,7 @@ export class Server {
167
164
  }
168
165
  }
169
166
  catch (err) {
167
+ log.error(err);
170
168
  yield ErrorResponse(err);
171
169
  }
172
170
  }
@@ -175,7 +173,7 @@ export class Server {
175
173
  */
176
174
  async *handlePubsubRequest(request) {
177
175
  try {
178
- if (this.libp2p.pubsub == null || !this.pubsubOperations) {
176
+ if (this.libp2p.pubsub == null || (this.pubsubOperations == null)) {
179
177
  throw new Error('PubSub not configured');
180
178
  }
181
179
  switch (request.type) {
@@ -199,6 +197,7 @@ export class Server {
199
197
  }
200
198
  }
201
199
  catch (err) {
200
+ log.error(err);
202
201
  yield ErrorResponse(err);
203
202
  }
204
203
  }
@@ -207,7 +206,7 @@ export class Server {
207
206
  */
208
207
  async *handleDHTRequest(request) {
209
208
  try {
210
- if (this.libp2p.dht == null || !this.dhtOperations) {
209
+ if (this.libp2p.dht == null || (this.dhtOperations == null)) {
211
210
  throw new Error('DHT not configured');
212
211
  }
213
212
  switch (request.type) {
@@ -258,134 +257,143 @@ export class Server {
258
257
  }
259
258
  }
260
259
  catch (err) {
260
+ log.error(err);
261
261
  yield ErrorResponse(err);
262
262
  }
263
263
  }
264
264
  /**
265
265
  * Handles requests for the given connection
266
266
  */
267
- async handleConnection(connection) {
268
- const daemon = this;
267
+ handleConnection(connection) {
268
+ const daemon = this; // eslint-disable-line @typescript-eslint/no-this-alias
269
269
  // @ts-expect-error connection may actually be a maconn?
270
270
  const streamHandler = new StreamHandler({ stream: connection, maxLength: LIMIT });
271
- await pipe(streamHandler.decoder, source => (async function* () {
271
+ void pipe(streamHandler.decoder, source => (async function* () {
272
272
  let request;
273
- for await (let buf of source) {
273
+ for await (const buf of source) {
274
274
  try {
275
275
  request = Request.decode(buf);
276
- }
277
- catch (err) {
278
- yield ErrorResponse(new Error('ERR_INVALID_MESSAGE'));
279
- continue;
280
- }
281
- switch (request.type) {
282
- // Connect to another peer
283
- case Request.Type.CONNECT: {
284
- try {
285
- await daemon.connect(request);
286
- }
287
- catch (err) {
288
- yield ErrorResponse(err);
276
+ switch (request.type) {
277
+ // Connect to another peer
278
+ case Request.Type.CONNECT: {
279
+ try {
280
+ await daemon.connect(request);
281
+ }
282
+ catch (err) {
283
+ yield ErrorResponse(err);
284
+ break;
285
+ }
286
+ yield OkResponse();
289
287
  break;
290
288
  }
291
- yield OkResponse();
292
- break;
293
- }
294
- // Get the daemon peer id and addresses
295
- case Request.Type.IDENTIFY: {
296
- yield OkResponse({
297
- identify: {
298
- id: daemon.libp2p.peerId.toBytes(),
299
- addrs: daemon.libp2p.getMultiaddrs().map(m => m.bytes)
300
- }
301
- });
302
- break;
303
- }
304
- // Get a list of our current peers
305
- case Request.Type.LIST_PEERS: {
306
- const peers = [];
307
- for (const peerId of daemon.libp2p.getPeers()) {
308
- const conn = daemon.libp2p.getConnections(peerId)[0];
309
- peers.push({
310
- id: peerId.toBytes(),
311
- addrs: [conn.remoteAddr.bytes]
289
+ // Get the daemon peer id and addresses
290
+ case Request.Type.IDENTIFY: {
291
+ yield OkResponse({
292
+ identify: {
293
+ id: daemon.libp2p.peerId.toBytes(),
294
+ addrs: daemon.libp2p.getMultiaddrs().map(ma => ma.decapsulateCode(protocols('p2p').code)).map(m => m.bytes)
295
+ }
312
296
  });
297
+ break;
313
298
  }
314
- yield OkResponse({ peers });
315
- break;
316
- }
317
- case Request.Type.STREAM_OPEN: {
318
- let response;
319
- try {
320
- response = await daemon.openStream(request);
321
- }
322
- catch (err) {
323
- yield ErrorResponse(err.message);
299
+ // Get a list of our current peers
300
+ case Request.Type.LIST_PEERS: {
301
+ const peers = [];
302
+ const seen = new Set();
303
+ for (const connection of daemon.libp2p.getConnections()) {
304
+ const peerId = connection.remotePeer.toString();
305
+ if (seen.has(peerId)) {
306
+ continue;
307
+ }
308
+ seen.add(peerId);
309
+ peers.push({
310
+ id: connection.remotePeer.toBytes(),
311
+ addrs: [connection.remoteAddr.bytes]
312
+ });
313
+ }
314
+ yield OkResponse({ peers });
324
315
  break;
325
316
  }
326
- // write the response
327
- yield OkResponse({
328
- streamInfo: response.streamInfo
329
- });
330
- const stream = streamHandler.rest();
331
- // then pipe the connection to the client
332
- await pipe(stream, response.connection, stream);
333
- // Exit the iterator, no more requests can come through
334
- return;
335
- }
336
- case Request.Type.STREAM_HANDLER: {
337
- try {
338
- await daemon.registerStreamHandler(request);
317
+ case Request.Type.STREAM_OPEN: {
318
+ let response;
319
+ try {
320
+ response = await daemon.openStream(request);
321
+ }
322
+ catch (err) {
323
+ yield ErrorResponse(err);
324
+ break;
325
+ }
326
+ // write the response
327
+ yield OkResponse({
328
+ streamInfo: response.streamInfo
329
+ });
330
+ const stream = streamHandler.rest();
331
+ // then pipe the connection to the client
332
+ await pipe(stream, response.connection, stream);
333
+ // Exit the iterator, no more requests can come through
334
+ return;
339
335
  }
340
- catch (err) {
341
- yield ErrorResponse(err);
336
+ case Request.Type.STREAM_HANDLER: {
337
+ try {
338
+ await daemon.registerStreamHandler(request);
339
+ }
340
+ catch (err) {
341
+ yield ErrorResponse(err);
342
+ break;
343
+ }
344
+ // write the response
345
+ yield OkResponse();
342
346
  break;
343
347
  }
344
- // write the response
345
- yield OkResponse();
346
- break;
347
- }
348
- case Request.Type.PEERSTORE: {
349
- if (request.peerStore == null) {
350
- yield ErrorResponse(new Error('ERR_INVALID_REQUEST'));
348
+ case Request.Type.PEERSTORE: {
349
+ if (request.peerStore == null) {
350
+ yield ErrorResponse(new Error('ERR_INVALID_REQUEST'));
351
+ break;
352
+ }
353
+ yield* daemon.handlePeerStoreRequest(request.peerStore);
351
354
  break;
352
355
  }
353
- yield* daemon.handlePeerStoreRequest(request.peerStore);
354
- break;
355
- }
356
- case Request.Type.PUBSUB: {
357
- if (request.pubsub == null) {
358
- yield ErrorResponse(new Error('ERR_INVALID_REQUEST'));
356
+ case Request.Type.PUBSUB: {
357
+ if (request.pubsub == null) {
358
+ yield ErrorResponse(new Error('ERR_INVALID_REQUEST'));
359
+ break;
360
+ }
361
+ yield* daemon.handlePubsubRequest(request.pubsub);
359
362
  break;
360
363
  }
361
- yield* daemon.handlePubsubRequest(request.pubsub);
362
- break;
363
- }
364
- case Request.Type.DHT: {
365
- if (request.dht == null) {
366
- yield ErrorResponse(new Error('ERR_INVALID_REQUEST'));
364
+ case Request.Type.DHT: {
365
+ if (request.dht == null) {
366
+ yield ErrorResponse(new Error('ERR_INVALID_REQUEST'));
367
+ break;
368
+ }
369
+ yield* daemon.handleDHTRequest(request.dht);
367
370
  break;
368
371
  }
369
- yield* daemon.handleDHTRequest(request.dht);
370
- break;
372
+ // Not yet supported or doesn't exist
373
+ default:
374
+ yield ErrorResponse(new Error('ERR_INVALID_REQUEST_TYPE'));
375
+ break;
371
376
  }
372
- // Not yet supported or doesn't exist
373
- default:
374
- yield ErrorResponse(new Error('ERR_INVALID_REQUEST_TYPE'));
375
- break;
377
+ }
378
+ catch (err) {
379
+ log.error(err);
380
+ yield ErrorResponse(err);
381
+ continue;
376
382
  }
377
383
  }
378
384
  })(), async function (source) {
379
385
  for await (const result of source) {
380
386
  streamHandler.write(result);
381
387
  }
388
+ }).catch(err => {
389
+ log(err);
382
390
  });
383
391
  }
384
392
  }
385
393
  /**
386
394
  * Creates a daemon from the provided Daemon Options
387
395
  */
388
- export const createServer = async (multiaddr, libp2pNode) => {
396
+ export const createServer = (multiaddr, libp2pNode) => {
389
397
  const daemon = new Server({
390
398
  multiaddr,
391
399
  libp2pNode
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ export interface PubSubOperationsInit {
3
3
  pubsub: PubSub;
4
4
  }
5
5
  export declare class PubSubOperations {
6
- private pubsub;
6
+ private readonly pubsub;
7
7
  constructor(init: PubSubOperationsInit);
8
8
  getTopics(): AsyncGenerator<Uint8Array, void, unknown>;
9
9
  subscribe(topic: string): AsyncGenerator<Uint8Array, void, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../../src/pubsub.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIvD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAQ;gBAET,IAAI,EAAE,oBAAoB;IAM/B,SAAS;IAQT,SAAS,CAAE,KAAK,EAAE,MAAM;IAoBxB,OAAO,CAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;CAKjD"}
1
+ {"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../../src/pubsub.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAQvD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAElB,IAAI,EAAE,oBAAoB;IAM/B,SAAS;IAcT,SAAS,CAAE,KAAK,EAAE,MAAM;IAyBxB,OAAO,CAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;CASjD"}
@@ -1,39 +1,61 @@
1
1
  /* eslint max-depth: ["error", 6] */
2
2
  import { PSMessage } from '@libp2p/daemon-protocol';
3
- import { OkResponse } from './responses.js';
3
+ import { ErrorResponse, OkResponse } from './responses.js';
4
4
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
5
5
  import { pushable } from 'it-pushable';
6
+ import { CustomEvent } from '@libp2p/interfaces';
7
+ import { logger } from '@libp2p/logger';
8
+ const log = logger('libp2p:daemon-server:pubsub');
6
9
  export class PubSubOperations {
7
10
  constructor(init) {
8
11
  const { pubsub } = init;
9
12
  this.pubsub = pubsub;
10
13
  }
11
14
  async *getTopics() {
12
- yield OkResponse({
13
- pubsub: {
14
- topics: this.pubsub.getTopics()
15
- }
16
- });
15
+ try {
16
+ yield OkResponse({
17
+ pubsub: {
18
+ topics: this.pubsub.getTopics(),
19
+ peerIDs: []
20
+ }
21
+ });
22
+ }
23
+ catch (err) {
24
+ log.error(err);
25
+ yield ErrorResponse(err);
26
+ }
17
27
  }
18
28
  async *subscribe(topic) {
19
- const onMessage = pushable();
20
- await this.pubsub.addEventListener(topic, (evt) => {
21
- const msg = evt.detail;
22
- onMessage.push(PSMessage.encode({
23
- from: msg.from.toBytes(),
24
- data: msg.data,
25
- seqno: msg.sequenceNumber == null ? undefined : uint8ArrayFromString(msg.sequenceNumber.toString(16).padStart(16, '0'), 'base16'),
26
- topicIDs: [msg.topic],
27
- signature: msg.signature,
28
- key: msg.key
29
- }).finish());
30
- });
31
- yield OkResponse();
32
- yield* onMessage;
29
+ try {
30
+ const onMessage = pushable();
31
+ await this.pubsub.addEventListener(topic, (evt) => {
32
+ const msg = evt.detail;
33
+ onMessage.push(PSMessage.encode({
34
+ from: msg.from.toBytes(),
35
+ data: msg.data,
36
+ seqno: msg.sequenceNumber == null ? undefined : uint8ArrayFromString(msg.sequenceNumber.toString(16).padStart(16, '0'), 'base16'),
37
+ topicIDs: [msg.topic],
38
+ signature: msg.signature,
39
+ key: msg.key
40
+ }));
41
+ });
42
+ yield OkResponse();
43
+ yield* onMessage;
44
+ }
45
+ catch (err) {
46
+ log.error(err);
47
+ yield ErrorResponse(err);
48
+ }
33
49
  }
34
50
  async *publish(topic, data) {
35
- this.pubsub.dispatchEvent(new CustomEvent(topic, { detail: data }));
36
- yield OkResponse();
51
+ try {
52
+ this.pubsub.dispatchEvent(new CustomEvent(topic, { detail: data }));
53
+ yield OkResponse();
54
+ }
55
+ catch (err) {
56
+ log.error(err);
57
+ yield ErrorResponse(err);
58
+ }
37
59
  }
38
60
  }
39
61
  //# sourceMappingURL=pubsub.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/pubsub.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,EACL,SAAS,EACV,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAMtC,MAAM,OAAO,gBAAgB;IAG3B,YAAa,IAA0B;QACrC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QAEvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,CAAE,SAAS;QACf,MAAM,UAAU,CAAC;YACf,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;aAChC;SACF,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,CAAE,SAAS,CAAE,KAAa;QAC9B,MAAM,SAAS,GAAG,QAAQ,EAAc,CAAA;QAExC,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YAChD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAA;YAEtB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC9B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;gBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,KAAK,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;gBACjI,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;gBACrB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,GAAG,EAAE,GAAG,CAAC,GAAG;aACb,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QACd,CAAC,CAAC,CAAA;QAEF,MAAM,UAAU,EAAE,CAAA;QAClB,KAAM,CAAC,CAAC,SAAS,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,CAAE,OAAO,CAAE,KAAa,EAAE,IAAgB;QAC9C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QACnE,MAAM,UAAU,EAAE,CAAA;IACpB,CAAC;CAEF"}
1
+ {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/pubsub.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,EACL,SAAS,EACV,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE1D,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,MAAM,GAAG,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAA;AAMjD,MAAM,OAAO,gBAAgB;IAG3B,YAAa,IAA0B;QACrC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QAEvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,CAAE,SAAS;QACf,IAAI;YACF,MAAM,UAAU,CAAC;gBACf,MAAM,EAAE;oBACN,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;oBAC/B,OAAO,EAAE,EAAE;iBACZ;aACF,CAAC,CAAA;SACH;QAAC,OAAO,GAAQ,EAAE;YACjB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACd,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;SACzB;IACH,CAAC;IAED,KAAK,CAAC,CAAE,SAAS,CAAE,KAAa;QAC9B,IAAI;YACF,MAAM,SAAS,GAAG,QAAQ,EAAc,CAAA;YAExC,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;gBAChD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAA;gBAEtB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;oBAC9B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;oBACxB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,KAAK,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;oBACjI,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;oBACrB,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,GAAG,EAAE,GAAG,CAAC,GAAG;iBACb,CAAC,CAAC,CAAA;YACL,CAAC,CAAC,CAAA;YAEF,MAAM,UAAU,EAAE,CAAA;YAClB,KAAM,CAAC,CAAC,SAAS,CAAA;SAClB;QAAC,OAAO,GAAQ,EAAE;YACjB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACd,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;SACzB;IACH,CAAC;IAED,KAAK,CAAC,CAAE,OAAO,CAAE,KAAa,EAAE,IAAgB;QAC9C,IAAI;YACF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACnE,MAAM,UAAU,EAAE,CAAA;SACnB;QAAC,OAAO,GAAQ,EAAE;YACjB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACd,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;SACzB;IACH,CAAC;CACF"}
@@ -1,8 +1,8 @@
1
- import { IResponse } from '@libp2p/daemon-protocol';
1
+ import { Response } from '@libp2p/daemon-protocol';
2
2
  /**
3
3
  * Creates and encodes an OK response
4
4
  */
5
- export declare function OkResponse(data?: Partial<IResponse>): Uint8Array;
5
+ export declare function OkResponse(data?: Partial<Response>): Uint8Array;
6
6
  /**
7
7
  * Creates and encodes an ErrorResponse
8
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/responses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,yBAAyB,CAAA;AAE7D;;GAEG;AACF,wBAAgB,UAAU,CAAE,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,UAAU,CAKlE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAE,GAAG,EAAE,KAAK,GAAG,UAAU,CAOrD"}
1
+ {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/responses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAElD;;GAEG;AACH,wBAAgB,UAAU,CAAE,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,UAAU,CAMhE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAE,GAAG,EAAE,KAAK,GAAG,UAAU,CAQrD"}
@@ -5,8 +5,9 @@ import { Response } from '@libp2p/daemon-protocol';
5
5
  export function OkResponse(data) {
6
6
  return Response.encode({
7
7
  type: Response.Type.OK,
8
+ peers: [],
8
9
  ...data
9
- }).finish();
10
+ });
10
11
  }
11
12
  /**
12
13
  * Creates and encodes an ErrorResponse
@@ -16,7 +17,8 @@ export function ErrorResponse(err) {
16
17
  type: Response.Type.ERROR,
17
18
  error: {
18
19
  msg: err.message
19
- }
20
- }).finish();
20
+ },
21
+ peers: []
22
+ });
21
23
  }
22
24
  //# sourceMappingURL=responses.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/responses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAE7D;;GAEG;AACF,MAAM,UAAU,UAAU,CAAE,IAAyB;IACpD,OAAO,QAAQ,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;QACtB,GAAG,IAAI;KACR,CAAC,CAAC,MAAM,EAAE,CAAA;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAE,GAAU;IACvC,OAAO,QAAQ,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;QACzB,KAAK,EAAE;YACL,GAAG,EAAE,GAAG,CAAC,OAAO;SACjB;KACF,CAAC,CAAC,MAAM,EAAE,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/responses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAElD;;GAEG;AACH,MAAM,UAAU,UAAU,CAAE,IAAwB;IAClD,OAAO,QAAQ,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;QACtB,KAAK,EAAE,EAAE;QACT,GAAG,IAAI;KACR,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAE,GAAU;IACvC,OAAO,QAAQ,CAAC,MAAM,CAAC;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;QACzB,KAAK,EAAE;YACL,GAAG,EAAE,GAAG,CAAC,OAAO;SACjB;QACD,KAAK,EAAE,EAAE;KACV,CAAC,CAAA;AACJ,CAAC"}