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/toolkitGenerate an invoice with proper Rupiah formatting and terbilang:
import { formatRupiah, toWords, calculateTax } from '@indodev/toolkit/currency';
const items = [
{ name: 'Jasa Desain Website', qty: 1, price: 5000000 },
{ name: 'Hosting 1 Tahun', qty: 1, price: 1200000 },
];
const subtotal = items.reduce((sum, item) => sum + item.price * item.qty, 0);
const tax = calculateTax(subtotal, 0.11);
const total = subtotal + tax;
console.log(formatRupiah(subtotal)); // 'Rp 6.200.000'
console.log(formatRupiah(tax)); // 'Rp 682.000'
console.log(formatRupiah(total)); // 'Rp 6.882.000'
console.log(toWords(total)); // 'enam juta delapan ratus delapan puluh dua ribu rupiah'Validate and parse an Indonesian NIK:
import { validateNIK, parseNIK } from '@indodev/toolkit/nik';
validateNIK('3201234567890123'); // true
const info = parseNIK('3201234567890123');
// info.province.name → 'Jawa Barat'
// info.gender → 'male'
// info.birthDate → Date(1990-01-01)Format phone numbers and mask sensitive data:
import { formatPhoneNumber } from '@indodev/toolkit/phone';
import { maskText, toTitleCase, slugify } from '@indodev/toolkit/text';
formatPhoneNumber('081234567890', 'international'); // '+62 812-3456-7890'
maskText('08123456789', { pattern: 'middle', visibleStart: 4, visibleEnd: 3 }); // '0812****789'
toTitleCase('pt bank central asia tbk'); // 'PT Bank Central Asia Tbk'
slugify('Pria & Wanita'); // 'pria-dan-wanita'Format dates with Indonesian locale:
import {
formatDate,
parseDate,
toRelativeTime,
} from '@indodev/toolkit/datetime';
formatDate(new Date('2026-01-02'), 'long'); // '2 Januari 2026'
parseDate('02-01-2026'); // Date(2026, 0, 2)
toRelativeTime(new Date(Date.now() - 3600000)); // '1 jam yang lalu'| 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