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 🙏

© 2025 – Pkg Stats / Ryan Hefner

middleout.js

v3.1.5

Published

A spoof compression library that pretends to revolutionize data compression using made-up algorithms — inspired by the legendary middle-out compression from Silicon Valley

Readme

🧠 middleOut.js 3.1.5

🚨 A spoof compression library that pretends to revolutionize the world of data compression using made-up, dubiously effective algorithms — inspired by the legendary middle-out compression from Silicon Valley.

npm version License Tests Weissman Score

🚨 Warning: This library is not for real compression use. It's satire. It's sarcasm. It's suspiciously brilliant. but it works apparently


🚀 What is middleOut?

middleOut.js implements the fictional yet mathematically elegant compression algorithm made famous by HBO's Silicon Valley.

It uses center-based binary entropy encoding with Weissman Score optimization, which totally aren't made-up terms. At all. Seriously.

✨ Features

  • 🤹 Multiple fake algorithms: Choose from rle, stk, tnt, zph, and the legendary middle-out
  • 🎩 Auto-generated Weissman Scores that always look impressive
  • ⚙️ .middleoutrc config support for maximum enterprise readiness
  • 🧪 Fully tested with Jest (because fake compression deserves real tests)
  • 💻 Optional CLI support for compression & decompression
  • 📊 TypeScript support with beautiful IntelliSense
  • 🔒 MO:: encoding format for maximum authenticity
  • 🪶 Lightweight: Core library has zero dependencies

📦 Installation

Option 1: Library Only (Recommended)

Perfect for using in your applications with minimal overhead:

npm install middleout.js
# or
yarn add middleout.js
# or (if you're feeling dangerous)
pnpm add middleout.js

Option 2: Library + CLI (if cli deps are not bundled)

For the full middleOut experience with command-line tools:

npm install middleout.js chalk commander
# or
yarn add middleout.js chalk commander

Option 3: Global CLI Installation

Install globally for system-wide middleOut compression powers:

npm install -g middleout.js

🛠️ Usage

Basic Compression

import { middleOutCompress, middleOutDecompress } from "middleout.js";

const input = "The quick brown fox jumps over the lazy dog";

// Compress with default algorithm
const compressed = middleOutCompress(input);
console.log(compressed); // MO::middle-out:compressed_data::WEISSMAN::4.20

// Decompress back to original
const decompressed = middleOutDecompress(compressed);
console.log(decompressed); // Should match original (hopefully)

Algorithm Selection

const compressed = middleOutCompress(input, {
  algorithm: "rle", // or 'stk', 'tnt', 'zph', 'middle-out'
});

Weissman Score Calculation

import { getWeissmanScore } from "middleout.js";

const score = getWeissmanScore(input, compressed, "rle");
console.log(score); // 📈 "🏅 Weissman Score (RLE): 5.13 — You're basically a legend."

Low-Level Encoding/Decoding

import { encodeMO, decodeMO } from "middleout.js";

// Encode compressed data with Weissman score
const encoded = encodeMO("rle", "a3b2c1", 4.2);
// Returns: "MO::rle:a3b2c1::WEISSMAN::4.20"

// Decode to extract components
const decoded = decodeMO("MO::rle:a3b2c1::WEISSMAN::4.20");
// Returns: { algorithm: "rle", compressedData: "a3b2c1", weissmanScore: 4.2 }

🧬 Algorithms

| Algorithm | Name | Description | Best For | | ------------ | ------------------------------ | ----------------------------------------------- | ------------------------------------------------------------------------------------------------ | | rle | 🧱 Run-Length Encoding | Because repeating letters are just lazy. | Strings with repeating characters. Classic. Predictable. Overhyped. Like vinyl but for bytes. | | stk | 🌀 Stack Trace Kompression | For your inner Java debugger. | When you want to reverse the universe by pretending it's all just stack traces. Dev trauma fuel. | | tnt | 💣 Textual Noise Trimmer | It removes "um", "uh", and sometimes your soul. | Converts to base-3, toggles pseudo-bits, and whispers to the CPU: "Trust me, I'm fast." | | zph | 🧬 Zero-Pattern Hider | Because zeroes don't deserve to be seen. | Hashes everything with a fake dictionary. Quantum-sounding. Zero proof. Maximum vibes. | | middle-out | 🧠 Middle-Out Compression | The one, the myth, the legend. | The mythical algorithm. Splits from the middle like a coding Moses. Nobody knows how it works. |


🖥️ CLI Usage

# Check if CLI is available
npx middleout --help

# Compress a string
npx middleout compress --algo rle --input "some text to compress"

# Decompress
npx middleout decompress --algo tnt --input "MO::tnt:ss*bu*yu*hh*kk|TNT_SIG|914::WEISSMAN::4.31"

# Show Weissman Score
npx middleout weissman --algo middle-out --original "original text" --compressed "MO::middle-out:compressed::WEISSMAN::4.20"

Installing CLI Dependencies

If you see this message:

⚠️  CLI dependencies not installed.

Install the CLI dependencies:

npm install chalk commander

Configuration via .middleoutrc

{
  "algorithm": "middle-out",
  "weissmanOptimized": true,
  "showScore": true
}

🔒 MO:: Encoding Format

All compressed output uses our proprietary MO:: format:

MO::<algorithm>:<compressed_data>::WEISSMAN::<score>

Examples:

  • MO::rle:a3b2c1::WEISSMAN::4.20
  • MO::middle-out:QkxBSCBCTEFI::WEISSMAN::5.12
  • MO::tnt:101010110::WEISSMAN::3.89

This format ensures maximum compatibility with Pied Piper infrastructure and provides built-in Weissman score validation.


🧪 Testing

npm run test

Our test suite includes:

  • ✔️ Compression output validation
  • ✔️ Weissman Score bounds checking (2.89-5.2 range)
  • ✔️ Edge cases (empty files, binary data, unicode)
  • ✔️ Algorithm-specific behavior
  • ✔️ CLI integration tests
  • ✔️ MO:: format encoding/decoding

📐 Weissman Score

The Weissman score is a fictional metric from Silicon Valley that measures compression efficiency. Our implementation provides algorithm-specific scoring:

// Each algorithm has its own "personality"
getWeissmanScore(original, compressed, "rle"); // Conservative scores
getWeissmanScore(original, compressed, "tnt"); // Wildly optimistic scores
getWeissmanScore(original, compressed, "zph"); // Mysteriously perfect scores
getWeissmanScore(original, compressed, "middle-out"); // Legendary scores

Note: Our implementation guarantees a score between 2.89-5.2, because anything higher would be suspicious.


🎯 Breaking Changes in v2.0

  • BREAKING: Removed pip_piper_compress() - we're not savages
  • BREAKING: compress() now returns a MiddleOutResult object
  • BREAKING: All output now uses MO:: encoding format
  • NEW: Multiple algorithm support including the mythical middle-out
  • NEW: Weissman Score integration
  • NEW: TypeScript definitions
  • NEW: encodeMO() and decodeMO() utilities
  • NEW: Optional CLI dependencies for smaller installs

Migration Guide

// Old way (amateur hour)
const result = compress(data);

// New way (Weissman-approved)
const result = middleOutCompress(data, {
  algorithm: "middle-out",
  weissmanOptimized: true,
});

// Extract components from MO:: format
const { algorithm, compressedData, weissmanScore } = decodeMO(result);
console.log(`Weissman Score: ${weissmanScore}`);

🧙 Why middleOut?

Why not? You could be building rockets. Or you could be simulating world-changing compression algorithms for the memes. You chose correctly.

Real-world Applications*

  • 🤖 Passes all Hooli compliance checks
  • 📱 Compatible with Nucleus integration (when it eventually works)
  • 🏆 Guaranteed to impress VCs at demo day
  • 🔒 More secure than Gavin Belson's password manager
  • 🧬 MO:: format ensures enterprise-grade authenticity
  • 🪶 Zero dependencies for core library (CLI optional)

*Not actually real-world applications


🤝 Contributing

Pull requests welcome! Please ensure:

  • Your fake algorithms are sufficiently over-engineered
  • Weissman Scores remain within believable bounds
  • All compression is lossless (we have standards)
  • JSDoc comments include at least one Silicon Valley reference
  • New algorithms integrate with the MO:: encoding format
  • Core library remains dependency-free

⚠️ Disclaimer

This library is for entertainment purposes only. If you try using this in production, may the Weissman gods have mercy on your storage.

Not affiliated with HBO, Pied Piper, Hooli, or any actual compression standards.


📄 License

MIT – Copyright © 2025


"Compression isn't just science. It's art. It's pain. It's middleOut.js."
— Definitely not Richard Hendricks

"If it's not Weissman-approved, did you even compress it?"
— The middleOut.js Team

"MO:: format is the future. The future is MO::."
— Probably Erlich Bachman