@libp2p/mdns 1.0.1 → 1.0.2

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/README.md CHANGED
@@ -14,12 +14,12 @@
14
14
  ## Usage
15
15
 
16
16
  ```JavaScript
17
- const MDNS = require('libp2p-mdns')
17
+ import { MDNS } from '@libp2p/mdns'
18
18
 
19
19
  const mdns = new MDNS(options)
20
20
 
21
21
  mdns.on('peer', (peerData) => {
22
- console.log('Found a peer in the local network', peerData.id.toString(base58btc), peerData.multiaddrs)
22
+ console.log('Found a peer in the local network', peerData.id.toString(), peerData.multiaddrs)
23
23
  })
24
24
 
25
25
  // Broadcast for 20 seconds
@@ -1,17 +1,16 @@
1
1
  import { EventEmitter } from '@libp2p/interfaces';
2
- import type { Multiaddr } from '@multiformats/multiaddr';
3
- import type { PeerId } from '@libp2p/interfaces/peer-id';
4
2
  import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interfaces/peer-discovery';
5
- export declare class GoMulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery {
3
+ import type { Components, Initializable } from '@libp2p/interfaces/components';
4
+ export interface GoMulticastDNSInit {
5
+ queryPeriod?: number;
6
+ queryInterval?: number;
7
+ }
8
+ export declare class GoMulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery, Initializable {
6
9
  private _started;
7
10
  private readonly _responder;
8
11
  private readonly _querier;
9
- constructor(options: {
10
- peerId: PeerId;
11
- multiaddrs: Multiaddr[];
12
- queryPeriod?: number;
13
- queryInterval?: number;
14
- });
12
+ constructor(options?: GoMulticastDNSInit);
13
+ init(components: Components): void;
15
14
  isStarted(): boolean;
16
15
  start(): Promise<void>;
17
16
  stop(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compat/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAG9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAE3F,qBAAa,cAAe,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,aAAa;IAC5F,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAErB,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,SAAS,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE;IAqB/G,SAAS;IAIH,KAAK;IAaL,IAAI;CAYX"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compat/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAG9D,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAE9E,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,cAAe,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,aAAa,EAAE,aAAa;IAC3G,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAErB,OAAO,GAAE,kBAAuB;IAiB7C,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAKnC,SAAS;IAIH,KAAK;IAaL,IAAI;CAYX"}
@@ -3,16 +3,12 @@ import { EventEmitter, CustomEvent } from '@libp2p/interfaces';
3
3
  import { Responder } from './responder.js';
4
4
  import { Querier } from './querier.js';
5
5
  export class GoMulticastDNS extends EventEmitter {
6
- constructor(options) {
6
+ constructor(options = {}) {
7
7
  super();
8
- const { peerId, multiaddrs, queryPeriod, queryInterval } = options;
8
+ const { queryPeriod, queryInterval } = options;
9
9
  this._started = false;
10
- this._responder = new Responder({
11
- peerId,
12
- multiaddrs
13
- });
10
+ this._responder = new Responder();
14
11
  this._querier = new Querier({
15
- peerId,
16
12
  queryInterval,
17
13
  queryPeriod
18
14
  });
@@ -20,6 +16,10 @@ export class GoMulticastDNS extends EventEmitter {
20
16
  this.dispatchEvent(new CustomEvent('peer', { detail: evt.detail }));
21
17
  });
22
18
  }
19
+ init(components) {
20
+ this._responder.init(components);
21
+ this._querier.init(components);
22
+ }
23
23
  isStarted() {
24
24
  return this._started;
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/compat/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAKtC,MAAM,OAAO,cAAe,SAAQ,YAAiC;IAKnE,YAAa,OAAkG;QAC7G,KAAK,EAAE,CAAA;QACP,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,CAAA;QAElE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QAErB,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC;YAC9B,MAAM;YACN,UAAU;SACX,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC;YAC1B,MAAM;YACN,aAAa;YACb,WAAW;SACZ,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACrE,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,OAAM;SACP;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QAEpB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,OAAM;SACP;QAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QAErB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;SACrB,CAAC,CAAA;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/compat/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAStC,MAAM,OAAO,cAAe,SAAQ,YAAiC;IAKnE,YAAa,UAA8B,EAAE;QAC3C,KAAK,EAAE,CAAA;QACP,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,OAAO,CAAA;QAE9C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QAErB,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,EAAE,CAAA;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC;YAC1B,aAAa;YACb,WAAW;SACZ,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7C,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACrE,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAE,UAAsB;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAChC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,OAAM;SACP;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QAEpB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,OAAM;SACP;QAED,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QAErB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;SACrB,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -1,22 +1,22 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from '@libp2p/interfaces';
3
- import type { PeerId } from '@libp2p/interfaces/peer-id';
4
3
  import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interfaces/peer-discovery';
5
4
  import type { ResponsePacket } from 'multicast-dns';
6
5
  import type { RemoteInfo } from 'dgram';
7
- export interface QuerierOptions {
8
- peerId: PeerId;
6
+ import { Components, Initializable } from '@libp2p/interfaces/components';
7
+ export interface QuerierInit {
9
8
  queryInterval?: number;
10
9
  queryPeriod?: number;
11
10
  }
12
11
  export interface Handle {
13
12
  stop: () => Promise<void>;
14
13
  }
15
- export declare class Querier extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery {
16
- private readonly _peerIdStr;
17
- private readonly _options;
14
+ export declare class Querier extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery, Initializable {
15
+ private readonly _init;
18
16
  private _handle?;
19
- constructor(options: QuerierOptions);
17
+ private components;
18
+ constructor(init?: QuerierInit);
19
+ init(components: Components): void;
20
20
  isStarted(): boolean;
21
21
  start(): void;
22
22
  _onResponse(event: ResponsePacket, info: RemoteInfo): void;
@@ -1 +1 @@
1
- {"version":3,"file":"querier.d.ts","sourceRoot":"","sources":["../../../src/compat/querier.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAKxD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAIvC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAED,qBAAa,OAAQ,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,aAAa;IACrF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEX,OAAO,EAAE,cAAc;IAyBpC,SAAS;IAIT,KAAK;IAgCL,WAAW,CAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU;IAoE9C,IAAI;CAKX"}
1
+ {"version":3,"file":"querier.d.ts","sourceRoot":"","sources":["../../../src/compat/querier.ts"],"names":[],"mappings":";AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAI9D,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC3F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAKzE,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AAED,qBAAa,OAAQ,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,aAAa,EAAE,aAAa;IACpG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,OAAO,CAAC,CAAQ;IACxB,OAAO,CAAC,UAAU,CAA+B;gBAEpC,IAAI,GAAE,WAAgB;IAkBnC,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAInC,SAAS;IAIT,KAAK;IAgCL,WAAW,CAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU;IAuB9C,IAAI;CAKX"}
@@ -1,21 +1,16 @@
1
- import { EventEmitter } from '@libp2p/interfaces';
1
+ import { CustomEvent, EventEmitter } from '@libp2p/interfaces';
2
2
  import MDNS from 'multicast-dns';
3
- import { Multiaddr } from '@multiformats/multiaddr';
4
3
  import { logger } from '@libp2p/logger';
5
4
  import { SERVICE_TAG_LOCAL, MULTICAST_IP, MULTICAST_PORT } from './constants.js';
6
- import { base58btc } from 'multiformats/bases/base58';
7
- import { peerIdFromString } from '@libp2p/peer-id';
5
+ import { Components } from '@libp2p/interfaces/components';
6
+ import { findPeerDataInAnswers } from './utils.js';
8
7
  const log = logger('libp2p:mdns:compat:querier');
9
8
  export class Querier extends EventEmitter {
10
- constructor(options) {
9
+ constructor(init = {}) {
11
10
  super();
12
- const { peerId, queryInterval, queryPeriod } = options;
13
- if (peerId == null) {
14
- throw new Error('missing peerId parameter');
15
- }
16
- this._peerIdStr = peerId.toString(base58btc);
17
- this._options = {
18
- peerId,
11
+ this.components = new Components();
12
+ const { queryInterval, queryPeriod } = init;
13
+ this._init = {
19
14
  // Re-query in leu of network change detection (every 60s by default)
20
15
  queryInterval: queryInterval ?? 60000,
21
16
  // Time for which the MDNS server will stay alive waiting for responses
@@ -24,6 +19,9 @@ export class Querier extends EventEmitter {
24
19
  };
25
20
  this._onResponse = this._onResponse.bind(this);
26
21
  }
22
+ init(components) {
23
+ this.components = components;
24
+ }
27
25
  isStarted() {
28
26
  return Boolean(this._handle);
29
27
  }
@@ -51,67 +49,25 @@ export class Querier extends EventEmitter {
51
49
  }
52
50
  };
53
51
  }, {
54
- period: this._options.queryPeriod,
55
- interval: this._options.queryInterval
52
+ period: this._init.queryPeriod,
53
+ interval: this._init.queryInterval
56
54
  });
57
55
  }
58
56
  _onResponse(event, info) {
57
+ log.trace('received mDNS query response');
59
58
  const answers = event.answers ?? [];
60
- const ptrRecord = answers.find(a => a.type === 'PTR' && a.name === SERVICE_TAG_LOCAL);
61
- // Only deal with responses for our service tag
62
- if (ptrRecord == null)
59
+ const peerData = findPeerDataInAnswers(answers, this.components.getPeerId());
60
+ if (peerData == null) {
61
+ log('could not read peer data from query response');
63
62
  return;
64
- log('got response', event, info);
65
- const txtRecord = answers.find(a => a.type === 'TXT');
66
- if (txtRecord == null || txtRecord.type !== 'TXT') {
67
- return log('missing TXT record in response');
68
- }
69
- let peerIdStr;
70
- try {
71
- peerIdStr = txtRecord.data[0].toString();
72
- }
73
- catch (err) {
74
- return log('failed to extract peer ID from TXT record data', txtRecord, err);
75
- }
76
- if (this._peerIdStr === peerIdStr) {
77
- return log('ignoring reply to myself');
78
- }
79
- let peerId;
80
- try {
81
- peerId = peerIdFromString(peerIdStr);
82
63
  }
83
- catch (err) {
84
- return log('failed to create peer ID from TXT record data', peerIdStr, err);
85
- }
86
- const srvRecord = answers.find(a => a.type === 'SRV');
87
- if (srvRecord == null || srvRecord.type !== 'SRV') {
88
- return log('missing SRV record in response');
64
+ if (peerData.multiaddrs.length === 0) {
65
+ log('could not parse multiaddrs from mDNS response');
66
+ return;
89
67
  }
90
- log('peer found', peerIdStr);
91
- const { port } = srvRecord.data ?? {};
92
- const protos = { A: 'ip4', AAAA: 'ip6' };
93
- const multiaddrs = answers
94
- .filter(a => ['A', 'AAAA'].includes(a.type))
95
- .reduce((addrs, a) => {
96
- if (a.type !== 'A' && a.type !== 'AAAA') {
97
- return addrs;
98
- }
99
- const maStr = `/${protos[a.type]}/${a.data}/tcp/${port}`;
100
- try {
101
- addrs.push(new Multiaddr(maStr));
102
- log(maStr);
103
- }
104
- catch (err) {
105
- log(`failed to create multiaddr from ${a.type} record data`, maStr, port, err);
106
- }
107
- return addrs;
108
- }, []);
68
+ log('discovered peer in mDNS qeury response %p', peerData.id);
109
69
  this.dispatchEvent(new CustomEvent('peer', {
110
- detail: {
111
- id: peerId,
112
- multiaddrs,
113
- protcols: []
114
- }
70
+ detail: peerData
115
71
  }));
116
72
  }
117
73
  async stop() {
@@ -1 +1 @@
1
- {"version":3,"file":"querier.js","sourceRoot":"","sources":["../../../src/compat/querier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"querier.js","sourceRoot":"","sources":["../../../src/compat/querier.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,12 @@
1
1
  /// <reference types="node" />
2
2
  import { QueryPacket } from 'multicast-dns';
3
- import type { PeerId } from '@libp2p/interfaces/peer-id';
4
- import type { Multiaddr } from '@multiformats/multiaddr';
5
3
  import type { RemoteInfo } from 'dgram';
6
- export interface ResponderOptions {
7
- peerId: PeerId;
8
- multiaddrs: Multiaddr[];
9
- }
10
- export declare class Responder {
11
- private readonly _peerIdStr;
12
- private readonly _multiaddrs;
4
+ import { Components, Initializable } from '@libp2p/interfaces/components';
5
+ export declare class Responder implements Initializable {
6
+ private components;
13
7
  private _mdns?;
14
- constructor(options: ResponderOptions);
8
+ constructor();
9
+ init(components: Components): void;
15
10
  start(): void;
16
11
  _onQuery(event: QueryPacket, info: RemoteInfo): void;
17
12
  stop(): Promise<void> | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"responder.d.ts","sourceRoot":"","sources":["../../../src/compat/responder.ts"],"names":[],"mappings":";AACA,OAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,yBAAyB,CAAA;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAKvC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,SAAS,EAAE,CAAA;CACxB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,KAAK,CAAC,CAAmB;gBAEpB,OAAO,EAAE,gBAAgB;IAYtC,KAAK;IAKL,QAAQ,CAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU;IAyE9C,IAAI;CAYL"}
1
+ {"version":3,"file":"responder.d.ts","sourceRoot":"","sources":["../../../src/compat/responder.ts"],"names":[],"mappings":";AACA,OAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAIzE,qBAAa,SAAU,YAAW,aAAa;IAC7C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,KAAK,CAAC,CAAmB;;IAMjC,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAInC,KAAK;IAKL,QAAQ,CAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU;IA8E9C,IAAI;CAYL"}
@@ -2,24 +2,24 @@ import OS from 'os';
2
2
  import MDNS from 'multicast-dns';
3
3
  import { logger } from '@libp2p/logger';
4
4
  import { SERVICE_TAG_LOCAL } from './constants.js';
5
- import { base58btc } from 'multiformats/bases/base58';
5
+ import { protocols } from '@multiformats/multiaddr';
6
+ import { Components } from '@libp2p/interfaces/components';
6
7
  const log = logger('libp2p:mdns:compat:responder');
7
8
  export class Responder {
8
- constructor(options) {
9
- const { peerId, multiaddrs } = options;
10
- if (peerId == null) {
11
- throw new Error('missing peerId parameter');
12
- }
13
- this._peerIdStr = peerId.toString(base58btc);
14
- this._multiaddrs = multiaddrs;
9
+ constructor() {
10
+ this.components = new Components();
15
11
  this._onQuery = this._onQuery.bind(this);
16
12
  }
13
+ init(components) {
14
+ this.components = components;
15
+ }
17
16
  start() {
18
17
  this._mdns = MDNS();
19
18
  this._mdns.on('query', this._onQuery);
20
19
  }
21
20
  _onQuery(event, info) {
22
- const addresses = this._multiaddrs.reduce((acc, addr) => {
21
+ const addresses = this.components.getAddressManager().getAddresses().reduce((acc, addr) => {
22
+ addr = addr.decapsulateCode(protocols('p2p').code);
23
23
  if (addr.isThinWaistAddress()) {
24
24
  acc.push(addr.toOptions());
25
25
  }
@@ -27,15 +27,16 @@ export class Responder {
27
27
  }, []);
28
28
  // Only announce TCP for now
29
29
  if (addresses.length === 0) {
30
+ log('no tcp addresses configured so cannot respond to mDNS query');
30
31
  return;
31
32
  }
32
33
  const questions = event.questions ?? [];
33
34
  // Only respond to queries for our service tag
34
35
  if (!questions.some(q => q.name === SERVICE_TAG_LOCAL))
35
36
  return;
36
- log('got query', event, info);
37
+ log.trace('got query', event, info);
37
38
  const answers = [];
38
- const peerServiceTagLocal = `${this._peerIdStr}.${SERVICE_TAG_LOCAL}`;
39
+ const peerServiceTagLocal = `${this.components.getPeerId().toString()}.${SERVICE_TAG_LOCAL}`;
39
40
  answers.push({
40
41
  name: SERVICE_TAG_LOCAL,
41
42
  type: 'PTR',
@@ -43,40 +44,40 @@ export class Responder {
43
44
  ttl: 120,
44
45
  data: peerServiceTagLocal
45
46
  });
46
- // Only announce TCP multiaddrs for now
47
- const port = addresses[0].port;
48
- answers.push({
49
- name: peerServiceTagLocal,
50
- type: 'SRV',
51
- class: 'IN',
52
- ttl: 120,
53
- data: {
54
- priority: 10,
55
- weight: 1,
56
- port,
57
- target: OS.hostname()
58
- }
59
- });
60
47
  answers.push({
61
48
  name: peerServiceTagLocal,
62
49
  type: 'TXT',
63
50
  class: 'IN',
64
51
  ttl: 120,
65
- data: [Buffer.from(this._peerIdStr)]
52
+ data: [Buffer.from(this.components.getPeerId().toString())]
66
53
  });
67
- addresses.forEach((ma) => {
68
- if ([4, 6].includes(ma.family)) {
69
- answers.push({
70
- name: OS.hostname(),
71
- type: ma.family === 4 ? 'A' : 'AAAA',
72
- class: 'IN',
73
- ttl: 120,
74
- data: ma.host
75
- });
54
+ addresses.forEach(ma => {
55
+ if (![4, 6].includes(ma.family)) {
56
+ return;
76
57
  }
58
+ answers.push({
59
+ name: peerServiceTagLocal,
60
+ type: 'SRV',
61
+ class: 'IN',
62
+ ttl: 120,
63
+ data: {
64
+ priority: 10,
65
+ weight: 1,
66
+ port: ma.port,
67
+ target: OS.hostname()
68
+ }
69
+ });
70
+ answers.push({
71
+ name: OS.hostname(),
72
+ type: ma.family === 4 ? 'A' : 'AAAA',
73
+ class: 'IN',
74
+ ttl: 120,
75
+ data: ma.host
76
+ });
77
77
  });
78
78
  if (this._mdns != null) {
79
- log('responding to query', answers);
79
+ log.trace('responding to query');
80
+ log.trace('query answers', answers);
80
81
  this._mdns.respond(answers, info);
81
82
  }
82
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"responder.js","sourceRoot":"","sources":["../../../src/compat/responder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAqB,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAIrD,MAAM,GAAG,GAAG,MAAM,CAAC,8BAA8B,CAAC,CAAA;AAOlD,MAAM,OAAO,SAAS;IAKpB,YAAa,OAAyB;QACpC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;QAEtC,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;SAC5C;QAED,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC5C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAA;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,CAAA;QACnB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IACvC,CAAC;IAED,QAAQ,CAAE,KAAkB,EAAE,IAAgB;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACzE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;gBAC7B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;aAC3B;YACD,OAAO,GAAG,CAAA;QACZ,CAAC,EAAE,EAAE,CAAC,CAAA;QAEN,4BAA4B;QAC5B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,OAAM;SACP;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,CAAA;QAEvC,8CAA8C;QAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC;YAAE,OAAM;QAE9D,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAE7B,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,MAAM,mBAAmB,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,iBAAiB,EAAE,CAAA;QAErE,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,mBAAmB;SAC1B,CAAC,CAAA;QAEF,uCAAuC;QACvC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAE9B,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,GAAG;YACR,IAAI,EAAE;gBACJ,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,CAAC;gBACT,IAAI;gBACJ,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE;aACtB;SACF,CAAC,CAAA;QAEF,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACrC,CAAC,CAAA;QAEF,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACvB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;gBAC9B,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE;oBACnB,IAAI,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;oBACpC,KAAK,EAAE,IAAI;oBACX,GAAG,EAAE,GAAG;oBACR,IAAI,EAAE,EAAE,CAAC,IAAI;iBACd,CAAC,CAAA;aACH;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,GAAG,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAA;YACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;SAClC;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;YACjD,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;gBACjC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;oBACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;iBAC5B;qBAAM;oBACL,OAAO,EAAE,CAAA;iBACV;YACH,CAAC,CAAC,CAAA;SACH;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"responder.js","sourceRoot":"","sources":["../../../src/compat/responder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { PeerData } from '@libp2p/interfaces/peer-data';
2
+ import type { PeerId } from '@libp2p/interfaces/peer-id';
3
+ import type { Answer } from 'dns-packet';
4
+ export declare function findPeerDataInAnswers(answers: Answer[], ourPeerId: PeerId): PeerData | undefined;
5
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/compat/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAIxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAKxC,wBAAgB,qBAAqB,CAAE,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAsEjG"}
@@ -0,0 +1,70 @@
1
+ import { logger } from '@libp2p/logger';
2
+ import { peerIdFromString } from '@libp2p/peer-id';
3
+ import { Multiaddr } from '@multiformats/multiaddr';
4
+ import { SERVICE_TAG_LOCAL } from './constants.js';
5
+ const log = logger('libp2p:mdns:compat:utils');
6
+ export function findPeerDataInAnswers(answers, ourPeerId) {
7
+ const ptrRecord = answers.find(a => a.type === 'PTR' && a.name === SERVICE_TAG_LOCAL);
8
+ // Only deal with responses for our service tag
9
+ if (ptrRecord == null) {
10
+ return;
11
+ }
12
+ log.trace('got response', SERVICE_TAG_LOCAL);
13
+ const txtRecord = answers.find(a => a.type === 'TXT');
14
+ if (txtRecord == null || txtRecord.type !== 'TXT') {
15
+ log('missing TXT record in response');
16
+ return;
17
+ }
18
+ let peerIdStr;
19
+ try {
20
+ peerIdStr = txtRecord.data[0].toString();
21
+ }
22
+ catch (err) {
23
+ log('failed to extract peer ID from TXT record data', txtRecord, err);
24
+ return;
25
+ }
26
+ let peerId;
27
+ try {
28
+ peerId = peerIdFromString(peerIdStr);
29
+ }
30
+ catch (err) {
31
+ log('failed to create peer ID from TXT record data', peerIdStr, err);
32
+ return;
33
+ }
34
+ if (ourPeerId.equals(peerId)) {
35
+ log('ignoring reply to myself');
36
+ return;
37
+ }
38
+ const multiaddrs = [];
39
+ const hosts = {
40
+ A: {},
41
+ AAAA: {}
42
+ };
43
+ answers.forEach(answer => {
44
+ if (answer.type === 'A') {
45
+ hosts.A[answer.name] = answer.data;
46
+ }
47
+ if (answer.type === 'AAAA') {
48
+ hosts.AAAA[answer.name] = answer.data;
49
+ }
50
+ });
51
+ answers.forEach(answer => {
52
+ if (answer.type === 'SRV') {
53
+ if (hosts.A[answer.data.target] != null) {
54
+ multiaddrs.push(new Multiaddr(`/ip4/${hosts.A[answer.data.target]}/tcp/${answer.data.port}/p2p/${peerId.toString()}`));
55
+ }
56
+ else if (hosts.AAAA[answer.data.target] != null) {
57
+ multiaddrs.push(new Multiaddr(`/ip6/${hosts.AAAA[answer.data.target]}/tcp/${answer.data.port}/p2p/${peerId.toString()}`));
58
+ }
59
+ else {
60
+ multiaddrs.push(new Multiaddr(`/dnsaddr/${answer.data.target}/tcp/${answer.data.port}/p2p/${peerId.toString()}`));
61
+ }
62
+ }
63
+ });
64
+ return {
65
+ id: peerId,
66
+ multiaddrs,
67
+ protocols: []
68
+ };
69
+ }
70
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/compat/utils.ts"],"names":[],"mappings":"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"}
@@ -1,32 +1,29 @@
1
1
  import multicastDNS from 'multicast-dns';
2
2
  import { EventEmitter } from '@libp2p/interfaces';
3
- import type { PeerId } from '@libp2p/interfaces/peer-id';
4
3
  import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interfaces/peer-discovery';
5
- import type { Multiaddr } from '@multiformats/multiaddr';
6
4
  import type { PeerData } from '@libp2p/interfaces/peer-data';
5
+ import { Components, Initializable } from '@libp2p/interfaces/components';
7
6
  export interface MulticastDNSOptions {
8
- peerId: PeerId;
9
7
  broadcast?: boolean;
10
8
  interval?: number;
11
9
  serviceTag?: string;
12
10
  port?: number;
13
- multiaddrs?: Multiaddr[];
14
11
  compat?: boolean;
15
12
  compatQueryPeriod?: number;
16
13
  compatQueryInterval?: number;
17
14
  }
18
- export declare class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery {
15
+ export declare class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery, Initializable {
19
16
  static tag: string;
20
17
  mdns?: multicastDNS.MulticastDNS;
21
18
  private readonly broadcast;
22
19
  private readonly interval;
23
20
  private readonly serviceTag;
24
21
  private readonly port;
25
- private readonly peerId;
26
- private readonly peerMultiaddrs;
27
22
  private _queryInterval;
28
23
  private readonly _goMdns?;
29
- constructor(options: MulticastDNSOptions);
24
+ private components;
25
+ constructor(options?: MulticastDNSOptions);
26
+ init(components: Components): void;
30
27
  isStarted(): boolean;
31
28
  /**
32
29
  * Start sending queries to the LAN.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAe,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAI9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC3F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAI5D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,qBAAa,YAAa,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,aAAa;IAC1F,MAAM,CAAC,GAAG,SAAS;IAEZ,IAAI,CAAC,EAAE,YAAY,CAAC,YAAY,CAAA;IAEvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAC5C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAgB;gBAE5B,OAAO,EAAE,mBAAmB;IA6BzC,SAAS;IAIT;;;;OAIG;IACG,KAAK;IAgBX,YAAY,CAAE,KAAK,EAAE,YAAY,CAAC,WAAW;IAQ7C,eAAe,CAAE,KAAK,EAAE,YAAY,CAAC,cAAc;IAcnD,OAAO,CAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC;IAUnC;;;;OAIG;IACG,IAAI;CA2BX"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAe,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAI9D,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC3F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAIzE,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,qBAAa,YAAa,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,aAAa,EAAE,aAAa;IACzG,MAAM,CAAC,GAAG,SAAS;IAEZ,IAAI,CAAC,EAAE,YAAY,CAAC,YAAY,CAAA;IAEvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAgB;IACzC,OAAO,CAAC,UAAU,CAA+B;gBAEpC,OAAO,GAAE,mBAAwB;IAqB9C,IAAI,CAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAMnC,SAAS;IAIT;;;;OAIG;IACG,KAAK;IAgBX,YAAY,CAAE,KAAK,EAAE,YAAY,CAAC,WAAW;IAS7C,eAAe,CAAE,KAAK,EAAE,YAAY,CAAC,cAAc;IAkBnD,OAAO,CAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC;IAUnC;;;;OAIG;IACG,IAAI;CA2BX"}