npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@tgbc/ping

v1.0.11

Published

A libp2p service for ping protocol

Readme

Protocol Grouper Service

ProtocolGrouperService is a service for the libp2p framework that helps to group peers by the protocols they support. It also allows you to retrieve peers by protocol and retrieve protocols supported by a specific peer. This service is particularly useful in networking applications where protocol-based peer grouping and management is required.

Features

  • Peer Grouping by Protocol: Maintains a map of protocols and the peers that support them.
  • Protocol Management for Peers: Tracks the protocols each peer supports.
  • Event Emitter: Emits events when a new protocol is added to a peer.

Installation

To install the ProtocolGrouperService, use npm:

npm install @tgbc/protocol-grouper

Usage

Importing the Module

import { protocolGrouper } from '@tgbc/protocol-grouper';
import { createLibp2p } from 'libp2p';

Creating an Instance

Create an instance of ProtocolGrouperService and integrate it into a libp2p node:

const node = await createLibp2p({
  // other libp2p configurations
  services: {
    protocolGrouper: protocolGrouper()
  }
});

Subscribing to Events

You can subscribe to the 'protocolGrouper:add' event to listen for new protocol additions:

node.addEventListener('protocolGrouper:add', (event) => {
  const { peerId, protocol } = event.detail;
  console.log(`Protocol ${protocol} added to peer ${peerId}`);
});

Methods

getPeers(protocol: string): PeerId[]

Returns a list of peer IDs that support the given protocol.

const peers = node.services.protocolGrouper.getPeers('/ipfs/id/1.0.0');
console.log('Peers supporting /ipfs/id/1.0.0:', peers.map((peer) => peer.toString()));

getProtocols(peerId: string): string[]

Returns a list of protocols supported by the given peer.

const protocols = node.services.protocolGrouper.getProtocols('12D3KooW...');
console.log('Protocols supported by peer:', protocols);

Events

The ProtocolGrouperService emits the following event:

  • protocolGrouper:add: Triggered when a new protocol is added to a peer. The event includes peerId and protocol in its detail.

License

This module is licensed under the ISC License.