v0.2.0 - January 2, 2026
New Features
Text Module
toTitleCase()- Smart capitalization handling Indonesian particlesexpandAbbreviation()- Expand common Indonesian abbreviations (Jl., Bpk., etc.)slugify()- URL-friendly slugs with Indonesian conjunction support (& -> dan)truncate()- Smart text truncation respecting word boundariescompareStrings()- Robust string comparison (case/accent/whitespace)similarity()- Calculate string similarity scores (Levenshtein)extractWords()- Word extraction preserving hyphenated wordssanitize()- Text cleaning and normalization
Improvements
- Performance optimizations for text processing
- Comprehensive test coverage for text utilities
v0.1.0 - December 11, 2025
New Features
NIK Module
validateNIK()- Validate Indonesian National Identity NumberparseNIK()- Extract province, birth date, and gender informationformatNIK()- Format NIK with separatorsmaskNIK()- Mask NIK for privacy protection- Support for all 38 Indonesian provinces
- Leap year validation
- Gender detection from birth date encoding
Phone Module
validatePhoneNumber()- Validate Indonesian phone numbersformatPhoneNumber()- Format to international/national/e164 formatsgetOperator()- Detect mobile operator (Telkomsel, XL, Indosat, Smartfren, Axis)parsePhoneNumber()- Extract all phone informationmaskPhoneNumber()- Mask phone numbers for privacycleanPhoneNumber()- Remove separators and normalize- Support for 200+ Indonesian area codes
- Support for landline and mobile numbers
Currency Module
formatRupiah()- Format numbers as Rupiah currencyformatCompact()- Compact format with proper Indonesian grammar (1,5 juta)parseRupiah()- Parse formatted strings back to numberstoWords()- Convert numbers to Indonesian words (terbilang)roundToClean()- Round to clean amounts (ribu, ratus-ribu, juta)- Support for decimal places and custom separators
Package
- TypeScript support with full type definitions
- Dual package support (ESM + CommonJS)
- Tree-shakeable exports
- Zero runtime dependencies
- 175+ test cases with 95%+ coverage
Last updated on