ENTRY: src/index.ts, src/core/MapCompression.ts - Main API entry points
CORE: src/core/.ts - Compression/decompression core systems
ENCODERS: src/encoders/.ts - Encoding algorithms (Delta, Varint, Brotli)
LOADERS: src/optimization/.ts - Fast loading strategies
CONFIG: assets/config/.yaml - Configuration files
TESTS: test-.ts, benchmark-.ts - Test and benchmark files
TOOLS: src/tools/*.ts - Utility tools (PrecomputeChunks)
src/core/MapCompression.ts - Main plugin API class ├─ Manages: Complete compression/decompression pipeline ├─ Methods: quickLoad(), compress(), decompress(), loadMap(), autoLoad() ├─ Pattern: Facade pattern with strategy selection └─ Features: Auto-optimization, hash-based caching, metrics collection
src/core/MapCompressor.ts - Compression pipeline implementation ├─ Manages: 3-stage compression (Delta → Varint → Brotli) ├─ Methods: compress(), sortBlocks(), calculateDeltas() ├─ Pattern: Pipeline pattern with configurable stages └─ Output: Base64-encoded compressed data with metadata
src/core/MapCompressorFixed.ts - Fixed/improved compression implementation ├─ Manages: Bug fixes and optimizations for compression ├─ Methods: Same as MapCompressor with critical fixes └─ Status: Test implementation (not yet integrated)
src/core/MapDecompressor.ts - Decompression pipeline ├─ Manages: Reverse pipeline (Brotli → Varint → Delta) ├─ Methods: decompress(), rebuildPositions() ├─ Pattern: Inverse pipeline pattern └─ Features: Streaming decompression, error recovery
src/encoders/DeltaEncoder.ts - Delta encoding/decoding ├─ Manages: Position difference encoding ├─ Methods: encode(), decode() └─ Algorithm: Stores deltas instead of absolute positions
src/encoders/VarintEncoder.ts - Variable-length integer encoding ├─ Manages: Efficient small number encoding ├─ Methods: encode(), decode(), encodeValue(), decodeValue() └─ Algorithm: 1-5 bytes per integer based on value size
src/encoders/BrotliWrapper.ts - Brotli compression wrapper ├─ Manages: Final compression stage ├─ Methods: compress(), decompress() └─ Features: Quality level configuration, async operations
src/optimization/FastLoader.ts - Optimized map loading ├─ Manages: Batched block loading with optimizations ├─ Methods: loadCompressed(), loadUncompressed() ├─ Pattern: Batch processing with configurable size └─ Features: Progress tracking, memory management
src/optimization/DirectChunkLoader.ts - Direct binary chunk loading ├─ Manages: Pre-computed chunk loading (v1) ├─ Methods: loadFromChunks(), hasPrecomputedChunks() └─ Performance: 10x faster than decompression
src/optimization/DirectChunkLoaderV3.ts - HyFire8-style chunk loading ├─ Manages: Ultra-fast direct chunk loading (v3) ├─ Methods: loadFromChunks(), registerBlockTypes() ├─ Pattern: Direct lattice manipulation └─ Performance: 50x faster than standard loading
src/optimization/MonkeyPatchLoader.ts - Runtime optimization patches ├─ Manages: Monkey-patching Hytopia internals ├─ Methods: patch(), unpatch() └─ Features: Optional performance enhancement
src/utils/ConfigLoader.ts - Configuration management ├─ Manages: YAML config loading and merging ├─ Methods: loadConfig(), mergeConfig() ├─ Convention: Looks for assets/config/map-compression.yaml └─ Features: Deep merging, environment variables
src/utils/DetailedBenchmark.ts - Performance benchmarking ├─ Manages: Detailed performance metrics ├─ Methods: start(), end(), report() └─ Metrics: Time, memory, compression ratios
src/tools/PrecomputeChunks.ts - Chunk pre-computation tool ├─ Manages: Generating optimized chunk files ├─ Methods: precompute(), saveChunks() ├─ Usage: bun src/tools/PrecomputeChunks.ts └─ Output: Binary .chunks.bin files
MapData: Raw map data structureCompressedMapData: Compressed map with metadataCompressionResult: Compression operation resultDecompressionResult: Decompression operation resultMapCompressionOptions: Configuration optionsPerformanceMetrics: Performance statistics
assets/config/default.yaml - Built-in defaults ├─ Compression settings ├─ Optimization flags └─ Performance limits
assets/config/map-compression.yaml.example - User config template ├─ All available options ├─ Documentation comments └─ Common presets
- test-integrity.ts - Compression/decompression integrity
- test-pipeline.ts - Full pipeline testing
- test-final-speed.ts - Performance benchmarking
- test-hyfire8-exact.ts - HyFire8 compatibility test
- test-debug.ts - Debug and troubleshooting
- benchmark-real-map.ts - Real-world map performance
examples/simple-usage.js - JavaScript basic example examples/basic-compression.ts - TypeScript compression
examples/full-pipeline.ts - Complete pipeline example examples/fast-loading.ts - Optimized loading strategies
- Maps expected in: ./assets/map.json (default)
- Cache files: ./...compressed.json
- Chunk files: ./...chunks.bin (binary) or .chunks (Brotli JSON)
- Config: ./assets/config/map-compression.yaml
# Development
npm run dev # Watch mode
npm run lint # Check style
npm test # Run tests
# Production
npm run build # Build dist/
bun src/tools/PrecomputeChunks.ts # Generate chunks
# Testing
bun test-integrity.ts # Verify compression
bun benchmark-real-map.ts # Performance testMap Data → Sort → Delta Encode → Varint Encode → Brotli → Base64
1. Check for .chunks.bin → Use DirectChunkLoaderV3 (fastest)
2. Check for .compressed.json → Use FastLoader (fast)
3. Fallback to raw .json → Compress first, then load
Map File → SHA-256 Hash → Cache Key
├─ Hit: Load cached files
└─ Miss: Generate new cache, cleanup old files