All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
genAsync(input, length?)— async version using worker threads for non-blocking operation- Configurable output length:
gen(input, length?)with length 1-22 (default: 8) - ESM support via
index.mjsand"exports"field in package.json - Prebuilt binaries via
prebuildify— no compiler needed on most platforms - Input type validation — non-string arguments now throw
TypeError - Input size limit (64KB) — oversized inputs throw
RangeError - OpenSSL error checking — all EVP API return values are validated
- Multi-platform CI testing (Linux, macOS, Windows)
- CLI
--length/-loption for custom output length - CLI
--version/-vflag .editorconfigand ESLint configuration- Benchmark script (
npm run bench) - Collision probability documentation in README
- Migrated from
nantonode-addon-api(N-API) for ABI stability across Node.js versions installscript now usesnode-gyp-build(tries prebuilt first, falls back to compile)- Entry point changed from
./build/Release/shortener.nodeto./index.js(JS wrapper) - Performance: eliminated intermediate hex string conversion in SHA-256 → Base62 pipeline
- Performance: optimized Base62 encoding (reverse-build instead of O(n²) prepend)
- CI now tests Node.js 20, 22, 24 across Linux, macOS, and Windows
- Publish workflow now builds prebuilt binaries before publishing
- Updated Windows OpenSSL library reference
- Removed
nandependency (replaced bynode-addon-api)
- TypeScript type definitions (
index.d.ts) for better IDE support - CLI help command (
--help/-h) - Error handling in CLI for missing arguments
- MIT license file
- Auto-build on
npm installviainstallscript
- Updated SHA-256 implementation from deprecated
SHA256_*API to modernEVP_*API (OpenSSL 3.0+ compatible) - Updated
nandependency for Node.js 25 compatibility - Fixed
binding.gypto include OpenSSL paths for macOS (Homebrew) - Updated license in README from "DY - Dunno Yet" to MIT
- Removed redundant
run.jsfile (use CLI instead)
- Initial stable release
- SHA-256 + Base62 encoding
- 8-character deterministic output
- Native C++ addon via nan