@libp2p/pubsub 8.0.13-738dd40f1 → 8.0.14
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 +1 -1
- package/dist/index.min.js +9 -9
- package/dist/src/index.d.ts +5 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +33 -33
- package/dist/src/index.js.map +1 -1
- package/dist/src/peer-streams.d.ts +5 -7
- package/dist/src/peer-streams.d.ts.map +1 -1
- package/dist/src/peer-streams.js +9 -14
- package/dist/src/peer-streams.js.map +1 -1
- package/dist/src/sign.d.ts +2 -1
- package/dist/src/sign.d.ts.map +1 -1
- package/dist/src/sign.js.map +1 -1
- package/dist/src/utils.d.ts +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +1 -1
- package/dist/src/utils.js.map +1 -1
- package/package.json +16 -20
- package/src/index.ts +37 -36
- package/src/peer-streams.ts +19 -23
- package/src/sign.ts +2 -1
- package/src/utils.ts +2 -2
package/package.json
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
{
|
2
2
|
"name": "@libp2p/pubsub",
|
3
|
-
"version": "8.0.
|
3
|
+
"version": "8.0.14",
|
4
4
|
"description": "libp2p pubsub base class",
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
6
|
-
"homepage": "https://github.com/libp2p/js-libp2p/tree/
|
6
|
+
"homepage": "https://github.com/libp2p/js-libp2p/tree/master/packages/pubsub#readme",
|
7
7
|
"repository": {
|
8
8
|
"type": "git",
|
9
9
|
"url": "git+https://github.com/libp2p/js-libp2p.git"
|
@@ -11,10 +11,6 @@
|
|
11
11
|
"bugs": {
|
12
12
|
"url": "https://github.com/libp2p/js-libp2p/issues"
|
13
13
|
},
|
14
|
-
"publishConfig": {
|
15
|
-
"access": "public",
|
16
|
-
"provenance": true
|
17
|
-
},
|
18
14
|
"keywords": [
|
19
15
|
"interface",
|
20
16
|
"libp2p"
|
@@ -71,7 +67,7 @@
|
|
71
67
|
"scripts": {
|
72
68
|
"clean": "aegir clean",
|
73
69
|
"lint": "aegir lint",
|
74
|
-
"dep-check": "aegir dep-check",
|
70
|
+
"dep-check": "aegir dep-check -i protons",
|
75
71
|
"build": "aegir build",
|
76
72
|
"generate": "protons test/message/rpc.proto",
|
77
73
|
"test": "aegir test",
|
@@ -83,30 +79,30 @@
|
|
83
79
|
"test:electron-main": "aegir test -t electron-main"
|
84
80
|
},
|
85
81
|
"dependencies": {
|
86
|
-
"@libp2p/crypto": "
|
87
|
-
"@libp2p/interface": "
|
88
|
-
"@libp2p/interface-internal": "1.
|
89
|
-
"@libp2p/
|
90
|
-
"@libp2p/peer-
|
91
|
-
"@libp2p/
|
92
|
-
"
|
82
|
+
"@libp2p/crypto": "^2.0.8",
|
83
|
+
"@libp2p/interface": "^0.1.6",
|
84
|
+
"@libp2p/interface-internal": "^0.1.9",
|
85
|
+
"@libp2p/logger": "^3.1.0",
|
86
|
+
"@libp2p/peer-collections": "^4.0.8",
|
87
|
+
"@libp2p/peer-id": "^3.0.6",
|
88
|
+
"abortable-iterator": "^5.0.1",
|
89
|
+
"it-length-prefixed": "^9.0.1",
|
93
90
|
"it-pipe": "^3.0.1",
|
94
|
-
"it-pushable": "^3.2.
|
95
|
-
"multiformats": "^12.1
|
96
|
-
"p-queue": "^7.4
|
91
|
+
"it-pushable": "^3.2.0",
|
92
|
+
"multiformats": "^12.0.1",
|
93
|
+
"p-queue": "^7.3.4",
|
97
94
|
"uint8arraylist": "^2.4.3",
|
98
95
|
"uint8arrays": "^4.0.6"
|
99
96
|
},
|
100
97
|
"devDependencies": {
|
101
|
-
"@libp2p/
|
102
|
-
"@libp2p/peer-id-factory": "3.0.10-738dd40f1",
|
98
|
+
"@libp2p/peer-id-factory": "^3.0.8",
|
103
99
|
"@types/sinon": "^17.0.0",
|
104
100
|
"aegir": "^41.0.2",
|
105
101
|
"delay": "^6.0.0",
|
106
102
|
"it-pair": "^2.0.6",
|
107
103
|
"p-defer": "^4.0.0",
|
108
104
|
"p-wait-for": "^5.0.2",
|
109
|
-
"protons": "^7.
|
105
|
+
"protons": "^7.0.2",
|
110
106
|
"protons-runtime": "^5.0.0",
|
111
107
|
"sinon": "^17.0.0"
|
112
108
|
}
|
package/src/index.ts
CHANGED
@@ -4,7 +4,6 @@
|
|
4
4
|
* A set of components to be extended in order to create a pubsub implementation.
|
5
5
|
*
|
6
6
|
* @example
|
7
|
-
*
|
8
7
|
* ```javascript
|
9
8
|
* import { PubSubBaseProtocol } from '@libp2p/pubsub'
|
10
9
|
*
|
@@ -14,8 +13,10 @@
|
|
14
13
|
* ```
|
15
14
|
*/
|
16
15
|
|
17
|
-
import { CodeError
|
18
|
-
import {
|
16
|
+
import { CodeError } from '@libp2p/interface/errors'
|
17
|
+
import { TypedEventEmitter, CustomEvent } from '@libp2p/interface/events'
|
18
|
+
import { type PubSub, type Message, type StrictNoSign, type StrictSign, type PubSubInit, type PubSubEvents, type PeerStreams, type PubSubRPCMessage, type PubSubRPC, type PubSubRPCSubscription, type SubscriptionChangeData, type PublishResult, type TopicValidatorFn, TopicValidatorResult } from '@libp2p/interface/pubsub'
|
19
|
+
import { logger } from '@libp2p/logger'
|
19
20
|
import { PeerMap, PeerSet } from '@libp2p/peer-collections'
|
20
21
|
import { pipe } from 'it-pipe'
|
21
22
|
import Queue from 'p-queue'
|
@@ -26,13 +27,16 @@ import {
|
|
26
27
|
verifySignature
|
27
28
|
} from './sign.js'
|
28
29
|
import { toMessage, ensureArray, noSignMsgId, msgId, toRpcMessage, randomSeqno } from './utils.js'
|
29
|
-
import type {
|
30
|
+
import type { Connection } from '@libp2p/interface/connection'
|
31
|
+
import type { PeerId } from '@libp2p/interface/peer-id'
|
32
|
+
import type { IncomingStreamData, Registrar } from '@libp2p/interface-internal/registrar'
|
30
33
|
import type { Uint8ArrayList } from 'uint8arraylist'
|
31
34
|
|
35
|
+
const log = logger('libp2p:pubsub')
|
36
|
+
|
32
37
|
export interface PubSubComponents {
|
33
38
|
peerId: PeerId
|
34
39
|
registrar: Registrar
|
35
|
-
logger: ComponentLogger
|
36
40
|
}
|
37
41
|
|
38
42
|
/**
|
@@ -40,8 +44,6 @@ export interface PubSubComponents {
|
|
40
44
|
* and specifies the API that pubsub routers should have.
|
41
45
|
*/
|
42
46
|
export abstract class PubSubBaseProtocol<Events extends Record<string, any> = PubSubEvents> extends TypedEventEmitter<Events> implements PubSub<Events> {
|
43
|
-
protected log: Logger
|
44
|
-
|
45
47
|
public started: boolean
|
46
48
|
/**
|
47
49
|
* Map of topics to which peers are subscribed to
|
@@ -96,7 +98,6 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
96
98
|
maxOutboundStreams = 1
|
97
99
|
} = props
|
98
100
|
|
99
|
-
this.log = components.logger.forComponent('libp2p:pubsub')
|
100
101
|
this.components = components
|
101
102
|
this.multicodecs = ensureArray(multicodecs)
|
102
103
|
this.enabled = props.enabled !== false
|
@@ -127,7 +128,7 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
127
128
|
return
|
128
129
|
}
|
129
130
|
|
130
|
-
|
131
|
+
log('starting')
|
131
132
|
|
132
133
|
const registrar = this.components.registrar
|
133
134
|
// Incoming streams
|
@@ -147,7 +148,7 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
147
148
|
}
|
148
149
|
this._registrarTopologyIds = await Promise.all(this.multicodecs.map(async multicodec => registrar.register(multicodec, topology)))
|
149
150
|
|
150
|
-
|
151
|
+
log('started')
|
151
152
|
this.started = true
|
152
153
|
}
|
153
154
|
|
@@ -172,7 +173,7 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
172
173
|
await registrar.unhandle(multicodec)
|
173
174
|
}))
|
174
175
|
|
175
|
-
|
176
|
+
log('stopping')
|
176
177
|
for (const peerStreams of this.peers.values()) {
|
177
178
|
peerStreams.close()
|
178
179
|
}
|
@@ -180,7 +181,7 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
180
181
|
this.peers.clear()
|
181
182
|
this.subscriptions = new Set()
|
182
183
|
this.started = false
|
183
|
-
|
184
|
+
log('stopped')
|
184
185
|
}
|
185
186
|
|
186
187
|
isStarted (): boolean {
|
@@ -203,18 +204,18 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
203
204
|
const inboundStream = peer.attachInboundStream(stream)
|
204
205
|
|
205
206
|
this.processMessages(peerId, inboundStream, peer)
|
206
|
-
.catch(err => {
|
207
|
+
.catch(err => { log(err) })
|
207
208
|
}
|
208
209
|
|
209
210
|
/**
|
210
211
|
* Registrar notifies an established connection with pubsub protocol
|
211
212
|
*/
|
212
213
|
protected _onPeerConnected (peerId: PeerId, conn: Connection): void {
|
213
|
-
|
214
|
+
log('connected %p', peerId)
|
214
215
|
|
215
216
|
// if this connection is already in use for pubsub, ignore it
|
216
217
|
if (conn.streams.find(stream => stream.direction === 'outbound' && stream.protocol != null && this.multicodecs.includes(stream.protocol)) != null) {
|
217
|
-
|
218
|
+
log('outbound pubsub streams already present on connection from %p', peerId)
|
218
219
|
return
|
219
220
|
}
|
220
221
|
|
@@ -230,14 +231,14 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
230
231
|
const peer = this.addPeer(peerId, stream.protocol)
|
231
232
|
await peer.attachOutboundStream(stream)
|
232
233
|
} catch (err: any) {
|
233
|
-
|
234
|
+
log.error(err)
|
234
235
|
}
|
235
236
|
|
236
237
|
// Immediately send my own subscriptions to the newly established conn
|
237
238
|
this.send(peerId, { subscriptions: Array.from(this.subscriptions).map(sub => sub.toString()), subscribe: true })
|
238
239
|
})
|
239
240
|
.catch(err => {
|
240
|
-
|
241
|
+
log.error(err)
|
241
242
|
})
|
242
243
|
}
|
243
244
|
|
@@ -247,7 +248,7 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
247
248
|
protected _onPeerDisconnected (peerId: PeerId, conn?: Connection): void {
|
248
249
|
const idB58Str = peerId.toString()
|
249
250
|
|
250
|
-
|
251
|
+
log('connection ended', idB58Str)
|
251
252
|
this._removePeer(peerId)
|
252
253
|
}
|
253
254
|
|
@@ -263,9 +264,9 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
263
264
|
}
|
264
265
|
|
265
266
|
// else create a new peer streams
|
266
|
-
|
267
|
+
log('new peer %p', peerId)
|
267
268
|
|
268
|
-
const peerStreams: PeerStreams = new PeerStreamsImpl(
|
269
|
+
const peerStreams: PeerStreams = new PeerStreamsImpl({
|
269
270
|
id: peerId,
|
270
271
|
protocol
|
271
272
|
})
|
@@ -291,7 +292,7 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
291
292
|
peerStreams.close()
|
292
293
|
|
293
294
|
// delete peer streams
|
294
|
-
|
295
|
+
log('delete peer %p', peerId)
|
295
296
|
this.peers.delete(peerId)
|
296
297
|
|
297
298
|
// remove peer from topics map
|
@@ -318,7 +319,7 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
318
319
|
|
319
320
|
for (const msg of (rpcMsg.messages ?? [])) {
|
320
321
|
if (msg.from == null || msg.data == null || msg.topic == null) {
|
321
|
-
|
322
|
+
log('message from %p was missing from, data or topic fields, dropping', peerId)
|
322
323
|
continue
|
323
324
|
}
|
324
325
|
|
@@ -343,7 +344,7 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
343
344
|
})),
|
344
345
|
messages
|
345
346
|
})
|
346
|
-
.catch(err => {
|
347
|
+
.catch(err => { log(err) })
|
347
348
|
}
|
348
349
|
}
|
349
350
|
)
|
@@ -357,16 +358,16 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
357
358
|
*/
|
358
359
|
async processRpc (from: PeerId, peerStreams: PeerStreams, rpc: PubSubRPC): Promise<boolean> {
|
359
360
|
if (!this.acceptFrom(from)) {
|
360
|
-
|
361
|
+
log('received message from unacceptable peer %p', from)
|
361
362
|
return false
|
362
363
|
}
|
363
364
|
|
364
|
-
|
365
|
+
log('rpc from %p', from)
|
365
366
|
|
366
367
|
const { subscriptions, messages } = rpc
|
367
368
|
|
368
369
|
if (subscriptions != null && subscriptions.length > 0) {
|
369
|
-
|
370
|
+
log('subscription update from %p', from)
|
370
371
|
|
371
372
|
// update peer subscriptions
|
372
373
|
subscriptions.forEach((subOpt) => {
|
@@ -385,11 +386,11 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
385
386
|
}
|
386
387
|
|
387
388
|
if (messages != null && messages.length > 0) {
|
388
|
-
|
389
|
+
log('messages from %p', from)
|
389
390
|
|
390
391
|
this.queue.addAll(messages.map(message => async () => {
|
391
392
|
if (message.topic == null || (!this.subscriptions.has(message.topic) && !this.canRelayMessage)) {
|
392
|
-
|
393
|
+
log('received message we didn\'t subscribe to. Dropping.')
|
393
394
|
return false
|
394
395
|
}
|
395
396
|
|
@@ -398,10 +399,10 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
398
399
|
|
399
400
|
await this.processMessage(from, msg)
|
400
401
|
} catch (err: any) {
|
401
|
-
|
402
|
+
log.error(err)
|
402
403
|
}
|
403
404
|
}))
|
404
|
-
.catch(err => {
|
405
|
+
.catch(err => { log(err) })
|
405
406
|
}
|
406
407
|
|
407
408
|
return true
|
@@ -444,7 +445,7 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
444
445
|
try {
|
445
446
|
await this.validate(from, msg)
|
446
447
|
} catch (err: any) {
|
447
|
-
|
448
|
+
log('Message is invalid, dropping it. %O', err)
|
448
449
|
return
|
449
450
|
}
|
450
451
|
|
@@ -534,13 +535,13 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
534
535
|
const peerStreams = this.peers.get(peer)
|
535
536
|
|
536
537
|
if (peerStreams == null) {
|
537
|
-
|
538
|
+
log.error('Cannot send RPC to %p as there are no streams to it available', peer)
|
538
539
|
|
539
540
|
return
|
540
541
|
}
|
541
542
|
|
542
543
|
if (!peerStreams.isWritable) {
|
543
|
-
|
544
|
+
log.error('Cannot send RPC to %p as there is no outbound stream to it available', peer)
|
544
545
|
|
545
546
|
return
|
546
547
|
}
|
@@ -663,7 +664,7 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
663
664
|
sequenceNumber: randomSeqno()
|
664
665
|
}
|
665
666
|
|
666
|
-
|
667
|
+
log('publish topic: %s from: %p data: %m', topic, message.from, message.data)
|
667
668
|
|
668
669
|
const rpcMessage = await this.buildMessage(message)
|
669
670
|
let emittedToSelf = false
|
@@ -705,7 +706,7 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
705
706
|
throw new Error('Pubsub has not started')
|
706
707
|
}
|
707
708
|
|
708
|
-
|
709
|
+
log('subscribe to topic: %s', topic)
|
709
710
|
|
710
711
|
if (!this.subscriptions.has(topic)) {
|
711
712
|
this.subscriptions.add(topic)
|
@@ -728,7 +729,7 @@ export abstract class PubSubBaseProtocol<Events extends Record<string, any> = Pu
|
|
728
729
|
|
729
730
|
const wasSubscribed = this.subscriptions.has(topic)
|
730
731
|
|
731
|
-
|
732
|
+
log('unsubscribe from %s - am subscribed %s', topic, wasSubscribed)
|
732
733
|
|
733
734
|
if (wasSubscribed) {
|
734
735
|
this.subscriptions.delete(topic)
|
package/src/peer-streams.ts
CHANGED
@@ -1,21 +1,22 @@
|
|
1
|
-
import { TypedEventEmitter, CustomEvent } from '@libp2p/interface'
|
2
|
-
import {
|
1
|
+
import { TypedEventEmitter, CustomEvent } from '@libp2p/interface/events'
|
2
|
+
import { logger } from '@libp2p/logger'
|
3
|
+
import { abortableSource } from 'abortable-iterator'
|
3
4
|
import * as lp from 'it-length-prefixed'
|
4
5
|
import { pipe } from 'it-pipe'
|
5
6
|
import { pushable } from 'it-pushable'
|
6
7
|
import { Uint8ArrayList } from 'uint8arraylist'
|
7
|
-
import type {
|
8
|
+
import type { Stream } from '@libp2p/interface/connection'
|
9
|
+
import type { PeerId } from '@libp2p/interface/peer-id'
|
10
|
+
import type { PeerStreamEvents } from '@libp2p/interface/pubsub'
|
8
11
|
import type { Pushable } from 'it-pushable'
|
9
12
|
|
13
|
+
const log = logger('libp2p-pubsub:peer-streams')
|
14
|
+
|
10
15
|
export interface PeerStreamsInit {
|
11
16
|
id: PeerId
|
12
17
|
protocol: string
|
13
18
|
}
|
14
19
|
|
15
|
-
export interface PeerStreamsComponents {
|
16
|
-
logger: ComponentLogger
|
17
|
-
}
|
18
|
-
|
19
20
|
/**
|
20
21
|
* Thin wrapper around a peer's inbound / outbound pubsub streams
|
21
22
|
*/
|
@@ -43,12 +44,10 @@ export class PeerStreams extends TypedEventEmitter<PeerStreamEvents> {
|
|
43
44
|
*/
|
44
45
|
private readonly _inboundAbortController: AbortController
|
45
46
|
private closed: boolean
|
46
|
-
private readonly log: Logger
|
47
47
|
|
48
|
-
constructor (
|
48
|
+
constructor (init: PeerStreamsInit) {
|
49
49
|
super()
|
50
50
|
|
51
|
-
this.log = components.logger.forComponent('libp2p-pubsub:peer-streams')
|
52
51
|
this.id = init.id
|
53
52
|
this.protocol = init.protocol
|
54
53
|
|
@@ -87,22 +86,18 @@ export class PeerStreams extends TypedEventEmitter<PeerStreamEvents> {
|
|
87
86
|
* Attach a raw inbound stream and setup a read stream
|
88
87
|
*/
|
89
88
|
attachInboundStream (stream: Stream): AsyncIterable<Uint8ArrayList> {
|
90
|
-
const abortListener = (): void => {
|
91
|
-
closeSource(stream.source, this.log)
|
92
|
-
}
|
93
|
-
|
94
|
-
this._inboundAbortController.signal.addEventListener('abort', abortListener, {
|
95
|
-
once: true
|
96
|
-
})
|
97
|
-
|
98
89
|
// Create and attach a new inbound stream
|
99
90
|
// The inbound stream is:
|
100
91
|
// - abortable, set to only return on abort, rather than throw
|
101
92
|
// - transformed with length-prefix transform
|
102
93
|
this._rawInboundStream = stream
|
103
|
-
this.inboundStream =
|
104
|
-
|
105
|
-
|
94
|
+
this.inboundStream = abortableSource(
|
95
|
+
pipe(
|
96
|
+
this._rawInboundStream,
|
97
|
+
(source) => lp.decode(source)
|
98
|
+
),
|
99
|
+
this._inboundAbortController.signal,
|
100
|
+
{ returnOnAbort: true }
|
106
101
|
)
|
107
102
|
|
108
103
|
this.dispatchEvent(new CustomEvent('stream:inbound'))
|
@@ -122,12 +117,13 @@ export class PeerStreams extends TypedEventEmitter<PeerStreamEvents> {
|
|
122
117
|
|
123
118
|
this._rawOutboundStream = stream
|
124
119
|
this.outboundStream = pushable<Uint8ArrayList>({
|
120
|
+
objectMode: true,
|
125
121
|
onEnd: (shouldEmit) => {
|
126
122
|
// close writable side of the stream
|
127
123
|
if (this._rawOutboundStream != null) { // eslint-disable-line @typescript-eslint/prefer-optional-chain
|
128
124
|
this._rawOutboundStream.closeWrite()
|
129
125
|
.catch(err => {
|
130
|
-
|
126
|
+
log('error closing outbound stream', err)
|
131
127
|
})
|
132
128
|
}
|
133
129
|
|
@@ -144,7 +140,7 @@ export class PeerStreams extends TypedEventEmitter<PeerStreamEvents> {
|
|
144
140
|
(source) => lp.encode(source),
|
145
141
|
this._rawOutboundStream
|
146
142
|
).catch((err: Error) => {
|
147
|
-
|
143
|
+
log.error(err)
|
148
144
|
})
|
149
145
|
|
150
146
|
// Only emit if the connection is new
|
package/src/sign.ts
CHANGED
@@ -3,7 +3,8 @@ import { peerIdFromKeys } from '@libp2p/peer-id'
|
|
3
3
|
import { concat as uint8ArrayConcat } from 'uint8arrays/concat'
|
4
4
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
5
5
|
import { toRpcMessage } from './utils.js'
|
6
|
-
import type { PeerId
|
6
|
+
import type { PeerId } from '@libp2p/interface/peer-id'
|
7
|
+
import type { PubSubRPCMessage, SignedMessage } from '@libp2p/interface/pubsub'
|
7
8
|
|
8
9
|
export const SignPrefix = uint8ArrayFromString('libp2p-pubsub:')
|
9
10
|
|
package/src/utils.ts
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
import { randomBytes } from '@libp2p/crypto'
|
2
|
-
import { CodeError } from '@libp2p/interface'
|
2
|
+
import { CodeError } from '@libp2p/interface/errors'
|
3
3
|
import { peerIdFromBytes, peerIdFromKeys } from '@libp2p/peer-id'
|
4
4
|
import { sha256 } from 'multiformats/hashes/sha2'
|
5
5
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
6
6
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
|
7
7
|
import { codes } from './errors.js'
|
8
|
-
import type { Message, PubSubRPCMessage } from '@libp2p/interface'
|
8
|
+
import type { Message, PubSubRPCMessage } from '@libp2p/interface/pubsub'
|
9
9
|
|
10
10
|
/**
|
11
11
|
* Generate a random sequence number
|