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 🙏

© 2024 – Pkg Stats / Ryan Hefner

undirected-ordered-unchunked-qr-channel

v0.8.0

Published

> The peers start by displaying a "broadcast" message with no read receipt and once they meet each other, exchange messages and read receipts. > The peers always assume the one counterparty they met first is the only other peer in the line of sight and er

Downloads

10

Readme

UndirectedOrderedUnchunkedChannel

The peers start by displaying a "broadcast" message with no read receipt and once they meet each other, exchange messages and read receipts. The peers always assume the one counterparty they met first is the only other peer in the line of sight and error on meeting new peers.

The channel is undirected, so the read receipts do not have recipient names on them, a sole counterpart is assumed and expected.

The channel is ordered, so the sequential order of the received messages is verified and enforced, erroring on irregularities.

The channel is unchunked, so the entirety of the passed-in message is displayed in the QR code alongside the protocol metadata.

Building

parcel build index.ts --target=node

Contributing

Protocol Metadata Structure

`${name}|${number}|${counterpartyNumber}|${message}`

Flow Example

  • A shows A|1||Hello from A and scans
  • B shows B|1||Hi from B and scans
  • B sees A|1||Hello from A and processes it
  • B knows A haven't seen any of it's messages yet because it lacks counterpartyNumber
  • B shows B|1|1|Hello from B letting A know it saw its message (by adding read receipt)
  • If B sees A's missing counterpartyNumber it knows it already shows the read receipt
  • A sees B|1|1|Hello from B and processes it
  • A knows B has seen A|1||Hello from A and so switches to A|2|1|Next from A with RR
  • If A sees B's counterpartyNumber=1 again it ignores it as it already shows the RR
  • And so on…

Testing

With one device:

  • Open two tabs side by side:
    • index.html#A
    • index.html#B
  • Alternate the webcam between the QR codes in the two tabs (use an external webcam and hold it or sit the device in front of a mirror)
  • Observe as messages are exchanged and acknowledged

With two devices:

  • Position the two devices against one another
  • Tweak their tilt angle so that they see each other's QR codes
  • Observe as messages are exchanged and acknowledged

Publishing

  • Bump version in package.json
  • Document changes in CHANGELOG.md
  • Update contents of README.md
  • Verify npm whoami or npm login if needed
  • npm publish