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

egglang-cli

v0.1.31

Published

Command-line runner for the Egg programming language πŸ₯šπŸ£

Downloads

48

Readme

Egg πŸ₯šπŸ£

Egg is a minimalist, whimsical programming language inspired by eggs and birds , designed to be simple, fun, and easy to extend.

  • Built for the VelociCode challenge, EggLang embraces the prehistoric spirit of the event by treating eggs not just as symbols, but as a full-blown design philosophy. From the syntax (yolk, hatch, carton, crackup) to the underlying mechanics, every part of EggLang is inspired by birds, eggs, and evolutionary fun.

  • Just like life hatching from an egg, every EggLang program begins with a humble yolk (variable), evolves through control flow like loop and shellmatch, and ends with a glorious hatch (output). It's a language that doesn’t just run , it evolves on your terminal, one 🐣 at a time.


Features

  • Variables with yolk (assignment)
  • Pattern matching with shellmatch / case / default
  • Arrays called carton with methods (append, pop, remove)
  • Control flow:
    • Conditional blocks with if/else/endif
    • Loops with loop condition { ... }
  • Functions definition and calls with fun/crackup and lay
  • Built-in utilities (random(), eggtime(), len(), type())
  • File inclusion with incubate filename.egg
  • Simple output via hatch

Getting Started

Requirements

  • Python 3.x
    Install it from python.org or use the instructions below.

    Mac:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    brew install python
    python3 --version

    Windows:

    • Download from: https://www.python.org/downloads/windows/
    • Run the installer and check β€œAdd Python to PATH”
    • Confirm installation:
      python --version
  • Node.js (for the CLI and VSCode extension)
    Get it from nodejs.org or install via terminal:

    Mac:

    brew install node
    node -v
    npm -v

    Windows:

    • Download the LTS version from https://nodejs.org/
    • Run the installer (npm included)
    • Confirm:
      node -v
      npm -v
  • VS Code (to use the extension)

    • Download from: https://code.visualstudio.com/
    • Install relevant extensions from the Extensions Marketplace inside VS Code.

Run Egg Code

  • Install the Egg CLI globally:
npm install -g egglang-cli

Then run any .egg file:

egg run dino.egg

Egg Language Syntax Examples

Variable Assignment

yolk x = 5
yolk greeting = "hello"

Pattern Matching

yolk action = "crack"

shellmatch action
  case "crack":
    hatch "Breaking stuff"
  case "hatch":
    hatch "Output detected"
  default:
    hatch "Unknown behavior"
endshell

Arrays (carton)

# Traditional fixed-size array
carton nest 3
fill nest at 0 with 10
hatch nest at 0  # outputs: 10

# Dynamic array initialization
carton eggs = [1, 2, 3]
eggs.append(4)      # [1, 2, 3, 4]
yolk first = eggs.pop()  # removes 4
eggs.remove(0)      # removes at index 0 β†’ [2, 3]

Control Flow

if-else blocks

yolk x = 10
if x > 5:
    hatch "x is large"
else:
    hatch "x is small"
endif

Loops

yolk i = 0;
loop i < 5 {
    yolk i = i + 1;
}

Functions

Define a function:

crackup say_hello
  hatch "Hello from Egg!"
lay

Call a function:

crackup say_hello

Built-in Functions

  • random(a, b) - random int between a and b

  • eggtime() - current timestamp string

  • len(x) - length of string or list

  • type(x) - type name of value

File Inclusion

  • Use incubate filename.egg to include and run another Egg file.

How It Works (Under the Hood)

  • The interpreter parses and executes Egg code line-by-line

  • Variables are stored in environments (yolk assigns values)

  • Arrays (carton) support:

    • Indexed access (at)

    • Dynamic methods (append, pop, remove)

    • Both fixed-size and dynamic initialization

  • Control flow:

    • if/else/endif blocks

    • loop condition { ... } constructs

  • Pattern matching uses shellmatch blocks

  • Functions are defined as named code blocks and called with crackup

  • Built-in EggTools functions extend language capabilities

  • Simple error handling prints fragile: messages


Example: Complete Egg Script

incubate utils.egg

# Array demo
carton eggs = [1, 2, 3];
eggs.append(4);
hatch len(eggs);  # 4
yolk num1 = eggs.pop();  # removes 4
yolk num2 = eggs.remove(0);  # removes at index 0 β†’ [2, 3]
crackup add
crackup multiply

yolk num = 7
crackup is_even     # prints "Odd"


# Loop demo
yolk i = 0;
loop i < len(eggs) {
    hatch eggs at i
    yolk i = i + 1
}

# Conditional demo
if len(eggs) > 2:
    hatch "Plenty of eggs!"
else:
    hatch "Need more eggs!"
endif

# Function demo
fun greet
    hatch "Hello from an egg function!"
lay

crackup greet

Contributing

Contributions, bug reports, and feature requests are welcome!

  • Fork the repo

  • Create a new branch

  • Submit a pull request


Easter Egg - πŸ₯š Eggspionage: Terminal Cam in ASCII

eggspionage
  • Make sure you have opencv-python and numpy installed.
  • Make sure you have web cam access enabled for vscode.
  • Make sure to resize the terminal for a better experience.
  • Use the slider to scroll to the bottom for current camera frames.
  • By default, the terminal cam will render in base black text mode.
  • Here -c refers to color mode. Use one of r, g, b, m, d. r = red, g = green, b = blue, m = multicolor, d = dino mode πŸ¦–πŸ₯š.

Use VSCode terminal to run eggspionage for best experience.

Example:

eggspionage -c r

Features:

  • πŸ“Έ Live webcam feed rendered in ASCII

  • 🌈 Optional color mode

  • ⌨️ Cross-platform compatibility (macOS, Linux, Windows)

  • 🧠 Automatically scales to your terminal size

  • βœ‚οΈ Gracefully exits on Ctrl+C


Thanks for cracking open Egg! πŸ₯šπŸ£