@libp2p/pubsub 1.0.5 → 1.2.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.d.ts +5 -8
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +19 -13
- package/dist/src/index.js.map +1 -1
- package/dist/src/peer-streams.d.ts +7 -6
- package/dist/src/peer-streams.d.ts.map +1 -1
- package/dist/src/peer-streams.js +13 -10
- package/dist/src/peer-streams.js.map +1 -1
- package/package.json +15 -13
- package/src/index.ts +28 -21
- package/src/peer-streams.ts +23 -16
package/dist/src/index.d.ts
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
import debug from 'debug';
|
3
|
-
import { EventEmitter } from 'events';
|
1
|
+
import { EventEmitter } from '@libp2p/interfaces';
|
4
2
|
import Queue from 'p-queue';
|
5
3
|
import { RPC, IRPC } from './message/rpc.js';
|
6
4
|
import { PeerStreams } from './peer-streams.js';
|
@@ -8,8 +6,9 @@ import type { PeerId } from '@libp2p/interfaces/peer-id';
|
|
8
6
|
import type { Registrar, IncomingStreamEvent } from '@libp2p/interfaces/registrar';
|
9
7
|
import type { Connection } from '@libp2p/interfaces/connection';
|
10
8
|
import type BufferList from 'bl';
|
11
|
-
import type { PubSub, Message, StrictNoSign, StrictSign, PubsubOptions } from '@libp2p/interfaces/pubsub';
|
9
|
+
import type { PubSub, Message, StrictNoSign, StrictSign, PubsubOptions, PubsubEvents } from '@libp2p/interfaces/pubsub';
|
12
10
|
import type { Startable } from '@libp2p/interfaces';
|
11
|
+
import type { Logger } from '@libp2p/logger';
|
13
12
|
export interface TopicValidator {
|
14
13
|
(topic: string, message: Message): Promise<void>;
|
15
14
|
}
|
@@ -17,7 +16,7 @@ export interface TopicValidator {
|
|
17
16
|
* PubsubBaseProtocol handles the peers and connections logic for pubsub routers
|
18
17
|
* and specifies the API that pubsub routers should have.
|
19
18
|
*/
|
20
|
-
export declare abstract class PubsubBaseProtocol extends EventEmitter implements PubSub
|
19
|
+
export declare abstract class PubsubBaseProtocol<EventMap> extends EventEmitter<EventMap & PubsubEvents> implements PubSub<EventMap & PubsubEvents>, Startable {
|
21
20
|
peerId: PeerId;
|
22
21
|
started: boolean;
|
23
22
|
/**
|
@@ -53,9 +52,7 @@ export declare abstract class PubsubBaseProtocol extends EventEmitter implements
|
|
53
52
|
topicValidators: Map<string, TopicValidator>;
|
54
53
|
queue: Queue;
|
55
54
|
registrar: Registrar;
|
56
|
-
protected log:
|
57
|
-
err: debug.Debugger;
|
58
|
-
};
|
55
|
+
protected log: Logger;
|
59
56
|
protected multicodecs: string[];
|
60
57
|
protected _libp2p: any;
|
61
58
|
private _registrarId;
|
package/dist/src/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import
|
2
|
-
import { EventEmitter } from '
|
1
|
+
import { logger } from '@libp2p/logger';
|
2
|
+
import { EventEmitter, CustomEvent } from '@libp2p/interfaces';
|
3
3
|
import errcode from 'err-code';
|
4
4
|
import { pipe } from 'it-pipe';
|
5
5
|
import Queue from 'p-queue';
|
@@ -17,9 +17,7 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
17
17
|
constructor(props) {
|
18
18
|
super();
|
19
19
|
const { debugName = 'libp2p:pubsub', multicodecs = [], libp2p = null, globalSignaturePolicy = 'StrictSign', canRelayMessage = false, emitSelf = false, messageProcessingConcurrency = 10 } = props;
|
20
|
-
this.log =
|
21
|
-
err: debug(`${debugName}:error`)
|
22
|
-
});
|
20
|
+
this.log = logger(debugName);
|
23
21
|
this.multicodecs = utils.ensureArray(multicodecs);
|
24
22
|
this._libp2p = libp2p;
|
25
23
|
this.registrar = libp2p.registrar;
|
@@ -54,6 +52,8 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
54
52
|
// register protocol with topology
|
55
53
|
// Topology callbacks called on connection manager changes
|
56
54
|
const topology = new MulticodecTopology({
|
55
|
+
peerStore: this._libp2p.peerStore,
|
56
|
+
connectionManager: this._libp2p.connectionManager,
|
57
57
|
multicodecs: this.multicodecs,
|
58
58
|
handlers: {
|
59
59
|
onConnect: this._onPeerConnected,
|
@@ -110,7 +110,7 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
110
110
|
await peer.attachOutboundStream(stream);
|
111
111
|
}
|
112
112
|
catch (err) {
|
113
|
-
this.log.
|
113
|
+
this.log.error(err);
|
114
114
|
}
|
115
115
|
// Immediately send my own subscriptions to the newly established conn
|
116
116
|
this._sendSubscriptions(idB58Str, Array.from(this.subscriptions), true);
|
@@ -140,7 +140,9 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
140
140
|
protocol
|
141
141
|
});
|
142
142
|
this.peers.set(id, peerStreams);
|
143
|
-
peerStreams.
|
143
|
+
peerStreams.addEventListener('close', () => this._removePeer(peerId), {
|
144
|
+
once: true
|
145
|
+
});
|
144
146
|
return peerStreams;
|
145
147
|
}
|
146
148
|
/**
|
@@ -149,10 +151,10 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
149
151
|
_removePeer(peerId) {
|
150
152
|
const id = peerId.toString();
|
151
153
|
const peerStreams = this.peers.get(id);
|
152
|
-
if (peerStreams == null)
|
154
|
+
if (peerStreams == null) {
|
153
155
|
return;
|
156
|
+
}
|
154
157
|
// close peer streams
|
155
|
-
peerStreams.removeAllListeners();
|
156
158
|
peerStreams.close();
|
157
159
|
// delete peer streams
|
158
160
|
this.log('delete peer', id);
|
@@ -198,7 +200,9 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
198
200
|
subs.forEach((subOpt) => {
|
199
201
|
this._processRpcSubOpt(idB58Str, subOpt);
|
200
202
|
});
|
201
|
-
this.
|
203
|
+
this.dispatchEvent(new CustomEvent('pubsub:subscription-change', {
|
204
|
+
detail: { peerId: peerStreams.id, subscriptions: subs }
|
205
|
+
}));
|
202
206
|
}
|
203
207
|
if (!this._acceptFrom(idB58Str)) {
|
204
208
|
this.log('received message from unacceptable peer %s', idB58Str);
|
@@ -217,7 +221,7 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
217
221
|
await this._processRpcMessage(msg);
|
218
222
|
}
|
219
223
|
catch (err) {
|
220
|
-
this.log.
|
224
|
+
this.log.error(err);
|
221
225
|
}
|
222
226
|
}))
|
223
227
|
.catch(err => this.log(err));
|
@@ -271,7 +275,9 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
271
275
|
_emitMessage(message) {
|
272
276
|
message.topicIDs.forEach((topic) => {
|
273
277
|
if (this.subscriptions.has(topic)) {
|
274
|
-
this.
|
278
|
+
this.dispatchEvent(new CustomEvent(topic, {
|
279
|
+
detail: message
|
280
|
+
}));
|
275
281
|
}
|
276
282
|
});
|
277
283
|
}
|
@@ -319,7 +325,7 @@ export class PubsubBaseProtocol extends EventEmitter {
|
|
319
325
|
const peerStreams = this.peers.get(id);
|
320
326
|
if ((peerStreams == null) || !peerStreams.isWritable) {
|
321
327
|
const msg = `Cannot send RPC to ${id} as there is no open stream to it available`;
|
322
|
-
this.log.
|
328
|
+
this.log.error(msg);
|
323
329
|
return;
|
324
330
|
}
|
325
331
|
peerStreams.write(this._encodeRpc(rpc));
|
package/dist/src/index.js.map
CHANGED
@@ -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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"}
|
@@ -1,8 +1,8 @@
|
|
1
|
-
|
2
|
-
import { EventEmitter } from 'events';
|
1
|
+
import { EventEmitter } from '@libp2p/interfaces';
|
3
2
|
import type { PeerId } from '@libp2p/interfaces/peer-id';
|
4
|
-
import type {
|
3
|
+
import type { Stream } from '@libp2p/interfaces/connection';
|
5
4
|
import type { Pushable } from 'it-pushable';
|
5
|
+
import type { PeerStreamEvents } from '@libp2p/interfaces/pubsub';
|
6
6
|
export interface Options {
|
7
7
|
id: PeerId;
|
8
8
|
protocol: string;
|
@@ -10,7 +10,7 @@ export interface Options {
|
|
10
10
|
/**
|
11
11
|
* Thin wrapper around a peer's inbound / outbound pubsub streams
|
12
12
|
*/
|
13
|
-
export declare class PeerStreams extends EventEmitter {
|
13
|
+
export declare class PeerStreams extends EventEmitter<PeerStreamEvents> {
|
14
14
|
readonly id: PeerId;
|
15
15
|
readonly protocol: string;
|
16
16
|
/**
|
@@ -33,6 +33,7 @@ export declare class PeerStreams extends EventEmitter {
|
|
33
33
|
* An AbortController for controlled shutdown of the inbound stream
|
34
34
|
*/
|
35
35
|
private readonly _inboundAbortController;
|
36
|
+
private closed;
|
36
37
|
constructor(opts: Options);
|
37
38
|
/**
|
38
39
|
* Do we have a connection to read from?
|
@@ -50,11 +51,11 @@ export declare class PeerStreams extends EventEmitter {
|
|
50
51
|
/**
|
51
52
|
* Attach a raw inbound stream and setup a read stream
|
52
53
|
*/
|
53
|
-
attachInboundStream(stream:
|
54
|
+
attachInboundStream(stream: Stream): AsyncIterable<Uint8Array>;
|
54
55
|
/**
|
55
56
|
* Attach a raw outbound stream and setup a write stream
|
56
57
|
*/
|
57
|
-
attachOutboundStream(stream:
|
58
|
+
attachOutboundStream(stream: Stream): Promise<void>;
|
58
59
|
/**
|
59
60
|
* Closes the open connection to peer
|
60
61
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"peer-streams.d.ts","sourceRoot":"","sources":["../../src/peer-streams.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"peer-streams.d.ts","sourceRoot":"","sources":["../../src/peer-streams.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAA;AAK9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAIjE,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAC7D,SAAgB,EAAE,EAAE,MAAM,CAAA;IAC1B,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAChC;;OAEG;IACI,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;IACvD;;OAEG;IACI,aAAa,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;IAC3D;;OAEG;IACH,OAAO,CAAC,kBAAkB,CAAoB;IAC9C;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAoB;IAC7C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAiB;IACzD,OAAO,CAAC,MAAM,CAAS;gBAEV,IAAI,EAAE,OAAO;IAU1B;;OAEG;IACH,IAAI,UAAU,YAEb;IAED;;OAEG;IACH,IAAI,UAAU,YAEb;IAED;;;OAGG;IACH,KAAK,CAAE,IAAI,EAAE,UAAU;IASvB;;OAEG;IACH,mBAAmB,CAAE,MAAM,EAAE,MAAM;IAmBnC;;OAEG;IACG,oBAAoB,CAAE,MAAM,EAAE,MAAM;IAsC1C;;OAEG;IACH,KAAK;CAsBN"}
|
package/dist/src/peer-streams.js
CHANGED
@@ -1,12 +1,10 @@
|
|
1
|
-
import
|
2
|
-
import { EventEmitter } from '
|
1
|
+
import { logger } from '@libp2p/logger';
|
2
|
+
import { EventEmitter, CustomEvent } from '@libp2p/interfaces';
|
3
3
|
import * as lp from 'it-length-prefixed';
|
4
4
|
import { pushable } from 'it-pushable';
|
5
5
|
import { pipe } from 'it-pipe';
|
6
6
|
import { abortableSource } from 'abortable-iterator';
|
7
|
-
const log =
|
8
|
-
error: debug('libp2p-pubsub:peer-streams:err')
|
9
|
-
});
|
7
|
+
const log = logger('libp2p-pubsub:peer-streams');
|
10
8
|
/**
|
11
9
|
* Thin wrapper around a peer's inbound / outbound pubsub streams
|
12
10
|
*/
|
@@ -16,6 +14,7 @@ export class PeerStreams extends EventEmitter {
|
|
16
14
|
this.id = opts.id;
|
17
15
|
this.protocol = opts.protocol;
|
18
16
|
this._inboundAbortController = new AbortController();
|
17
|
+
this.closed = false;
|
19
18
|
}
|
20
19
|
/**
|
21
20
|
* Do we have a connection to read from?
|
@@ -50,7 +49,7 @@ export class PeerStreams extends EventEmitter {
|
|
50
49
|
// - transformed with length-prefix transform
|
51
50
|
this._rawInboundStream = stream;
|
52
51
|
this.inboundStream = abortableSource(pipe(this._rawInboundStream, lp.decode()), this._inboundAbortController.signal, { returnOnAbort: true });
|
53
|
-
this.
|
52
|
+
this.dispatchEvent(new CustomEvent('stream:inbound'));
|
54
53
|
return this.inboundStream;
|
55
54
|
}
|
56
55
|
/**
|
@@ -67,13 +66,13 @@ export class PeerStreams extends EventEmitter {
|
|
67
66
|
this.outboundStream = pushable({
|
68
67
|
onEnd: (shouldEmit) => {
|
69
68
|
// close writable side of the stream
|
70
|
-
if (
|
69
|
+
if (this._rawOutboundStream != null && this._rawOutboundStream.reset != null) { // eslint-disable-line @typescript-eslint/prefer-optional-chain
|
71
70
|
this._rawOutboundStream.reset();
|
72
71
|
}
|
73
72
|
this._rawOutboundStream = undefined;
|
74
73
|
this.outboundStream = undefined;
|
75
74
|
if (shouldEmit != null) {
|
76
|
-
this.
|
75
|
+
this.dispatchEvent(new CustomEvent('close'));
|
77
76
|
}
|
78
77
|
}
|
79
78
|
});
|
@@ -82,13 +81,17 @@ export class PeerStreams extends EventEmitter {
|
|
82
81
|
});
|
83
82
|
// Only emit if the connection is new
|
84
83
|
if (_prevStream == null) {
|
85
|
-
this.
|
84
|
+
this.dispatchEvent(new CustomEvent('stream:outbound'));
|
86
85
|
}
|
87
86
|
}
|
88
87
|
/**
|
89
88
|
* Closes the open connection to peer
|
90
89
|
*/
|
91
90
|
close() {
|
91
|
+
if (this.closed) {
|
92
|
+
return;
|
93
|
+
}
|
94
|
+
this.closed = true;
|
92
95
|
// End the outbound stream
|
93
96
|
if (this.outboundStream != null) {
|
94
97
|
this.outboundStream.end();
|
@@ -101,7 +104,7 @@ export class PeerStreams extends EventEmitter {
|
|
101
104
|
this.outboundStream = undefined;
|
102
105
|
this._rawInboundStream = undefined;
|
103
106
|
this.inboundStream = undefined;
|
104
|
-
this.
|
107
|
+
this.dispatchEvent(new CustomEvent('close'));
|
105
108
|
}
|
106
109
|
}
|
107
110
|
//# sourceMappingURL=peer-streams.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"peer-streams.js","sourceRoot":"","sources":["../../src/peer-streams.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"peer-streams.js","sourceRoot":"","sources":["../../src/peer-streams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAMpD,MAAM,GAAG,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAA;AAOhD;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,YAA8B;IAyB7D,YAAa,IAAa;QACxB,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAE7B,IAAI,CAAC,uBAAuB,GAAG,IAAI,eAAe,EAAE,CAAA;QACpD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACZ,OAAO,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACpC,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACZ,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACrC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAE,IAAgB;QACrB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAA;YAC7B,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAA;SACnD;QAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAE,MAAc;QACjC,yCAAyC;QACzC,yBAAyB;QACzB,8DAA8D;QAC9D,6CAA6C;QAC7C,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAA;QAC/B,IAAI,CAAC,aAAa,GAAG,eAAe,CAClC,IAAI,CACF,IAAI,CAAC,iBAAiB,EACtB,EAAE,CAAC,MAAM,EAAE,CACZ,EACD,IAAI,CAAC,uBAAuB,CAAC,MAAM,EACnC,EAAE,aAAa,EAAE,IAAI,EAAE,CACxB,CAAA;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAA;QACrD,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAE,MAAc;QACxC,wDAAwD;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAA;QACvC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAC/B,gDAAgD;YAChD,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAA;SAChC;QAED,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAA;QAChC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;YAC7B,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE;gBACpB,oCAAoC;gBACpC,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,+DAA+D;oBAC7I,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAA;iBAChC;gBAED,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAA;gBACnC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;gBAC/B,IAAI,UAAU,IAAI,IAAI,EAAE;oBACtB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;iBAC7C;YACH,CAAC;SACF,CAAC,CAAA;QAEF,IAAI,CACF,IAAI,CAAC,cAAc,EACnB,EAAE,CAAC,MAAM,EAAE,EACX,IAAI,CAAC,kBAAkB,CACxB,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YACrB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;QAEF,qCAAqC;QACrC,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAA;SACvD;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAM;SACP;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAElB,0BAA0B;QAC1B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAC/B,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAA;SAC1B;QACD,yBAAyB;QACzB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;YAC9B,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAA;SACrC;QAED,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAA;QACnC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;QAC/B,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAA;QAClC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;QAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9C,CAAC;CACF"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@libp2p/pubsub",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.2.1",
|
4
4
|
"description": "libp2p pubsub base class",
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-pubsub#readme",
|
@@ -52,6 +52,14 @@
|
|
52
52
|
"import": "./dist/src/errors.js",
|
53
53
|
"types": "./dist/src/errors.d.ts"
|
54
54
|
},
|
55
|
+
"./message/rpc": {
|
56
|
+
"import": "./dist/src/message/rpc.js",
|
57
|
+
"types": "./dist/src/message/rpc.d.ts"
|
58
|
+
},
|
59
|
+
"./message/topic-descriptor": {
|
60
|
+
"import": "./dist/src/message/topic-descriptor.js",
|
61
|
+
"types": "./dist/src/message/topic-descriptor.d.ts"
|
62
|
+
},
|
55
63
|
"./peer-streams": {
|
56
64
|
"import": "./dist/src/peer-streams.js",
|
57
65
|
"types": "./dist/src/peer-streams.d.ts"
|
@@ -63,14 +71,6 @@
|
|
63
71
|
"./utils": {
|
64
72
|
"import": "./dist/src/utils.js",
|
65
73
|
"types": "./dist/src/utils.d.ts"
|
66
|
-
},
|
67
|
-
"./message/rpc": {
|
68
|
-
"import": "./dist/src/message/rpc.js",
|
69
|
-
"types": "./dist/src/message/rpc.d.ts"
|
70
|
-
},
|
71
|
-
"./message/topic-descriptor": {
|
72
|
-
"import": "./dist/src/message/topic-descriptor.js",
|
73
|
-
"types": "./dist/src/message/topic-descriptor.d.ts"
|
74
74
|
}
|
75
75
|
},
|
76
76
|
"eslintConfig": {
|
@@ -166,11 +166,11 @@
|
|
166
166
|
},
|
167
167
|
"scripts": {
|
168
168
|
"lint": "aegir lint",
|
169
|
-
"dep-check": "aegir dep-check dist/src/**/*.js",
|
169
|
+
"dep-check": "aegir dep-check dist/src/**/*.js dist/test/**/*.js",
|
170
170
|
"build": "tsc",
|
171
171
|
"postbuild": "npm run build:copy-proto-files",
|
172
172
|
"pretest": "npm run build",
|
173
|
-
"test": "aegir test -f ./dist/test/**/*.js",
|
173
|
+
"test": "aegir test -f ./dist/test/*.js -f ./dist/test/**/*.js",
|
174
174
|
"test:chrome": "npm run test -- -t browser",
|
175
175
|
"test:chrome-webworker": "npm run test -- -t webworker",
|
176
176
|
"test:firefox": "npm run test -- -t browser -- --browser firefox",
|
@@ -188,11 +188,11 @@
|
|
188
188
|
"dependencies": {
|
189
189
|
"@libp2p/crypto": "^0.22.2",
|
190
190
|
"@libp2p/interfaces": "^1.0.0",
|
191
|
+
"@libp2p/logger": "^1.0.1",
|
191
192
|
"@libp2p/peer-id": "^1.0.0",
|
192
193
|
"@libp2p/peer-id-factory": "^1.0.0",
|
193
194
|
"@libp2p/topology": "^1.0.0",
|
194
195
|
"@multiformats/multiaddr": "^10.1.1",
|
195
|
-
"debug": "^4.3.2",
|
196
196
|
"err-code": "^3.0.1",
|
197
197
|
"iso-random-stream": "^2.0.0",
|
198
198
|
"it-length-prefixed": "^6.0.1",
|
@@ -203,8 +203,10 @@
|
|
203
203
|
},
|
204
204
|
"devDependencies": {
|
205
205
|
"@types/bl": "^5.0.2",
|
206
|
-
"
|
206
|
+
"abortable-iterator": "^4.0.2",
|
207
207
|
"aegir": "^36.1.3",
|
208
|
+
"it-pair": "^2.0.2",
|
209
|
+
"it-pushable": "^2.0.1",
|
208
210
|
"protobufjs": "^6.10.2",
|
209
211
|
"util": "^0.12.4"
|
210
212
|
}
|
package/src/index.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import
|
2
|
-
import { EventEmitter } from '
|
1
|
+
import { logger } from '@libp2p/logger'
|
2
|
+
import { EventEmitter, CustomEvent } from '@libp2p/interfaces'
|
3
3
|
import errcode from 'err-code'
|
4
4
|
import { pipe } from 'it-pipe'
|
5
5
|
import Queue from 'p-queue'
|
@@ -8,16 +8,17 @@ import { codes } from './errors.js'
|
|
8
8
|
import { RPC, IRPC } from './message/rpc.js'
|
9
9
|
import { PeerStreams } from './peer-streams.js'
|
10
10
|
import * as utils from './utils.js'
|
11
|
-
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
12
|
-
import type { Registrar, IncomingStreamEvent } from '@libp2p/interfaces/registrar'
|
13
|
-
import type { Connection } from '@libp2p/interfaces/connection'
|
14
|
-
import type BufferList from 'bl'
|
15
11
|
import {
|
16
12
|
signMessage,
|
17
13
|
verifySignature
|
18
14
|
} from './message/sign.js'
|
19
|
-
import type {
|
15
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
16
|
+
import type { Registrar, IncomingStreamEvent } from '@libp2p/interfaces/registrar'
|
17
|
+
import type { Connection } from '@libp2p/interfaces/connection'
|
18
|
+
import type BufferList from 'bl'
|
19
|
+
import type { PubSub, Message, StrictNoSign, StrictSign, PubsubOptions, PubsubEvents } from '@libp2p/interfaces/pubsub'
|
20
20
|
import type { Startable } from '@libp2p/interfaces'
|
21
|
+
import type { Logger } from '@libp2p/logger'
|
21
22
|
|
22
23
|
export interface TopicValidator { (topic: string, message: Message): Promise<void> }
|
23
24
|
|
@@ -25,7 +26,7 @@ export interface TopicValidator { (topic: string, message: Message): Promise<voi
|
|
25
26
|
* PubsubBaseProtocol handles the peers and connections logic for pubsub routers
|
26
27
|
* and specifies the API that pubsub routers should have.
|
27
28
|
*/
|
28
|
-
export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub
|
29
|
+
export abstract class PubsubBaseProtocol<EventMap> extends EventEmitter<EventMap & PubsubEvents> implements PubSub<EventMap & PubsubEvents>, Startable {
|
29
30
|
public peerId: PeerId
|
30
31
|
public started: boolean
|
31
32
|
/**
|
@@ -62,7 +63,7 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
62
63
|
public queue: Queue
|
63
64
|
public registrar: Registrar
|
64
65
|
|
65
|
-
protected log:
|
66
|
+
protected log: Logger
|
66
67
|
protected multicodecs: string[]
|
67
68
|
protected _libp2p: any
|
68
69
|
private _registrarId: string | undefined
|
@@ -80,10 +81,7 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
80
81
|
messageProcessingConcurrency = 10
|
81
82
|
} = props
|
82
83
|
|
83
|
-
this.log =
|
84
|
-
err: debug(`${debugName}:error`)
|
85
|
-
})
|
86
|
-
|
84
|
+
this.log = logger(debugName)
|
87
85
|
this.multicodecs = utils.ensureArray(multicodecs)
|
88
86
|
this._libp2p = libp2p
|
89
87
|
this.registrar = libp2p.registrar
|
@@ -124,6 +122,8 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
124
122
|
// register protocol with topology
|
125
123
|
// Topology callbacks called on connection manager changes
|
126
124
|
const topology = new MulticodecTopology({
|
125
|
+
peerStore: this._libp2p.peerStore,
|
126
|
+
connectionManager: this._libp2p.connectionManager,
|
127
127
|
multicodecs: this.multicodecs,
|
128
128
|
handlers: {
|
129
129
|
onConnect: this._onPeerConnected,
|
@@ -189,7 +189,7 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
189
189
|
const peer = this._addPeer(peerId, protocol)
|
190
190
|
await peer.attachOutboundStream(stream)
|
191
191
|
} catch (err: any) {
|
192
|
-
this.log.
|
192
|
+
this.log.error(err)
|
193
193
|
}
|
194
194
|
|
195
195
|
// Immediately send my own subscriptions to the newly established conn
|
@@ -227,7 +227,9 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
227
227
|
})
|
228
228
|
|
229
229
|
this.peers.set(id, peerStreams)
|
230
|
-
peerStreams.
|
230
|
+
peerStreams.addEventListener('close', () => this._removePeer(peerId), {
|
231
|
+
once: true
|
232
|
+
})
|
231
233
|
|
232
234
|
return peerStreams
|
233
235
|
}
|
@@ -238,10 +240,11 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
238
240
|
protected _removePeer (peerId: PeerId) {
|
239
241
|
const id = peerId.toString()
|
240
242
|
const peerStreams = this.peers.get(id)
|
241
|
-
if (peerStreams == null)
|
243
|
+
if (peerStreams == null) {
|
244
|
+
return
|
245
|
+
}
|
242
246
|
|
243
247
|
// close peer streams
|
244
|
-
peerStreams.removeAllListeners()
|
245
248
|
peerStreams.close()
|
246
249
|
|
247
250
|
// delete peer streams
|
@@ -297,7 +300,9 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
297
300
|
subs.forEach((subOpt) => {
|
298
301
|
this._processRpcSubOpt(idB58Str, subOpt)
|
299
302
|
})
|
300
|
-
this.
|
303
|
+
this.dispatchEvent(new CustomEvent('pubsub:subscription-change', {
|
304
|
+
detail: { peerId: peerStreams.id, subscriptions: subs }
|
305
|
+
}))
|
301
306
|
}
|
302
307
|
|
303
308
|
if (!this._acceptFrom(idB58Str)) {
|
@@ -320,7 +325,7 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
320
325
|
|
321
326
|
await this._processRpcMessage(msg)
|
322
327
|
} catch (err: any) {
|
323
|
-
this.log.
|
328
|
+
this.log.error(err)
|
324
329
|
}
|
325
330
|
}))
|
326
331
|
.catch(err => this.log(err))
|
@@ -381,7 +386,9 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
381
386
|
_emitMessage (message: Message) {
|
382
387
|
message.topicIDs.forEach((topic) => {
|
383
388
|
if (this.subscriptions.has(topic)) {
|
384
|
-
this.
|
389
|
+
this.dispatchEvent(new CustomEvent(topic, {
|
390
|
+
detail: message
|
391
|
+
}))
|
385
392
|
}
|
386
393
|
})
|
387
394
|
}
|
@@ -435,7 +442,7 @@ export abstract class PubsubBaseProtocol extends EventEmitter implements PubSub,
|
|
435
442
|
if ((peerStreams == null) || !peerStreams.isWritable) {
|
436
443
|
const msg = `Cannot send RPC to ${id} as there is no open stream to it available`
|
437
444
|
|
438
|
-
this.log.
|
445
|
+
this.log.error(msg)
|
439
446
|
return
|
440
447
|
}
|
441
448
|
peerStreams.write(this._encodeRpc(rpc))
|
package/src/peer-streams.ts
CHANGED
@@ -1,16 +1,15 @@
|
|
1
|
-
import
|
2
|
-
import { EventEmitter } from '
|
1
|
+
import { logger } from '@libp2p/logger'
|
2
|
+
import { EventEmitter, CustomEvent } from '@libp2p/interfaces'
|
3
3
|
import * as lp from 'it-length-prefixed'
|
4
4
|
import { pushable } from 'it-pushable'
|
5
5
|
import { pipe } from 'it-pipe'
|
6
6
|
import { abortableSource } from 'abortable-iterator'
|
7
7
|
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
8
|
-
import type {
|
8
|
+
import type { Stream } from '@libp2p/interfaces/connection'
|
9
9
|
import type { Pushable } from 'it-pushable'
|
10
|
+
import type { PeerStreamEvents } from '@libp2p/interfaces/pubsub'
|
10
11
|
|
11
|
-
const log =
|
12
|
-
error: debug('libp2p-pubsub:peer-streams:err')
|
13
|
-
})
|
12
|
+
const log = logger('libp2p-pubsub:peer-streams')
|
14
13
|
|
15
14
|
export interface Options {
|
16
15
|
id: PeerId
|
@@ -20,7 +19,7 @@ export interface Options {
|
|
20
19
|
/**
|
21
20
|
* Thin wrapper around a peer's inbound / outbound pubsub streams
|
22
21
|
*/
|
23
|
-
export class PeerStreams extends EventEmitter {
|
22
|
+
export class PeerStreams extends EventEmitter<PeerStreamEvents> {
|
24
23
|
public readonly id: PeerId
|
25
24
|
public readonly protocol: string
|
26
25
|
/**
|
@@ -34,15 +33,16 @@ export class PeerStreams extends EventEmitter {
|
|
34
33
|
/**
|
35
34
|
* The raw outbound stream, as retrieved from conn.newStream
|
36
35
|
*/
|
37
|
-
private _rawOutboundStream:
|
36
|
+
private _rawOutboundStream: Stream | undefined
|
38
37
|
/**
|
39
38
|
* The raw inbound stream, as retrieved from the callback from libp2p.handle
|
40
39
|
*/
|
41
|
-
private _rawInboundStream:
|
40
|
+
private _rawInboundStream: Stream | undefined
|
42
41
|
/**
|
43
42
|
* An AbortController for controlled shutdown of the inbound stream
|
44
43
|
*/
|
45
44
|
private readonly _inboundAbortController: AbortController
|
45
|
+
private closed: boolean
|
46
46
|
|
47
47
|
constructor (opts: Options) {
|
48
48
|
super()
|
@@ -51,6 +51,7 @@ export class PeerStreams extends EventEmitter {
|
|
51
51
|
this.protocol = opts.protocol
|
52
52
|
|
53
53
|
this._inboundAbortController = new AbortController()
|
54
|
+
this.closed = false
|
54
55
|
}
|
55
56
|
|
56
57
|
/**
|
@@ -83,7 +84,7 @@ export class PeerStreams extends EventEmitter {
|
|
83
84
|
/**
|
84
85
|
* Attach a raw inbound stream and setup a read stream
|
85
86
|
*/
|
86
|
-
attachInboundStream (stream:
|
87
|
+
attachInboundStream (stream: Stream) {
|
87
88
|
// Create and attach a new inbound stream
|
88
89
|
// The inbound stream is:
|
89
90
|
// - abortable, set to only return on abort, rather than throw
|
@@ -98,14 +99,14 @@ export class PeerStreams extends EventEmitter {
|
|
98
99
|
{ returnOnAbort: true }
|
99
100
|
)
|
100
101
|
|
101
|
-
this.
|
102
|
+
this.dispatchEvent(new CustomEvent('stream:inbound'))
|
102
103
|
return this.inboundStream
|
103
104
|
}
|
104
105
|
|
105
106
|
/**
|
106
107
|
* Attach a raw outbound stream and setup a write stream
|
107
108
|
*/
|
108
|
-
async attachOutboundStream (stream:
|
109
|
+
async attachOutboundStream (stream: Stream) {
|
109
110
|
// If an outbound stream already exists, gently close it
|
110
111
|
const _prevStream = this.outboundStream
|
111
112
|
if (this.outboundStream != null) {
|
@@ -117,14 +118,14 @@ export class PeerStreams extends EventEmitter {
|
|
117
118
|
this.outboundStream = pushable({
|
118
119
|
onEnd: (shouldEmit) => {
|
119
120
|
// close writable side of the stream
|
120
|
-
if (
|
121
|
+
if (this._rawOutboundStream != null && this._rawOutboundStream.reset != null) { // eslint-disable-line @typescript-eslint/prefer-optional-chain
|
121
122
|
this._rawOutboundStream.reset()
|
122
123
|
}
|
123
124
|
|
124
125
|
this._rawOutboundStream = undefined
|
125
126
|
this.outboundStream = undefined
|
126
127
|
if (shouldEmit != null) {
|
127
|
-
this.
|
128
|
+
this.dispatchEvent(new CustomEvent('close'))
|
128
129
|
}
|
129
130
|
}
|
130
131
|
})
|
@@ -139,7 +140,7 @@ export class PeerStreams extends EventEmitter {
|
|
139
140
|
|
140
141
|
// Only emit if the connection is new
|
141
142
|
if (_prevStream == null) {
|
142
|
-
this.
|
143
|
+
this.dispatchEvent(new CustomEvent('stream:outbound'))
|
143
144
|
}
|
144
145
|
}
|
145
146
|
|
@@ -147,6 +148,12 @@ export class PeerStreams extends EventEmitter {
|
|
147
148
|
* Closes the open connection to peer
|
148
149
|
*/
|
149
150
|
close () {
|
151
|
+
if (this.closed) {
|
152
|
+
return
|
153
|
+
}
|
154
|
+
|
155
|
+
this.closed = true
|
156
|
+
|
150
157
|
// End the outbound stream
|
151
158
|
if (this.outboundStream != null) {
|
152
159
|
this.outboundStream.end()
|
@@ -160,6 +167,6 @@ export class PeerStreams extends EventEmitter {
|
|
160
167
|
this.outboundStream = undefined
|
161
168
|
this._rawInboundStream = undefined
|
162
169
|
this.inboundStream = undefined
|
163
|
-
this.
|
170
|
+
this.dispatchEvent(new CustomEvent('close'))
|
164
171
|
}
|
165
172
|
}
|