@libp2p/mdns 6.0.0 → 7.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/README.md +18 -11
- package/dist/index.min.js +4 -4
- package/dist/src/index.d.ts +1 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +24 -55
- package/dist/src/index.js.map +1 -1
- package/dist/src/query.d.ts +4 -5
- package/dist/src/query.d.ts.map +1 -1
- package/dist/src/query.js +38 -82
- package/dist/src/query.js.map +1 -1
- package/dist/src/utils.d.ts +2 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +9 -0
- package/dist/src/utils.js.map +1 -0
- package/package.json +13 -15
- package/src/index.ts +38 -67
- package/src/query.ts +42 -101
- package/src/utils.ts +9 -0
- package/dist/src/compat/constants.d.ts +0 -5
- package/dist/src/compat/constants.d.ts.map +0 -1
- package/dist/src/compat/constants.js +0 -5
- package/dist/src/compat/constants.js.map +0 -1
- package/dist/src/compat/index.d.ts +0 -20
- package/dist/src/compat/index.d.ts.map +0 -1
- package/dist/src/compat/index.js +0 -50
- package/dist/src/compat/index.js.map +0 -1
- package/dist/src/compat/querier.d.ts +0 -31
- package/dist/src/compat/querier.d.ts.map +0 -1
- package/dist/src/compat/querier.js +0 -123
- package/dist/src/compat/querier.js.map +0 -1
- package/dist/src/compat/responder.d.ts +0 -13
- package/dist/src/compat/responder.d.ts.map +0 -1
- package/dist/src/compat/responder.js +0 -94
- package/dist/src/compat/responder.js.map +0 -1
- package/dist/src/compat/utils.d.ts +0 -5
- package/dist/src/compat/utils.d.ts.map +0 -1
- package/dist/src/compat/utils.js +0 -70
- package/dist/src/compat/utils.js.map +0 -1
- package/src/compat/constants.ts +0 -4
- package/src/compat/index.ts +0 -73
- package/src/compat/querier.ts +0 -171
- package/src/compat/responder.ts +0 -116
- package/src/compat/utils.ts +0 -82
package/src/index.ts
CHANGED
|
@@ -2,10 +2,10 @@ import multicastDNS from 'multicast-dns'
|
|
|
2
2
|
import { CustomEvent, EventEmitter } from '@libp2p/interfaces/events'
|
|
3
3
|
import { logger } from '@libp2p/logger'
|
|
4
4
|
import * as query from './query.js'
|
|
5
|
-
import { GoMulticastDNS } from './compat/index.js'
|
|
6
5
|
import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interface-peer-discovery'
|
|
7
6
|
import type { PeerInfo } from '@libp2p/interface-peer-info'
|
|
8
7
|
import { symbol } from '@libp2p/interface-peer-discovery'
|
|
8
|
+
import { stringGen } from './utils.js'
|
|
9
9
|
import type { PeerId } from '@libp2p/interface-peer-id'
|
|
10
10
|
import type { AddressManager } from '@libp2p/interface-address-manager'
|
|
11
11
|
|
|
@@ -15,11 +15,9 @@ export interface MulticastDNSInit {
|
|
|
15
15
|
broadcast?: boolean
|
|
16
16
|
interval?: number
|
|
17
17
|
serviceTag?: string
|
|
18
|
+
peerName?: string
|
|
18
19
|
port?: number
|
|
19
20
|
ip?: string
|
|
20
|
-
compat?: boolean
|
|
21
|
-
compatQueryPeriod?: number
|
|
22
|
-
compatQueryInterval?: number
|
|
23
21
|
}
|
|
24
22
|
|
|
25
23
|
export interface MulticastDNSComponents {
|
|
@@ -33,44 +31,41 @@ class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDisc
|
|
|
33
31
|
private readonly broadcast: boolean
|
|
34
32
|
private readonly interval: number
|
|
35
33
|
private readonly serviceTag: string
|
|
34
|
+
private readonly peerName: string
|
|
36
35
|
private readonly port: number
|
|
37
36
|
private readonly ip: string
|
|
38
37
|
private _queryInterval: ReturnType<typeof setInterval> | null
|
|
39
|
-
private readonly _goMdns?: GoMulticastDNS
|
|
40
38
|
private readonly components: MulticastDNSComponents
|
|
41
39
|
|
|
42
40
|
constructor (components: MulticastDNSComponents, init: MulticastDNSInit = {}) {
|
|
43
41
|
super()
|
|
44
42
|
|
|
45
|
-
this.components = components
|
|
46
43
|
this.broadcast = init.broadcast !== false
|
|
47
44
|
this.interval = init.interval ?? (1e3 * 10)
|
|
48
|
-
this.serviceTag = init.serviceTag ?? '
|
|
45
|
+
this.serviceTag = init.serviceTag ?? '_p2p._udp.local'
|
|
49
46
|
this.ip = init.ip ?? '224.0.0.251'
|
|
47
|
+
this.peerName = init.peerName ?? stringGen(63)
|
|
48
|
+
// 63 is dns label limit
|
|
49
|
+
if (this.peerName.length >= 64) {
|
|
50
|
+
throw new Error('Peer name should be less than 64 chars long')
|
|
51
|
+
}
|
|
50
52
|
this.port = init.port ?? 5353
|
|
53
|
+
this.components = components
|
|
51
54
|
this._queryInterval = null
|
|
52
55
|
this._onPeer = this._onPeer.bind(this)
|
|
53
56
|
this._onMdnsQuery = this._onMdnsQuery.bind(this)
|
|
54
57
|
this._onMdnsResponse = this._onMdnsResponse.bind(this)
|
|
55
|
-
|
|
56
|
-
if (init.compat !== false) {
|
|
57
|
-
this._goMdns = new GoMulticastDNS(components, {
|
|
58
|
-
queryPeriod: init.compatQueryPeriod,
|
|
59
|
-
queryInterval: init.compatQueryInterval
|
|
60
|
-
})
|
|
61
|
-
this._goMdns.addEventListener('peer', this._onPeer)
|
|
62
|
-
}
|
|
63
58
|
}
|
|
64
59
|
|
|
65
60
|
get [symbol] (): true {
|
|
66
61
|
return true
|
|
67
62
|
}
|
|
68
63
|
|
|
69
|
-
get [Symbol.toStringTag] () {
|
|
64
|
+
get [Symbol.toStringTag] (): '@libp2p/mdns' {
|
|
70
65
|
return '@libp2p/mdns'
|
|
71
66
|
}
|
|
72
67
|
|
|
73
|
-
isStarted () {
|
|
68
|
+
isStarted (): boolean {
|
|
74
69
|
return Boolean(this.mdns)
|
|
75
70
|
}
|
|
76
71
|
|
|
@@ -79,7 +74,7 @@ class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDisc
|
|
|
79
74
|
*
|
|
80
75
|
* @returns {void}
|
|
81
76
|
*/
|
|
82
|
-
async start () {
|
|
77
|
+
async start (): Promise<void> {
|
|
83
78
|
if (this.mdns != null) {
|
|
84
79
|
return
|
|
85
80
|
}
|
|
@@ -89,26 +84,29 @@ class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDisc
|
|
|
89
84
|
this.mdns.on('response', this._onMdnsResponse)
|
|
90
85
|
|
|
91
86
|
this._queryInterval = query.queryLAN(this.mdns, this.serviceTag, this.interval)
|
|
92
|
-
|
|
93
|
-
if (this._goMdns != null) {
|
|
94
|
-
await this._goMdns.start()
|
|
95
|
-
}
|
|
96
87
|
}
|
|
97
88
|
|
|
98
|
-
_onMdnsQuery (event: multicastDNS.QueryPacket) {
|
|
89
|
+
_onMdnsQuery (event: multicastDNS.QueryPacket): void {
|
|
99
90
|
if (this.mdns == null) {
|
|
100
91
|
return
|
|
101
92
|
}
|
|
102
93
|
|
|
103
94
|
log.trace('received incoming mDNS query')
|
|
104
|
-
|
|
95
|
+
const localPeerId = this.components.peerId
|
|
96
|
+
query.gotQuery(
|
|
97
|
+
event,
|
|
98
|
+
this.mdns,
|
|
99
|
+
this.peerName,
|
|
100
|
+
this.components.addressManager.getAddresses().map((ma) => ma.encapsulate('/p2p/' + localPeerId.toString())),
|
|
101
|
+
this.serviceTag,
|
|
102
|
+
this.broadcast)
|
|
105
103
|
}
|
|
106
104
|
|
|
107
|
-
_onMdnsResponse (event: multicastDNS.ResponsePacket) {
|
|
105
|
+
_onMdnsResponse (event: multicastDNS.ResponsePacket): void {
|
|
108
106
|
log.trace('received mDNS query response')
|
|
109
107
|
|
|
110
108
|
try {
|
|
111
|
-
const foundPeer = query.gotResponse(event, this.
|
|
109
|
+
const foundPeer = query.gotResponse(event, this.peerName, this.serviceTag)
|
|
112
110
|
|
|
113
111
|
if (foundPeer != null) {
|
|
114
112
|
log('discovered peer in mDNS qeury response %p', foundPeer.id)
|
|
@@ -122,7 +120,7 @@ class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDisc
|
|
|
122
120
|
}
|
|
123
121
|
}
|
|
124
122
|
|
|
125
|
-
_onPeer (evt: CustomEvent<PeerInfo>) {
|
|
123
|
+
_onPeer (evt: CustomEvent<PeerInfo>): void {
|
|
126
124
|
if (this.mdns == null) {
|
|
127
125
|
return
|
|
128
126
|
}
|
|
@@ -137,30 +135,26 @@ class MulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDisc
|
|
|
137
135
|
*
|
|
138
136
|
* @returns {Promise}
|
|
139
137
|
*/
|
|
140
|
-
async stop () {
|
|
138
|
+
async stop (): Promise<void> {
|
|
141
139
|
if (this.mdns == null) {
|
|
142
140
|
return
|
|
143
141
|
}
|
|
144
142
|
|
|
145
143
|
this.mdns.removeListener('query', this._onMdnsQuery)
|
|
146
144
|
this.mdns.removeListener('response', this._onMdnsResponse)
|
|
147
|
-
this._goMdns?.removeEventListener('peer', this._onPeer)
|
|
148
145
|
|
|
149
146
|
if (this._queryInterval != null) {
|
|
150
147
|
clearInterval(this._queryInterval)
|
|
151
148
|
this._queryInterval = null
|
|
152
149
|
}
|
|
153
150
|
|
|
154
|
-
await Promise
|
|
155
|
-
this.
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
})
|
|
163
|
-
])
|
|
151
|
+
await new Promise<void>((resolve) => {
|
|
152
|
+
if (this.mdns != null) {
|
|
153
|
+
this.mdns.destroy(resolve)
|
|
154
|
+
} else {
|
|
155
|
+
resolve()
|
|
156
|
+
}
|
|
157
|
+
})
|
|
164
158
|
|
|
165
159
|
this.mdns = undefined
|
|
166
160
|
}
|
|
@@ -172,40 +166,17 @@ export function mdns (init: MulticastDNSInit = {}): (components: MulticastDNSCom
|
|
|
172
166
|
|
|
173
167
|
/* for reference
|
|
174
168
|
|
|
175
|
-
[ { name: '
|
|
169
|
+
[ { name: '_p2p._udp.local',
|
|
176
170
|
type: 'PTR',
|
|
177
171
|
class: 1,
|
|
178
172
|
ttl: 120,
|
|
179
|
-
data: '
|
|
180
|
-
|
|
181
|
-
{ name: 'QmbBHw1Xx9pUpAbrVZUKTPL5Rsph5Q9GQhRvcWVBPFgGtC.discovery.ipfs.io.local',
|
|
182
|
-
type: 'SRV',
|
|
183
|
-
class: 1,
|
|
184
|
-
ttl: 120,
|
|
185
|
-
data: { priority: 10, weight: 1, port: 4001, target: 'lorien.local' } },
|
|
186
|
-
|
|
187
|
-
{ name: 'lorien.local',
|
|
188
|
-
type: 'A',
|
|
189
|
-
class: 1,
|
|
190
|
-
ttl: 120,
|
|
191
|
-
data: '127.0.0.1' },
|
|
192
|
-
|
|
193
|
-
{ name: 'lorien.local',
|
|
194
|
-
type: 'A',
|
|
195
|
-
class: 1,
|
|
196
|
-
ttl: 120,
|
|
197
|
-
data: '127.94.0.1' },
|
|
198
|
-
|
|
199
|
-
{ name: 'lorien.local',
|
|
200
|
-
type: 'A',
|
|
201
|
-
class: 1,
|
|
202
|
-
ttl: 120,
|
|
203
|
-
data: '172.16.38.224' },
|
|
173
|
+
data: 'XQxZeAH6MX2n4255fzYmyUCUdhQ0DAWv.p2p._udp.local' },
|
|
204
174
|
|
|
205
|
-
{ name: '
|
|
175
|
+
{ name: 'XQxZeAH6MX2n4255fzYmyUCUdhQ0DAWv.p2p._udp.local',
|
|
206
176
|
type: 'TXT',
|
|
207
177
|
class: 1,
|
|
208
178
|
ttl: 120,
|
|
209
|
-
data: 'QmbBHw1Xx9pUpAbrVZUKTPL5Rsph5Q9GQhRvcWVBPFgGtC' }
|
|
179
|
+
data: 'dnsaddr=/ip4/127.0.0.1/tcp/80/p2p/QmbBHw1Xx9pUpAbrVZUKTPL5Rsph5Q9GQhRvcWVBPFgGtC' },
|
|
180
|
+
]
|
|
210
181
|
|
|
211
182
|
*/
|
package/src/query.ts
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { PeerInfo } from '@libp2p/interface-peer-info'
|
|
2
2
|
import { logger } from '@libp2p/logger'
|
|
3
|
-
import { protocols, multiaddr } from '@multiformats/multiaddr'
|
|
4
|
-
import type { Multiaddr, MultiaddrObject } from '@multiformats/multiaddr'
|
|
5
3
|
import { peerIdFromString } from '@libp2p/peer-id'
|
|
6
|
-
import
|
|
7
|
-
import type {
|
|
8
|
-
import type { MulticastDNS,
|
|
9
|
-
import type { SrvAnswer, StringAnswer, TxtAnswer, Answer } from 'dns-packet'
|
|
4
|
+
import { multiaddr, Multiaddr } from '@multiformats/multiaddr'
|
|
5
|
+
import type { Answer, StringAnswer, TxtAnswer } from 'dns-packet'
|
|
6
|
+
import type { MulticastDNS, QueryPacket, ResponsePacket } from 'multicast-dns'
|
|
10
7
|
|
|
11
8
|
const log = logger('libp2p:mdns:query')
|
|
12
9
|
|
|
13
|
-
export function queryLAN (mdns: MulticastDNS, serviceTag: string, interval: number) {
|
|
14
|
-
const query = () => {
|
|
10
|
+
export function queryLAN (mdns: MulticastDNS, serviceTag: string, interval: number): NodeJS.Timer {
|
|
11
|
+
const query = (): void => {
|
|
15
12
|
log('query', serviceTag)
|
|
16
13
|
|
|
17
14
|
mdns.query({
|
|
@@ -27,93 +24,60 @@ export function queryLAN (mdns: MulticastDNS, serviceTag: string, interval: numb
|
|
|
27
24
|
return setInterval(query, interval)
|
|
28
25
|
}
|
|
29
26
|
|
|
30
|
-
|
|
31
|
-
ptr?: StringAnswer
|
|
32
|
-
srv?: SrvAnswer
|
|
33
|
-
txt?: TxtAnswer
|
|
34
|
-
a: StringAnswer[]
|
|
35
|
-
aaaa: StringAnswer[]
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export function gotResponse (rsp: ResponsePacket, localPeerId: PeerId, serviceTag: string): PeerInfo | undefined {
|
|
27
|
+
export function gotResponse (rsp: ResponsePacket, localPeerName: string, serviceTag: string): PeerInfo | undefined {
|
|
39
28
|
if (rsp.answers == null) {
|
|
40
29
|
return
|
|
41
30
|
}
|
|
42
31
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
aaaa: []
|
|
46
|
-
}
|
|
32
|
+
let answerPTR: StringAnswer | undefined
|
|
33
|
+
const txtAnswers: TxtAnswer[] = []
|
|
47
34
|
|
|
48
35
|
rsp.answers.forEach((answer) => {
|
|
49
36
|
switch (answer.type) {
|
|
50
|
-
case 'PTR':
|
|
51
|
-
case '
|
|
52
|
-
case 'TXT': answers.txt = answer; break
|
|
53
|
-
case 'A': answers.a.push(answer); break
|
|
54
|
-
case 'AAAA': answers.aaaa.push(answer); break
|
|
37
|
+
case 'PTR': answerPTR = answer; break
|
|
38
|
+
case 'TXT': txtAnswers.push(answer); break
|
|
55
39
|
default: break
|
|
56
40
|
}
|
|
57
41
|
})
|
|
58
42
|
|
|
59
|
-
if (
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
43
|
+
if (answerPTR == null ||
|
|
44
|
+
answerPTR?.name !== serviceTag ||
|
|
45
|
+
txtAnswers.length === 0 ||
|
|
46
|
+
answerPTR.data.startsWith(localPeerName)) {
|
|
63
47
|
return
|
|
64
48
|
}
|
|
65
49
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
50
|
+
try {
|
|
51
|
+
const multiaddrs: Multiaddr[] = txtAnswers
|
|
52
|
+
.flatMap((a) => a.data)
|
|
53
|
+
.filter(answerData => answerData.toString().startsWith('dnsaddr='))
|
|
54
|
+
.map((answerData) => {
|
|
55
|
+
return multiaddr(answerData.toString().substring('dnsaddr='.length))
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
const peerId = multiaddrs[0].getPeerId()
|
|
59
|
+
if (peerId == null) {
|
|
60
|
+
throw new Error("Multiaddr doesn't contain PeerId")
|
|
75
61
|
}
|
|
76
|
-
|
|
62
|
+
log('peer found %p', peerId)
|
|
77
63
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
multiaddrs.push(ma)
|
|
64
|
+
return {
|
|
65
|
+
id: peerIdFromString(peerId),
|
|
66
|
+
multiaddrs,
|
|
67
|
+
protocols: []
|
|
83
68
|
}
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
if (localPeerId.toString() === b58Id) {
|
|
87
|
-
return // replied to myself, ignore
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const id = peerIdFromString(b58Id)
|
|
91
|
-
|
|
92
|
-
log('peer found %p', id)
|
|
93
|
-
|
|
94
|
-
return {
|
|
95
|
-
id,
|
|
96
|
-
multiaddrs,
|
|
97
|
-
protocols: []
|
|
69
|
+
} catch (e) {
|
|
70
|
+
log.error('failed to parse mdns response', e)
|
|
98
71
|
}
|
|
99
72
|
}
|
|
100
73
|
|
|
101
|
-
export function gotQuery (qry: QueryPacket, mdns: MulticastDNS,
|
|
74
|
+
export function gotQuery (qry: QueryPacket, mdns: MulticastDNS, peerName: string, multiaddrs: Multiaddr[], serviceTag: string, broadcast: boolean): void {
|
|
102
75
|
if (!broadcast) {
|
|
103
76
|
log('not responding to mDNS query as broadcast mode is false')
|
|
104
77
|
return
|
|
105
78
|
}
|
|
106
79
|
|
|
107
|
-
|
|
108
|
-
if (addr.decapsulateCode(protocols('p2p').code).isThinWaistAddress()) {
|
|
109
|
-
acc.push(addr.toOptions())
|
|
110
|
-
}
|
|
111
|
-
return acc
|
|
112
|
-
}, [])
|
|
113
|
-
|
|
114
|
-
// Only announce TCP for now
|
|
115
|
-
if (addresses.length === 0) {
|
|
116
|
-
log('no thin waist addresses present, cannot respond to query')
|
|
80
|
+
if (multiaddrs.length === 0) {
|
|
117
81
|
return
|
|
118
82
|
}
|
|
119
83
|
|
|
@@ -125,41 +89,18 @@ export function gotQuery (qry: QueryPacket, mdns: MulticastDNS, peerId: PeerId,
|
|
|
125
89
|
type: 'PTR',
|
|
126
90
|
class: 'IN',
|
|
127
91
|
ttl: 120,
|
|
128
|
-
data:
|
|
129
|
-
})
|
|
130
|
-
|
|
131
|
-
// Only announce TCP multiaddrs for now
|
|
132
|
-
const port = addresses[0].port
|
|
133
|
-
|
|
134
|
-
answers.push({
|
|
135
|
-
name: peerId.toString() + '.' + serviceTag,
|
|
136
|
-
type: 'SRV',
|
|
137
|
-
class: 'IN',
|
|
138
|
-
ttl: 120,
|
|
139
|
-
data: {
|
|
140
|
-
priority: 10,
|
|
141
|
-
weight: 1,
|
|
142
|
-
port: port,
|
|
143
|
-
target: os.hostname()
|
|
144
|
-
}
|
|
145
|
-
})
|
|
146
|
-
|
|
147
|
-
answers.push({
|
|
148
|
-
name: peerId.toString() + '.' + serviceTag,
|
|
149
|
-
type: 'TXT',
|
|
150
|
-
class: 'IN',
|
|
151
|
-
ttl: 120,
|
|
152
|
-
data: peerId.toString()
|
|
92
|
+
data: peerName + '.' + serviceTag
|
|
153
93
|
})
|
|
154
94
|
|
|
155
|
-
|
|
156
|
-
|
|
95
|
+
multiaddrs.forEach((addr) => {
|
|
96
|
+
// spec mandates multiaddr contains peer id
|
|
97
|
+
if (addr.getPeerId() != null) {
|
|
157
98
|
answers.push({
|
|
158
|
-
name:
|
|
159
|
-
type:
|
|
99
|
+
name: peerName + '.' + serviceTag,
|
|
100
|
+
type: 'TXT',
|
|
160
101
|
class: 'IN',
|
|
161
102
|
ttl: 120,
|
|
162
|
-
data: addr.
|
|
103
|
+
data: 'dnsaddr=' + addr.toString()
|
|
163
104
|
})
|
|
164
105
|
}
|
|
165
106
|
})
|
package/src/utils.ts
ADDED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/compat/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,yBAAyB,CAAA;AACjD,eAAO,MAAM,iBAAiB,QAAyB,CAAA;AACvD,eAAO,MAAM,YAAY,gBAAgB,CAAA;AACzC,eAAO,MAAM,cAAc,OAAO,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/compat/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,sBAAsB,CAAA;AACjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,WAAW,QAAQ,CAAA;AACvD,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAA;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAA"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from '@libp2p/interfaces/events';
|
|
2
|
-
import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interface-peer-discovery';
|
|
3
|
-
import { symbol } from '@libp2p/interface-peer-discovery';
|
|
4
|
-
import type { MulticastDNSComponents } from '../index.js';
|
|
5
|
-
export interface GoMulticastDNSInit {
|
|
6
|
-
queryPeriod?: number;
|
|
7
|
-
queryInterval?: number;
|
|
8
|
-
}
|
|
9
|
-
export declare class GoMulticastDNS extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery {
|
|
10
|
-
private _started;
|
|
11
|
-
private readonly _responder;
|
|
12
|
-
private readonly _querier;
|
|
13
|
-
constructor(components: MulticastDNSComponents, options?: GoMulticastDNSInit);
|
|
14
|
-
get [symbol](): true;
|
|
15
|
-
get [Symbol.toStringTag](): string;
|
|
16
|
-
isStarted(): boolean;
|
|
17
|
-
start(): Promise<void>;
|
|
18
|
-
stop(): Promise<void>;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/compat/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,2BAA2B,CAAA;AAGrE,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC1F,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEzD,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;IAC5F,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAErB,UAAU,EAAE,sBAAsB,EAAE,OAAO,GAAE,kBAAuB;IAiBjF,IAAI,CAAC,MAAM,CAAC,IAAK,IAAI,CAEpB;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAED,SAAS;IAIH,KAAK;IAaL,IAAI;CAYX"}
|
package/dist/src/compat/index.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
// Compatibility with Go libp2p MDNS
|
|
2
|
-
import { EventEmitter, CustomEvent } from '@libp2p/interfaces/events';
|
|
3
|
-
import { Responder } from './responder.js';
|
|
4
|
-
import { Querier } from './querier.js';
|
|
5
|
-
import { symbol } from '@libp2p/interface-peer-discovery';
|
|
6
|
-
export class GoMulticastDNS extends EventEmitter {
|
|
7
|
-
constructor(components, options = {}) {
|
|
8
|
-
super();
|
|
9
|
-
const { queryPeriod, queryInterval } = options;
|
|
10
|
-
this._started = false;
|
|
11
|
-
this._responder = new Responder(components);
|
|
12
|
-
this._querier = new Querier(components, {
|
|
13
|
-
queryInterval,
|
|
14
|
-
queryPeriod
|
|
15
|
-
});
|
|
16
|
-
this._querier.addEventListener('peer', (evt) => {
|
|
17
|
-
this.dispatchEvent(new CustomEvent('peer', { detail: evt.detail }));
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
get [symbol]() {
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
get [Symbol.toStringTag]() {
|
|
24
|
-
return '@libp2p/go-mdns';
|
|
25
|
-
}
|
|
26
|
-
isStarted() {
|
|
27
|
-
return this._started;
|
|
28
|
-
}
|
|
29
|
-
async start() {
|
|
30
|
-
if (this.isStarted()) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
this._started = true;
|
|
34
|
-
await Promise.all([
|
|
35
|
-
this._responder.start(),
|
|
36
|
-
this._querier.start()
|
|
37
|
-
]);
|
|
38
|
-
}
|
|
39
|
-
async stop() {
|
|
40
|
-
if (!this.isStarted()) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
this._started = false;
|
|
44
|
-
await Promise.all([
|
|
45
|
-
this._responder.stop(),
|
|
46
|
-
this._querier.stop()
|
|
47
|
-
]);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/compat/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAQzD,MAAM,OAAO,cAAe,SAAQ,YAAiC;IAKnE,YAAa,UAAkC,EAAE,UAA8B,EAAE;QAC/E,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,CAAC,UAAU,CAAC,CAAA;QAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE;YACtC,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,CAAC,MAAM,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,iBAAiB,CAAA;IAC1B,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,31 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { EventEmitter } from '@libp2p/interfaces/events';
|
|
3
|
-
import type { PeerDiscovery, PeerDiscoveryEvents } from '@libp2p/interface-peer-discovery';
|
|
4
|
-
import type { ResponsePacket } from 'multicast-dns';
|
|
5
|
-
import type { RemoteInfo } from 'dgram';
|
|
6
|
-
import { symbol } from '@libp2p/interface-peer-discovery';
|
|
7
|
-
import type { Startable } from '@libp2p/interfaces/dist/src/startable.js';
|
|
8
|
-
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
9
|
-
export interface QuerierInit {
|
|
10
|
-
queryInterval?: number;
|
|
11
|
-
queryPeriod?: number;
|
|
12
|
-
}
|
|
13
|
-
export interface QuerierComponents {
|
|
14
|
-
peerId: PeerId;
|
|
15
|
-
}
|
|
16
|
-
export interface Handle {
|
|
17
|
-
stop: () => Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
export declare class Querier extends EventEmitter<PeerDiscoveryEvents> implements PeerDiscovery, Startable {
|
|
20
|
-
private readonly _init;
|
|
21
|
-
private _handle?;
|
|
22
|
-
private readonly components;
|
|
23
|
-
constructor(components: QuerierComponents, init?: QuerierInit);
|
|
24
|
-
get [symbol](): true;
|
|
25
|
-
get [Symbol.toStringTag](): string;
|
|
26
|
-
isStarted(): boolean;
|
|
27
|
-
start(): void;
|
|
28
|
-
_onResponse(event: ResponsePacket, info: RemoteInfo): void;
|
|
29
|
-
stop(): Promise<void>;
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=querier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"querier.d.ts","sourceRoot":"","sources":["../../../src/compat/querier.ts"],"names":[],"mappings":";AAAA,OAAO,EAAe,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAIrE,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAA;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIvD,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;CACf;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,SAAS;IAChG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,OAAO,CAAC,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;gBAEjC,UAAU,EAAE,iBAAiB,EAAE,IAAI,GAAE,WAAgB;IAmBlE,IAAI,CAAC,MAAM,CAAC,IAAK,IAAI,CAEpB;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAED,SAAS;IAIT,KAAK;IAgCL,WAAW,CAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU;IAuB9C,IAAI;CAKX"}
|