TypeScript utilities for Indonesian data. Handles Rupiah formatting, terbilang, NIK validation, phone normalization, date formatting, and text rules that generic libraries don't cover.
npm install @indodev/toolkitimport {
formatRupiah,
formatCompact,
toWords,
formatAccounting,
} from '@indodev/toolkit/currency';
formatRupiah(1500000); // 'Rp 1.500.000'
formatCompact(1500000); // 'Rp 1,5 juta'
formatCompact(1000000); // 'Rp 1 juta' ← NO "1,0 juta"
toWords(1500000); // 'satu juta lima ratus ribu rupiah'
formatAccounting(-500000); // '(Rp 500.000)'import {
toTitleCase,
expandAbbreviation,
toFormal,
isAlay,
slugify,
} from '@indodev/toolkit/text';
toTitleCase('pt bank central asia'); // 'PT Bank Central Asia'
expandAbbreviation('Jl. Sudirman'); // 'Jalan Sudirman'
expandAbbreviation('Dr. Joko, S.H.'); // 'Doktor Joko, Sarjana Hukum'
toFormal('gw lg makan deh'); // 'saya sedang makan'
isAlay('aqU sAyAnG kMu'); // true
slugify('Pria & Wanita'); // 'pria-dan-wanita'import {
formatDate,
parseDate,
toRelativeTime,
getAge,
isWorkingDay,
} from '@indodev/toolkit/datetime';
formatDate(new Date('2026-01-02'), 'long'); // '2 Januari 2026'
parseDate('02-01-2026'); // Date(2026, 0, 2)
toRelativeTime(Date.now() - 3600000); // '1 jam yang lalu'
getAge('1990-06-15'); // { years: 35, months: 9, ... }
isWorkingDay(new Date('2026-01-01')); // false (Tahun Baru)Validate and parse Indonesian identity documents:
import { validateNIK, parseNIK } from '@indodev/toolkit/nik';
import { validateNPWP, formatNPWP } from '@indodev/toolkit/npwp';
import { formatPhoneNumber, maskPhoneNumber } from '@indodev/toolkit/phone';
validateNIK('3201234567890123'); // true
parseNIK('3201234567890123').province.name; // 'Jawa Barat'
validateNPWP('012345678901234'); // true
formatPhoneNumber('081234567890', 'international'); // '+62 812-3456-7890'
maskPhoneNumber('081234567890'); // '0812****7890'| Module | Description |
|---|---|
| Currency | Format Rupiah, terbilang, split amounts, percentages |
| Text | Title case, slugs, abbreviations, case conversion, masking |
| DateTime | Indonesian date formatting, relative time, age calculation |
| NIK | Validate, parse, and mask Indonesian National Identity Numbers |
| NPWP | Validate and format Tax Identification Numbers |
| Phone | Format, validate, and detect mobile operators |
| Validate emails with disposable domain detection | |
| Plate | Validate license plates with region detection |
| VIN | Validate Vehicle Identification Numbers (ISO 3779) |
Full docs, examples, and API reference at toolkit.adamm.cloud
MIT