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

clean-zenircbot

v0.0.0

Published

Clean implementation of zenircbot from scratch.

Downloads

4

Readme

Clean ZenIRCBot

Problem: ZenIRCBot needs a full refactor for the following reasons.

  • Terrible tests. The only tests that exist are integration tests, no unit tests.
  • IRC Lib. The current IRC lib is mostly unmaintained with a periodic blind pull-request merges. This has caused headache in the past.
  • Configuration. Basically it sucks, a number of .json.dist files that you have to copy then edit.

Solution: Rewrite it from scratch using very few libraries.

IRC Lib

The file ./lib/parser.js is currently the whole IRC lib that I'm using. It is primative and I plan on moving it out of the repo once it matures. Currently the IRC lib doesn't handle any of the socket stuff. It just expects you to pipe a socket into it.

The lib will probably continue to be purely stream based. Some other modules will be developed on top to turn it into a emitter based, or filtered streams. This allows the core IRC implementation to be simple while also providing a rich and varied API.

Tests

The IRC lib is the only tested portion currently. To extend the parser, you must also add tests proving that the line(s) that it should be dealing with return the right sort of object.

Bot

The file ./lib/bot.js is where the bot currently lives. I plan on leaving the bot there. Instead of using config.json.dist like I do in current ZenIRCBot, the bot will be a binary that gets installed. It will load config from ~/.zenircbot/ or whatever directory is specified on the commandline.

The current implementation is a spike. Mostly a proof that the IRC lib works. Anything that needs to be thrown own or changed to make it testable will be.

Services

I am eschewing all default services. Even admin.js and semantics.js. They will be broken out into their own repos that are separately installable. Services going forward will be akin to the bot, a command that gets installed. This will make the bot seem less language dependant and be, in general, more flexible.