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

js2p

v0.7.870

Published

To see a better formatted, more frequently updated version of this, please visit [docs.p2p.today](https://docs.p2p.today), or for the develop branch, [dev-docs.p2p.today](https://dev-docs.p2p.today).

Readme

To see a better formatted, more frequently updated version of this, please visit docs.p2p.today, or for the develop branch, dev-docs.p2p.today.

Current build status:

shippable travis appveyor codeclimate codecov

waffleio_queued waffleio_in_progress waffleio_in_review

Goal

We are trying to make peer-to-peer networking easy. Right now there's very few libraries which allow multiple languages to use the same distributed network.

We're aiming to fix that.

What We Have

There are several projects in the work right now. Several of these could be considered stable, but we're going to operate under the "beta" label for some time now.

Base Network Structures

All of our networks will be built on common base classes. Because of this, we can guarantee some network features.

  1. Networks will have as much common codebase as possible
  2. Networks will have opportunistic compression across the board
  3. Node IDs will be generated in a consistent manner
  4. Command codes will be consistent across network types

Mesh Network

This is our unorganized network. It operates under three simple rules:

  1. The first node to broadcast sends the message to all its peers
  2. Each node which receives a message relays the message to each of its peers, except the node which sent it to them
  3. Nodes do not relay a message they have seen before

Using these principles you can create a messaging network which scales linearly with the number of nodes.

Currently there is an implementation in Python and Javascript. More tractable documentation can be found in their tutorial sections. For a more in-depth explanation you can see it's specifications or this slideshow.

Sync Table

This is an extension of the above network. It inherits all of the message sending properties, while also syncronizing a local dictionary-like object.

The only limitation is that it can only have string-like keys. There is also an optional "leasing" system, which is enabled by default. This means that a user can own a particular key for a period of time.

Currently there is an implementation in Python and Javascript. More tractable documentation can be found in their tutorial sections. Protocol specifications are in progress.

Chord Table

This is a type of distributed hash table based on an MIT paper which defined it.

The idea is that you can use this as a dictionary-like object. The only limitation is that it can only have string-like keys. It uses five separate hash tables for hash collision avoidance and data backup in case a node unexpectedly exits.

Currently there is an implementation in Python and Javascript. More tractable documentation can be found in their tutorial sections. Protocol specifications are in progress.

Contributing, Credits, and Licenses

Contributors are always welcome! Information on how you can help is located on the Contributing page.

Credits and License are located on their own page.

Donate

Bitcoin: 1BwVXxPj9JSEUoAx3HvcNjjJTHb2qsyjUr

Ethereum: 0x0eb3BD61f48959662AC9411E5A2EC71aC845B687