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

@nguyenhuu/adventofcode

v1.1.5

Published

Advent of Code Runner

Readme

Advent of Code Runner

npm Node.js CI Coverage Status License: MIT Made with Love PRs Welcome

A CLI tool to help you run and test your Advent of Code solutions across different programming languages.

Features

  • 🚀 Run solutions in multiple languages (Python, JavaScript, Java, C++, Golang, Ruby)
  • 🔄 Watch mode for automatic re-runs
  • 🎨 Beautiful terminal UI with spinners and colors
  • 📡 Auto-fetch puzzle inputs
  • 🧪 Test your solutions with sample/real inputs
  • 📊 Track your progress and performance

Installation

You can use the tool in two ways:

Option 1: Using npx (Recommended)

# Run directly without installation
npx @nguyenhuu/adventofcode

# Or with specific command
npx @nguyenhuu/adventofcode --year 2024 --day 1 --part 1 --language python

Option 2: Global Installation

# Install globally
npm install -g @nguyenhuu/adventofcode

# Run the tool
adventofcode

Setup

Save your session cookie into .env file in the root folder:

SESSION=f8fe3ed61...

The session cookie can be found in Developer Tools > Application tab > Cookies > https://adventofcode.com (requires login)

The CLI requires your Advent of Code session token to:

  • Fetch puzzle inputs for your account
  • Display your username and star count
  • Submit your answers to the Advent of Code website

Usage

Basic Examples

# Using npx
npx @nguyenhuu/adventofcode --year 2024 --day 1 --part 1 --language python

# Or with global installation
adventofcode --year 2024 --day 1 --part 1 --language python

Interactive Mode

# Using npx
npx @nguyenhuu/adventofcode

# Or with global installation
adventofcode

# The tool will prompt for missing information:
? Select programming language: (Use arrow keys)
❯ Python 
  Javascript 
  Java 
  C++ 
  Ruby
  Golang
? Select year: 2024
? Select day: 1
? Select part: (Use arrow keys)
❯ Part 1 
  Part 2 

Submitting Solutions

  1. Run your solution
  2. Press u to submit the result
  3. The tool will:
    • Submit your answer
    • Show if it's correct
    • Display your progress

Options

  • -y,--year: The year of the challenge (e.g., 2024)
  • -d,--day: The day of the challenge (1-25)
  • -p,--part: The part of the challenge (1 or 2)
  • -l,--language: Programming language (python, javascript, java, cpp, golang, ruby)
  • -t,--disable-telemetry: Disable anonymous usage tracking
  • -h,--help: Show help information
  • -v,--version: Show version of application

Hotkeys

  • s: Use sample.txt as input
  • i: Use input.txt as input
  • u: Submit the most recent result
  • 1-9: Select part
  • c: Clear terminal
  • q: Quit program
  • x: Terminate solution
  • Enter: Re-run solution
  • h: Show help

Folder Structure

current/
├── 2024/
│   └── day1/
│       ├── sample.txt
│       └── part1.py
└── .env

demo

Telemetry

This application collects anonymous usage data to help improve the user experience. The data collected includes:

  • Event types (execution, submission, input fetch, key press)
  • Basic context (year, day, part, language, input mode)
  • Application version and platform

No personal information is collected. The data is used to:

  • Understand usage patterns
  • Identify common issues
  • Guide future improvements

Opting Out

You can opt out of telemetry in two ways:

  1. Using the command line option: -t or --disable-telemetry

  2. Using an environment variable: DISABLE_TELEMETRY=true

Development

Prerequisites

  • Node.js >= 20
  • pnpm >= 10

Setup

This project uses pnpm for package management. If you haven't installed pnpm yet, you can do so globally with:

npm install -g pnpm

Then, install the project dependencies:

pnpm install
# Clone the repository
git clone https://github.com/nguyenhuuit/adventofcode-runner.git
cd adventofcode-runner

# Install dependencies
pnpm install

# Build the project
pnpm run build

Available Scripts

  • pnpm start: Builds the project and runs the main script.
  • pnpm start:dev: Runs the project in development mode.
  • pnpm lint: Lints the source files.
  • pnpm lint:fix: Lints and fixes issues in the source files.
  • pnpm format: Formats the source files using Prettier.
  • pnpm format:check: Checks if the source files are formatted correctly.
  • pnpm test: Runs the tests using Jest.

Project Structure

src/
├── components/     # React components for UI
├── drivers/        # Language-specific drivers
├── hooks/          # React hooks
└── utils/          # Utility functions

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.