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
Maintainers
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.
🚨 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 legendarymiddle-out - 🎩 Auto-generated Weissman Scores that always look impressive
- ⚙️
.middleoutrcconfig 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.jsOption 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 commanderOption 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 commanderConfiguration 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.20MO::middle-out:QkxBSCBCTEFI::WEISSMAN::5.12MO::tnt:101010110::WEISSMAN::3.89
This format ensures maximum compatibility with Pied Piper infrastructure and provides built-in Weissman score validation.
🧪 Testing
npm run testOur 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 scoresNote: 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 aMiddleOutResultobject - 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()anddecodeMO()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
