Skip to content

A comprehensive TypeScript/JavaScript library for formatting Indonesian-specific data including phone numbers, NPWP, NIK, dates, and calendar conversions (Javanese & Hijri).

License

Notifications You must be signed in to change notification settings

codenamekii/indonesia-formatter

Repository files navigation

๐Ÿ‡ฎ๐Ÿ‡ฉ indonesia-formatter

TypeScript/JavaScript library untuk format data khas Indonesia, seperti:

  • Nomor telepon
  • NPWP
  • NIK
  • Tanggal dalam Bahasa Indonesia
  • Konversi kalender Jawa dan Hijriah

๐Ÿ‘€ Instalasi

npm install indonesia-formatter
# atau
yarn add indonesia-formatter
# atau
pnpm add indonesia-formatter

๐Ÿš€ Fitur

  • ๐Ÿ“ฑ Phone Number Formatter โ€” Format nomor HP Indonesia dalam berbagai gaya
  • ๐Ÿ’ณ NPWP Formatter โ€” Format dan validasi NPWP
  • ๐Ÿ†” NIK Parser โ€” Parsing NIK dengan ekstraksi info demografi
  • ๐Ÿ“… Date Formatter โ€” Format tanggal Bahasa Indonesia + relative time
  • ๐ŸŒ™ Calendar Converter โ€” Konversi ke kalender Jawa dan Hijriah

๐ŸŽ‰ Penggunaan

1. ๐Ÿ“ฑ Phone Number

import { PhoneFormatter } from 'indonesia-formatter';

PhoneFormatter.format('081234567890');
// => "0812-3456-7890"

PhoneFormatter.format('6281234567890', { format: 'spaces' });
// => "+62 812 3456 7890"

PhoneFormatter.format('081234567890', { format: 'dots' });
// => "0812.3456.7890"

PhoneFormatter.validate('081234567890'); // true
PhoneFormatter.validate('1234'); // false

2. ๐Ÿ’ณ NPWP

import { NPWPFormatter } from 'indonesia-formatter';

NPWPFormatter.format('123456789012345');
// => "12.345.678.9-012.345"

NPWPFormatter.validate('123456789012345'); // true
NPWPFormatter.validate('12345'); // false

3. ๐Ÿ†” NIK (KTP)

import { NIKFormatter } from 'indonesia-formatter';

const nikInfo = NIKFormatter.parse('3201231507900001');
console.log(nikInfo);
// {
//   nik: '3201231507900001',
//   provinceCode: '32',
//   cityCode: '01',
//   districtCode: '23',
//   birthDate: new Date(1990, 6, 15),
//   gender: 'male',
//   uniqueCode: '0001'
// }

NIKFormatter.format('3201231507900001');
// => "3201 2315 0790 0001"

NIKFormatter.validate('3201231507900001'); // true

4. ๐Ÿ“… Tanggal

import { DateFormatter } from 'indonesia-formatter';

const date = new Date('2024-12-31');

DateFormatter.format(date, 'long');      // "Selasa, 31 Desember 2024"
DateFormatter.format(date, 'medium');    // "31 Desember 2024"
DateFormatter.format(date, 'short');     // "31/12/2024"
DateFormatter.format(date, 'monthYear'); // "Desember 2024"

DateFormatter.relative(new Date('2024-12-30')); // "kemarin"
DateFormatter.relative(new Date('2024-12-25')); // "6 hari yang lalu"
DateFormatter.relative(new Date('2025-01-05')); // "dalam 5 hari"

5. ๐ŸŒ™ Kalender Jawa & Hijriah

import { CalendarFormatter } from 'indonesia-formatter';

const date = new Date('2024-12-31');

const javanese = CalendarFormatter.toJavanese(date);
console.log(javanese);
// { year: 1957, month: 'Besar', day: 29, pasaran: 'Wage' }

CalendarFormatter.formatJavanese(date);
// => "Wage, 29 Besar 1957 (31 Desember 2024)"

const hijri = CalendarFormatter.toHijri(date);
console.log(hijri);
// { year: 1446, month: 'Jumadil Akhir', monthNumber: 6, day: 29 }

CalendarFormatter.formatHijri(date);
// => "29 Jumadil Akhir 1446 H (31 Desember 2024)"

โš“ API Reference

๐Ÿ“ฑ PhoneFormatter

Method Deskripsi Parameter Return
format(phone, options?) Format nomor HP phone: string, `options?: { format: 'standard' 'dots'
validate(phone) Validasi nomor HP phone: string boolean

๐Ÿ’ณ NPWPFormatter

Method Deskripsi Parameter Return
format(npwp) Format ke XX.XXX.XXX.X-XXX.XXX npwp: string string
validate(npwp) Validasi panjang dan digit NPWP npwp: string boolean

๐Ÿ†” NIKFormatter

Method Deskripsi Parameter Return
parse(nik) Parsing dan ekstraksi info NIK nik: string object
format(nik) Format NIK agar terbaca rapi nik: string string
validate(nik) Validasi panjang dan tanggal NIK nik: string boolean

๐Ÿ“… DateFormatter

Method Deskripsi Parameter Return
format(date, format?) Format tanggal Indonesia date: Date, `format?: 'long' 'medium'
relative(date, base?) Relative time dalam Bahasa Indonesia date: Date, baseDate?: Date string

๐ŸŒ™ CalendarFormatter

Method Deskripsi Parameter Return
toJavanese(date) Konversi ke kalender Jawa date: Date JavaneseDate
formatJavanese(date, withDate) Format kalender Jawa date: Date, includeGregorian?: boolean string
toHijri(date) Konversi ke kalender Hijriah date: Date HijriDate
formatHijri(date, withDate) Format kalender Hijriah date: Date, includeGregorian?: boolean string

๐Ÿง  Kontribusi

  1. Fork repo ini
  2. Buat branch fitur baru
    git checkout -b feature/nama-fitur
  3. Commit perubahan
    git commit -m 'Tambah fitur xyz'
  4. Push ke branch
    git push origin feature/nama-fitur
  5. Buka Pull Request ke branch main

๐Ÿฆพ Testing

npm test

Untuk request fitur tambahan, bug report, atau pull request, silakan buka issue.

About

A comprehensive TypeScript/JavaScript library for formatting Indonesian-specific data including phone numbers, NPWP, NIK, dates, and calendar conversions (Javanese & Hijri).

Resources

License

Stars

Watchers

Forks

Packages