From 086b0ec0df2fac93845d0a0a6b2e2464e869afcd Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Wed, 21 Apr 2021 13:55:21 +0100 Subject: [PATCH] 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. --- src/index.js | 2 +- src/pubsub-adapter.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/index.js b/src/index.js index 4d063be9..5e573b25 100644 --- a/src/index.js +++ b/src/index.js @@ -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 diff --git a/src/pubsub-adapter.js b/src/pubsub-adapter.js index e965ab5c..8ccbf90f 100644 --- a/src/pubsub-adapter.js +++ b/src/pubsub-adapter.js @@ -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