Zod, Valibot, dan validator
Skema TypeScript
Section titled “Skema TypeScript”nusaindex/zod dan nusaindex/valibot mengekspor fungsi pembuat yang sama. Zod (^4) dan Valibot (^1) adalah peer dependency opsional, jadi pasang yang kamu pakai saja.
| Fungsi | Menerima | Hasil |
|---|---|---|
nik() |
NIK | String input, tidak diubah |
npwp() |
NPWP 15 atau 16 digit, atau NITKU | String input, tidak diubah |
phone() |
Nomor telepon | String input, tidak diubah |
nip() |
NIP | String input, tidak diubah |
nisn() |
NISN | String input, tidak diubah |
plate() |
Plat nomor | String input, tidak diubah |
rupiah() |
Teks Rupiah seperti Rp 25.000,- |
number dalam rupiah |
Skema nomor identitas cuma memvalidasi tanpa mengubah nilai. Kamu yang memutuskan mau menyimpan nilai asli atau yang sudah dinormalisasi (nik.format, phone.format). Setiap fungsi menerima { message }. Pesan error tidak pernah memuat input. Issue Zod membawa kode error NusaIndex di params.nusaindex.
import { z } from "zod";import * as id from "nusaindex/zod";
const Customer = z.object({ nik: id.nik({ message: "NIK tidak valid" }), phone: id.phone(), deposit: id.rupiah(),});
const result = Customer.safeParse(form);import * as v from "valibot";import * as id from "nusaindex/valibot";
const Customer = v.object({ nik: id.nik({ message: "NIK tidak valid" }), phone: id.phone(), deposit: id.rupiah(),});
const result = v.safeParse(Customer, form);Go: go-playground/validator
Section titled “Go: go-playground/validator”NusaIndex tidak bergantung pada library validasi mana pun. Daftarkan fungsi Valid yang kamu butuhkan:
validate := validator.New()_ = validate.RegisterValidation("nik", func(fl validator.FieldLevel) bool { return nik.Valid(fl.Field().String())})_ = validate.RegisterValidation("phone_id", func(fl validator.FieldLevel) bool { return phone.Valid(fl.Field().String())})
type Customer struct { NIK string `validate:"required,nik"` Phone string `validate:"required,phone_id"`}© 2026 Haikal Mumtaz