Input dan privasi
Input yang diterima
Section titled “Input yang diterima”Fungsi nomor identitas cuma menerima digit ASCII dan pemisah yang disebut di halaman tiap modul (biasanya spasi, titik, dan strip). Input lebih dari 64 karakter langsung gagal dengan length sebelum dicek lebih jauh, jadi input sepanjang apa pun tetap murah diproses.
Karakter lain langsung gagal dengan charset. Contohnya digit full-width (7502…), digit Arab-Indic, dan karakter zero-width. Di layar kelihatannya sama, tapi isinya beda, jadi lebih aman ditolak daripada diterima diam-diam.
Bersihkan teks tempelan dengan normalize
Section titled “Bersihkan teks tempelan dengan normalize”Kalau input datang dari copy-paste, panggil normalize dulu sebelum validasi. Fungsi ini mengubah karakter full-width, digit Arab-Indic, serta spasi dan strip Unicode jadi ASCII, membuang karakter zero-width dan soft hyphen, lalu merapikan spasi di ujung. Tabelnya sama persis di Go dan TypeScript.
package main
import ( "errors" "fmt"
"github.com/haikalmumtaz233/nusaindex/nik" "github.com/haikalmumtaz233/nusaindex/normalize")
func main() { pasted := "7502010706599583\u200b"
_, err := nik.Parse(pasted) fmt.Println(errors.Is(err, nik.ErrCharset))
clean := normalize.Text(pasted) fmt.Println(clean, nik.Valid(clean))}import * as nik from "nusaindex/nik";import * as normalize from "nusaindex/normalize";
const pasted = "7502010706599583\u200b";
const raw = nik.parse(pasted);console.log(!raw.ok && raw.error.code === "charset");
const clean = normalize.text(pasted);console.log(clean, nik.isValid(clean));true7502010706599583 trueMasking
Section titled “Masking”Mask cuma menyisakan bagian yang biasanya dibutuhkan tim layanan:
| Jenis | Yang terlihat | Contoh |
|---|---|---|
| NIK, NPWP, NIP, NISN, nomor rekening | 4 digit terakhir | ************9583 |
| Nomor HP | +62 dan 3 digit terakhir |
+62*******171 |
Digit depan NIK berisi wilayah dan tanggal lahir, jadi tidak pernah ditampilkan. Untuk teks bebas, objek, dan handler slog di Go, lihat mask.
Yang tidak pernah dilakukan NusaIndex
Section titled “Yang tidak pernah dilakukan NusaIndex”- Tidak ada request jaringan dari library, CLI, maupun server MCP. Data wilayah, libur, dan bank sudah ikut tertanam.
- Tidak me-log, menyimpan, atau mengirim input. Pesan error cuma berisi kode, bukan nilainya.
- Tidak mencari siapa pemilik NIK, NPWP, plat, atau nomor HP, dan tidak mengecek ke Dukcapil atau DJP. Lihat non-goal.
Valid artinya strukturnya benar. NIK bisa lolos semua pengecekan tapi tetap bukan milik siapa pun.
© 2026 Haikal Mumtaz