diff --git a/packages/libp2p/src/index.ts b/packages/libp2p/src/index.ts index fde1a69ed1..edb2dccd33 100644 --- a/packages/libp2p/src/index.ts +++ b/packages/libp2p/src/index.ts @@ -92,45 +92,45 @@ export interface Libp2pInit { /** * Transports are low-level communication channels */ - transports?: Array<(components: Components) => Transport> + transports?: Array<(components: Components & T) => Transport> /** * Stream muxers allow the creation of many data streams over a single * connection. */ - streamMuxers?: Array<(components: Components) => StreamMuxerFactory> + streamMuxers?: Array<(components: Components & T) => StreamMuxerFactory> /** * Connection encrypters ensure that data sent over connections cannot be * eavesdropped on, and that the remote peer possesses the private key that * corresponds to the public key that it's Peer ID is derived from. */ - connectionEncrypters?: Array<(components: Components) => ConnectionEncrypter> + connectionEncrypters?: Array<(components: Components & T) => ConnectionEncrypter> /** * Peer discovery mechanisms allow finding peers on the network */ - peerDiscovery?: Array<(components: Components) => PeerDiscovery> + peerDiscovery?: Array<(components: Components & T) => PeerDiscovery> /** * Peer routers provide implementations for peer routing queries */ - peerRouters?: Array<(components: Components) => PeerRouting> + peerRouters?: Array<(components: Components & T) => PeerRouting> /** * Content routers provide implementations for content routing queries */ - contentRouters?: Array<(components: Components) => ContentRouting> + contentRouters?: Array<(components: Components & T) => ContentRouting> /** * A Metrics implementation can be supplied to collect metrics on this node */ - metrics?(components: Components): Metrics + metrics?(components: Components & T): Metrics /** * A ConnectionProtector can be used to create a secure overlay on top of the network using pre-shared keys */ - connectionProtector?(components: Components): ConnectionProtector + connectionProtector?(components: Components & T): ConnectionProtector /** * Arbitrary libp2p modules diff --git a/packages/libp2p/src/libp2p.ts b/packages/libp2p/src/libp2p.ts index 4d6b62ba82..fdc1a6febb 100644 --- a/packages/libp2p/src/libp2p.ts +++ b/packages/libp2p/src/libp2p.ts @@ -109,6 +109,7 @@ export class Libp2p extends TypedEventEmitter // Set up connection protector if configured if (init.connectionProtector != null) { + // @ts-expect-error defaultComponents is missing service component types added later this.configureComponent('connectionProtector', init.connectionProtector(components)) }