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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@rachel-mp4/lrcproto

v1.3.1

Published

protobuf definitions for LRC

Readme

@rachel-mp4/lrcproto

This repository defines the LRC protocol message schema using Protocol Buffers and provides generated code for both TypeScript and Go.

Generation

these may work idrk

Typescript

npx protoc \
  --ts_out gen/ts \
  --proto_path . \
  lrc.proto

Go

protoc --go_out=gen/go --go_opt=paths=source_relative lrc.proto

Swift

protoc --swift_out=./gen/swift lrc.proto

Installation

TypeScript

npm install @rachel-mp4/lrcproto

Go

import "github.com/rachel.mp4/lrcproto/gen/go"

Schema

When implemented in a websocket, LRC communication occurs by sending Events, which in LRC 1.0 can be of 14 types. Their semantics may differ slightly if they are sent from client -> server or server -> client

Ping   #Requests a Pong

Pong   #Response to a Ping

Init   #Initializes my message (client -> server)
       #or declares that a message was initialized (server -> client)
Pub    #Publishes my message (client -> server)
       #or declares that a message was published (server -> client)
Insert #Inserts a string at a given byte offset 

Delete #Deletes the bytes between two offsets

Mute   #Requests the server stop relaying events from a user

Unmute #Requests the server start relaying events from a user

Set    #Sets my metadata

Get    #Requests the included fields from the server (client -> server)
       #or provides it to the client (server -> client)
Kick   #Requests to kick a user

Hug    #Hugs a user

Ban    #Requests to ban a user

Unban  #Requests to unban a user

The LRC protocol does not inherently determine how Mute, Unmute, Kick, Ban and Unban should be implemented. ExternalID and Secret fields allow for some form of verification of identity, which can occur outside of the protocol.

License

MIT