{"_id":"@akin01/mailgen","_rev":"6-6d89780f4f427f05ca94c7b7db034185","name":"@akin01/mailgen","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.0":{"name":"@akin01/mailgen","version":"0.1.0","keywords":["email","generator","markov","bloom-filter","cli"],"author":{"name":"Akin","email":"akinpasha82@gmail.com"},"license":"MIT","_id":"@akin01/mailgen@0.1.0","maintainers":[{"name":"akin01","email":"akinpasha82@gmail.com"}],"homepage":"https://github.com/akin01/emailgen#readme","bugs":{"url":"https://github.com/akin01/emailgen/issues"},"bin":{"mailgen":"bin/mailgen.js"},"dist":{"shasum":"e936545754b5ead2adc49981b2bdf6aa72eec53b","tarball":"https://registry.npmjs.org/@akin01/mailgen/-/mailgen-0.1.0.tgz","fileCount":7,"integrity":"sha512-0/yOSqpdrfwEarikiiAzLp0L9MI3y81J343a7PO2v1/FdImg5c86NhYR/OCbHb++Tg0iySu5cdIqSy+KIOLhOw==","signatures":[{"sig":"MEYCIQDWi5W69tn/nQu+UjUQvgZsvY45lPtKufRRmihyK0L2VAIhAKvBCtCsOFtUEKNWnStngjbmnIrw76K+5EJBj4RZCezC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19261},"main":"index.js","engines":{"node":">=12"},"gitHead":"09a3ba508d40a9dc783ac2cb8fdc2156c46801fc","scripts":{"test":"echo \"Error: no test specified\" && exit 1","postinstall":"node scripts/install.js"},"_npmUser":{"name":"akin01","email":"akinpasha82@gmail.com"},"repository":{"url":"git+https://github.com/akin01/emailgen.git","type":"git"},"_npmVersion":"10.9.4","description":"High-performance email generator using Markov chains and Bloom filters","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mailgen_0.1.0_1775009709390_0.8589941132598427","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@akin01/mailgen","version":"0.1.1","keywords":["email","generator","markov","bloom-filter","cli"],"author":{"name":"Akin","email":"akinpasha82@gmail.com"},"license":"MIT","_id":"@akin01/mailgen@0.1.1","maintainers":[{"name":"akin01","email":"akinpasha82@gmail.com"}],"homepage":"https://github.com/akin01/emailgen#readme","bugs":{"url":"https://github.com/akin01/emailgen/issues"},"bin":{"mailgen":"bin/mailgen.js"},"dist":{"shasum":"c8b7aea9a9568bf11d6839666fc6ccbd2a6b2f9c","tarball":"https://registry.npmjs.org/@akin01/mailgen/-/mailgen-0.1.1.tgz","fileCount":7,"integrity":"sha512-d2oaBT3mV6wmJVddKWdoSEPuRHF3LtyXotTB8AIWe07LoCluWd9k+kFVhUym/z0LqVDShF8yWRWVwUh2hAgR2w==","signatures":[{"sig":"MEUCIFm08TWuF0mkFWkq5o87wIhFwHnRAh/LaplybezJOSQQAiEAmIA9adCoZYFTX14ox1X4XOfGLHy1kqBTMtfeb6ZftcU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19261},"main":"index.js","engines":{"node":">=12"},"gitHead":"f6325566034c347c3c08b29e841ee5b457a44296","scripts":{"test":"echo \"Error: no test specified\" && exit 1","postinstall":"node scripts/install.js"},"_npmUser":{"name":"akin01","email":"akinpasha82@gmail.com"},"repository":{"url":"git+https://github.com/akin01/emailgen.git","type":"git"},"_npmVersion":"10.9.4","description":"High-performance email generator using Markov chains and Bloom filters","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mailgen_0.1.1_1775010883389_0.5187662167137359","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@akin01/mailgen","version":"0.1.2","keywords":["email","generator","markov","bloom-filter","cli"],"author":{"name":"Akin","email":"akinpasha82@gmail.com"},"license":"MIT","_id":"@akin01/mailgen@0.1.2","maintainers":[{"name":"akin01","email":"akinpasha82@gmail.com"}],"homepage":"https://github.com/akin01/emailgen#readme","bugs":{"url":"https://github.com/akin01/emailgen/issues"},"bin":{"mailgen":"bin/mailgen.js"},"dist":{"shasum":"9f258ccea608684ff177adc417e7f34265235d61","tarball":"https://registry.npmjs.org/@akin01/mailgen/-/mailgen-0.1.2.tgz","fileCount":7,"integrity":"sha512-jHppCWaBEtKDxjWRRkNNl6Rz/cYcazTkvciIne8f61YcuQC0tVqC83qR4QKNe7EFodW4mtfAoDiOiblkpdPBEw==","signatures":[{"sig":"MEUCIAdcw0qThXbKtsMEemO6Hflz0pOiE9eRhZDAPo29m6AsAiEAxZvGFPmaJS+aj9K8s8A6fdptCYkL0vvBLUGaXsu5gDo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19254},"main":"index.js","engines":{"node":">=12"},"gitHead":"26372c14ba32c198767a0373a7c7e7c5aca7f843","scripts":{"test":"echo \"Error: no test specified\" && exit 1","postinstall":"node scripts/install.js"},"_npmUser":{"name":"akin01","email":"akinpasha82@gmail.com"},"repository":{"url":"git+https://github.com/akin01/emailgen.git","type":"git"},"_npmVersion":"10.9.4","description":"High-performance email generator using Markov chains and Bloom filters","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mailgen_0.1.2_1775011744987_0.18267457993096192","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@akin01/mailgen","version":"0.1.3","keywords":["email","generator","markov","bloom-filter","cli"],"author":{"name":"Akin","email":"akinpasha82@gmail.com"},"license":"MIT","_id":"@akin01/mailgen@0.1.3","maintainers":[{"name":"akin01","email":"akinpasha82@gmail.com"}],"homepage":"https://github.com/akin01/emailgen#readme","bugs":{"url":"https://github.com/akin01/emailgen/issues"},"bin":{"mailgen":"bin/mailgen.js"},"dist":{"shasum":"b42f4bc8151534ae1d37f45eec0670a006f3a360","tarball":"https://registry.npmjs.org/@akin01/mailgen/-/mailgen-0.1.3.tgz","fileCount":7,"integrity":"sha512-zF5qA+ufUZ1j02LxS+N4hpxD3M6POYZFs/haHd4Q9Yd2zrF0P00OrLPe8lKcVuH3j8TwPEef0Ho/V89ACODScQ==","signatures":[{"sig":"MEQCICDRXz/iebs2mMFKH+d8KuwUqe/HuHUHTB/TsMCCjqsHAiA/pRTdOuGuGnBKwlM3JR5BK+sJi5bCnd/00Yc4bClm/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19254},"main":"index.js","engines":{"node":">=12"},"gitHead":"c93e9e0ad293c8552e5a076022410b5e14f87179","scripts":{"test":"echo \"Error: no test specified\" && exit 1","postinstall":"node scripts/install.js"},"_npmUser":{"name":"akin01","email":"akinpasha82@gmail.com"},"repository":{"url":"git+https://github.com/akin01/emailgen.git","type":"git"},"_npmVersion":"10.9.4","description":"High-performance email generator using Markov chains and Bloom filters","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mailgen_0.1.3_1775012044256_0.7298681395964168","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@akin01/mailgen","version":"0.1.4","keywords":["email","generator","markov","bloom-filter","cli"],"author":{"name":"Akin","email":"akinpasha82@gmail.com"},"license":"MIT","_id":"@akin01/mailgen@0.1.4","maintainers":[{"name":"akin01","email":"akinpasha82@gmail.com"}],"homepage":"https://github.com/akin01/emailgen#readme","bugs":{"url":"https://github.com/akin01/emailgen/issues"},"bin":{"mailgen":"bin/mailgen.js"},"dist":{"shasum":"e10be8aa4b678f3e04ba3a486c94dce0554bba2c","tarball":"https://registry.npmjs.org/@akin01/mailgen/-/mailgen-0.1.4.tgz","fileCount":7,"integrity":"sha512-QZwleMn1DSszCont9klLpgiCfxfAAmvsaHpMl/P1q3r9DjKLZCCPpJNJIo1gbI6iMthKdaN6V5XTDmYHWIMuRA==","signatures":[{"sig":"MEUCIHYqGXfgd2VAC+yggGvmS2+Mub75KYIEZpaaJydOh6HsAiEAtcNt6qtVZSAgf7YKuljQw9mT2Q8JhMtCKDtRchv2YBc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19541},"main":"index.js","engines":{"node":">=12"},"gitHead":"e053b3c462c5d6185ab455cedbd8e15b3aed864a","scripts":{"test":"echo \"Error: no test specified\" && exit 1","postinstall":"node scripts/install.js"},"_npmUser":{"name":"akin01","email":"akinpasha82@gmail.com"},"repository":{"url":"git+https://github.com/akin01/emailgen.git","type":"git"},"_npmVersion":"10.9.4","description":"High-performance email generator using Markov chains and Bloom filters","directories":{},"_nodeVersion":"22.22.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mailgen_0.1.4_1775013854640_0.4060210669218236","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@akin01/mailgen","version":"0.1.5","description":"High-performance email generator using Markov chains and Bloom filters","main":"index.js","bin":{"mailgen":"bin/mailgen.js"},"scripts":{"test":"echo \"Error: no test specified\" && exit 1","postinstall":"node scripts/install.js"},"repository":{"type":"git","url":"git+https://github.com/akin01/emailgen.git"},"keywords":["email","generator","markov","bloom-filter","cli"],"author":{"name":"Akin","email":"akinpasha82@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/akin01/emailgen/issues"},"homepage":"https://github.com/akin01/emailgen#readme","engines":{"node":">=12"},"_id":"@akin01/mailgen@0.1.5","gitHead":"0a9b04225ff9c06e0fbcdb31c76e7acee5b13152","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-RhETrCRdJ66aeFogK6NMz/ydO4vYgYuKs7SCiaLotMcsu5bwgnUZveulPuxK349hoZeNuOt5FUk7qSbGm8m2YA==","shasum":"8ce3d898d37c3633ab16ba8ca2b7874e5001a21a","tarball":"https://registry.npmjs.org/@akin01/mailgen/-/mailgen-0.1.5.tgz","fileCount":7,"unpackedSize":19783,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDlJ53Wfxwfq8bm3TzXpMDl4H/h+wxGU+IKviBwnVIlpQIgVTenQZJpJnAFFG/I2k+I/oIVoufqHHGEMsFwLvzDuGQ="}]},"_npmUser":{"name":"akin01","email":"akinpasha82@gmail.com"},"directories":{},"maintainers":[{"name":"akin01","email":"akinpasha82@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mailgen_0.1.5_1775016103440_0.5543715240314697"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-01T02:15:09.300Z","modified":"2026-04-01T04:01:43.738Z","0.1.0":"2026-04-01T02:15:09.533Z","0.1.1":"2026-04-01T02:34:43.549Z","0.1.2":"2026-04-01T02:49:05.137Z","0.1.3":"2026-04-01T02:54:04.404Z","0.1.4":"2026-04-01T03:24:14.799Z","0.1.5":"2026-04-01T04:01:43.595Z"},"bugs":{"url":"https://github.com/akin01/emailgen/issues"},"author":{"name":"Akin","email":"akinpasha82@gmail.com"},"license":"MIT","homepage":"https://github.com/akin01/emailgen#readme","keywords":["email","generator","markov","bloom-filter","cli"],"repository":{"type":"git","url":"git+https://github.com/akin01/emailgen.git"},"description":"High-performance email generator using Markov chains and Bloom filters","maintainers":[{"name":"akin01","email":"akinpasha82@gmail.com"}],"readme":"# mailgen\n\nHigh-performance email generator using Markov chains and Bloom filters.\n\n[![Build Status](https://img.shields.io/github/actions/workflow/status/akin01/emailgen/ci.yml)](https://github.com/akin01/emailgen/actions)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Features\n\n- 🚀 **High Performance** - Generate 250K+ emails per second (Fast Mode)\n- 🎯 **Realistic Names** - Markov chain-based name generation\n- ✅ **Uniqueness Guaranteed** - Bloom filter for efficient duplicate detection\n- 📝 **Custom Wordlists** - Support for custom name and domain lists\n- 🔧 **Configurable** - Multiple email patterns and generation options\n- 💾 **Memory Efficient** - ~1.2 MB for 1 million unique emails\n\n## Installation\n\n### Binary Installation (Recommended)\n\nQuickly install the latest binary for your system (Linux, macOS, or Windows):\n\n```bash\n# Linux/macOS (using install script)\ncurl -fsSL https://raw.githubusercontent.com/akin01/emailgen/main/install.sh | sudo bash\n\n# Windows PowerShell (one-liner, no file download needed)\npowershell -ExecutionPolicy Bypass -Command \"iwr -useb https://raw.githubusercontent.com/akin01/emailgen/main/install.ps1 | iex\"\n\n# Alternative PowerShell syntax\nInvoke-WebRequest -Uri https://raw.githubusercontent.com/akin01/emailgen/main/install.ps1 -UseBasicParsing | Invoke-Expression\n```\n\n### Package Manager Installation\n\nInstall the published CLI globally with either `npm` or `uv`:\n\n```bash\n# npm\nnpm install -g @akin01/mailgen\n\n# uv\nuv tool install mailgen-rs\n```\n\nThen verify the installation:\n\n```bash\nmailgen --version\n```\n\n### Build from Source\n\n## Quick Start\n\n### Generate Emails\n\n```bash\n# Generate 1000 emails to stdout\n./target/release/mailgen --count 1000\n\n# Generate 1 million emails to file (Fast Mode)\n./target/release/mailgen --count 1000000 --output emails.txt --fast\n\n# Use custom wordlists\n./target/release/mailgen --count 10000 \\\n    --names data/example_names.txt \\\n    --domains data/example_domains.txt \\\n    --output emails.txt\n```\n\n### As a Library\n\nAdd to your `Cargo.toml`:\n\n```toml\n[dependencies]\nemailgen = { git = \"https://github.com/akin01/emailgen\" }\n```\n\n```rust\nuse mailgen::EmailGenerator;\n\nfn main() {\n    // Basic usage\n    let mut generator = EmailGenerator::new();\n    let email = generator.generate();\n    println!(\"Generated: {}\", email);\n\n    // Generate many emails\n    let emails = generator.generate_many(1000);\n\n    // With custom wordlists\n    let names = vec![\"John Doe\".to_string(), \"Jane Smith\".to_string()];\n    let domains = vec![\"example.com\".to_string()];\n    let mut generator = EmailGenerator::with_names_and_domains(names, domains);\n    let emails = generator.generate_many(10000);\n}\n```\n\n## Performance\n\n### Generation Speed (Actual Benchmarks)\n\n| Mode | 10K | 100K | 1M |\n|------|-----|------|-----|\n| **Fast Mode** (`--fast`) | 0.04s | 0.38s | 7.5s |\n| **Default Mode** | 3.9s | 39s | ~6.5 min |\n\n**💡 Tip:** Use `--fast` mode for bulk generation (>10K emails) for best performance.\n\n### Memory Usage\n\n- **~1.2 MB** for 1 million unique emails (Bloom filter)\n\n### Usage\n\n```bash\n# Fast mode for bulk generation (~250K emails/sec)\n./target/release/mailgen --count 1000000 --output emails.txt --fast\n\n# Default mode with 30% Markov for variety (~2.6K emails/sec)\n./target/release/mailgen --count 100000 --output emails.txt\n\n# Generate to stdout\n./target/release/mailgen --count 1000 --fast\n```\n\nSee [PERFORMANCE.md](PERFORMANCE.md) for detailed benchmarks.\n\n## Usage\n\n### Direct Command Line\n\nAfter installing via the script or a package manager, the `mailgen` command is available directly in your terminal:\n\n```bash\n# Basic usage\nmailgen --count 1000\n\n# Fast mode\nmailgen -c 1000000 --fast\n```\n\n### Command Line Options\n\n```\nUSAGE:\n    mailgen [OPTIONS]\n\nOPTIONS:\n    -c, --count <COUNT>            Number of emails to generate [default: 1000]\n    -o, --output <OUTPUT>          Output file path (stdout if not specified)\n    -n, --names <NAMES>            Path to names wordlist file\n    -d, --domains <DOMAINS>        Path to domains file\n        --min-length <MIN>         Minimum username length [default: 5]\n        --max-length <MAX>         Maximum username length [default: 30]\n        --capacity <CAP>           Bloom filter capacity [default: 1000000]\n        --fpr <FPR>                Bloom filter false positive rate [default: 0.01]\n        --fast                     Fast mode (100% wordlist/cached, no Markov)\n        --wordlist-percent <PCT>   Wordlist name percentage (0-100, default: auto)\n        --cache-percent <PCT>      Cached name percentage (0-100, default: auto)\n        --markov-percent <PCT>     Markov generation percentage (0-100, default: 30)\n        --stats                    Show statistics after generation\n    -q, --quiet                    Quiet mode (no output except errors)\n    -h, --help                     Print help\n    -V, --version                  Print version\n\n**Features:**\n- **TUI Progress Bar**: Animated text-based progress bar with spinner, percentage, speed, and ETA\n- **Parallel Generation**: Multi-threaded generation (always enabled)\n- **Async I/O**: Asynchronous file writing (always enabled)\n\n**Note:** The TUI progress bar animation works best in interactive terminals. When output is redirected, you'll see the final progress state.\n```\n\n### Name Source Ratios\n\nControl the balance between speed and variety:\n\n```bash\n# Specify all three (must add up to 100)\n./target/release/mailgen --count 100000 --wordlist-percent 35 --cache-percent 35 --markov-percent 30\n\n# Specify only one - others auto-calculated\n./target/release/mailgen --count 100000 --markov-percent 20\n# Auto-calculates: 40% wordlist, 40% cached, 20% Markov\n\n./target/release/mailgen --count 100000 --wordlist-percent 80\n# Auto-calculates: 80% wordlist, 15% cached, 5% Markov\n\n./target/release/mailgen --count 100000 --cache-percent 70\n# Auto-calculates: 25% wordlist, 70% cached, 5% Markov\n\n# Specify two - third auto-calculated\n./target/release/mailgen --count 100000 --wordlist-percent 50 --markov-percent 10\n# Auto-calculates: 50% wordlist, 40% cached, 10% Markov\n\n# Fast mode shortcut (50% wordlist, 50% cached, 0% Markov)\n./target/release/mailgen --count 100000 --fast\n```\n\n| Ratio (wordlist/cache/markov) | Speed | Variety | Use Case |\n|-------------------------------|-------|---------|----------|\n| 100/0/0 | ~260K/sec | Low | Bulk test data |\n| 50/50/0 (--fast) | ~260K/sec | Medium | Fast generation |\n| 35/35/30 (default) | ~2.6K/sec | High | General use with variety |\n| 25/25/50 | ~1.5K/sec | Very High | Maximum variety |\n\n### Examples\n\n```bash\n# Generate 10K emails with stats\n./target/release/mailgen -c 10000 --stats\n\n# Generate with custom wordlists\n./target/release/mailgen -c 100000 \\\n    -n names.txt \\\n    -d domains.txt \\\n    -o output.txt\n\n# Generate with specific constraints\n./target/release/mailgen -c 50000 \\\n    --min-length 6 \\\n    --max-length 20 \\\n    --capacity 100000 \\\n    --fpr 0.001\n```\n\n## Architecture\n\n### Markov Chain Name Generation\n\nThe email generator uses character-level Markov chains to generate realistic names:\n\n1. **Training**: Names from wordlist are converted to character sequences\n2. **Generation**: New names are generated by walking the Markov chain\n3. **Patterns**: Multiple email patterns create variety (first.last, firstlast, etc.)\n\n### Bloom Filter Uniqueness\n\nBloom filters provide space-efficient uniqueness checking:\n\n- **Space Efficient**: ~1.14 MB for 1M elements at 1% false positive rate\n- **Fast Operations**: O(k) where k is number of hash functions\n- **No False Negatives**: If it says \"not seen\", it's definitely unique\n- **Configurable FPR**: Trade memory for accuracy\n\n## Wordlist Format\n\n### Names File\n\nOne name per line (first + last):\n\n```\nJohn Smith\nJane Doe\nBob Johnson\n```\n\n### Domains File\n\nOne domain per line:\n\n```\ngmail.com\nyahoo.com\nexample.com\n```\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n## Acknowledgments\n\n- [markovify-rs](https://crates.io/crates/markovify-rs) - Markov chain implementation\n- [bloomfilter](https://crates.io/crates/bloomfilter) - Bloom filter implementation\n","readmeFilename":"README.md"}