fix: demand pubsub subclass instead of pubsub instance (#922)

Changes the `Libp2pModules.pubsub` property to be a class that maybe
extends `PubsubBaseProtocol` instead of an instance of that class.
This commit is contained in:
Alex Potsides 2021-04-21 13:55:21 +01:00 committed by GitHub
parent cc1f4af879
commit 086b0ec0df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 3 deletions

View File

@ -107,7 +107,7 @@ const { updateSelfPeerRecord } = require('./record/utils')
* @property {PeerRoutingModule[]} [peerRouting]
* @property {ContentRoutingModule[]} [contentRouting]
* @property {Object} [dht]
* @property {Pubsub} [pubsub]
* @property {{new(...args: any[]): Pubsub}} [pubsub]
* @property {Protector} [connProtector]
*
* @typedef {Object} Libp2pOptions

View File

@ -7,12 +7,13 @@
*/
/**
* @param {import("libp2p-interfaces/src/pubsub")} PubsubRouter
* @param {{new(...args: any[]): PubsubRouter}} PubsubRouter
* @param {import('.')} libp2p
* @param {{ enabled: boolean; } & import(".").PubsubLocalOptions & import("libp2p-interfaces/src/pubsub").PubsubOptions} options
*/
function pubsubAdapter (PubsubRouter, libp2p, options) {
// @ts-ignore Pubsub constructor type not defined
/** @type {PubsubRouter & { _subscribeAdapter: PubsubRouter['subscribe'], _unsubscribeAdapter: PubsubRouter['unsubscribe'] }} */
// @ts-ignore we set the extra _subscribeAdapter and _unsubscribeAdapter properties afterwards
const pubsub = new PubsubRouter(libp2p, options)
pubsub._subscribeAdapter = pubsub.subscribe
pubsub._unsubscribeAdapter = pubsub.unsubscribe