npm install @trkit-app-pack/validate zodzod 4 önerilir; zod 3.25+ da desteklenir. zod kullanmıyorsanız saf fonksiyonları @trkit-app-pack/validate/core üzerinden içe aktarın.
Türkçe zod mesajları
import { z } from "zod";
import { zodTurkce } from "@trkit-app-pack/validate";
zodTurkce(z); // uygulama başında bir kez
z.string().min(3).parse("a"); // En az 3 karakter olmalıdır
z.email().parse("x"); // Geçerli bir e-posta adresi giriniz
z.number().max(10).parse(11); // 10 veya daha küçük olmalıdır
z.object({ a: z.string() }).parse({}); // Bu alan zorunludurŞemada verdiğiniz özel mesajlar korunur. Tanınmayan durumlarda zod'un kendi Türkçe yereline düşer.
zod şemaları
import { tckn, vkn, vergiNo, iban, telefon, cepTelefonu, plaka, postaKodu, mersis } from "@trkit-app-pack/validate";
const schema = z.object({ tckn, iban, telefon: cepTelefonu });
schema.parse({ tckn: "10000000146", iban: "tr33 0006 1005 1978 6457 8413 26", telefon: "0532 123 45 67" });
// { tckn: "10000000146", iban: "TR330006100519786457841326", telefon: "+905321234567" }Özelleştirilebilir fabrikalar: tcknSchema(o), vknSchema(o), taxIdSchema(o), ibanSchema(o), phoneSchema({ mobileOnly?, message? }), plateSchema(o), postalCodeSchema(o), mersisSchema(o).
TCKN
isValidTckn("10000000146"); // true
maskTckn("10000000146"); // "100******46"
generateTckn(); // test verisi için geçerli rastgele numaraAlgoritma: 11 hane, ilk hane 0 olamaz; 10. hane ((1,3,5,7,9. haneler toplamı × 7) − (2,4,6,8. haneler toplamı)) mod 10; 11. hane ilk 10 hanenin toplamı mod 10.
VKN ve vergi no
isValidVkn("1234567890");
detectTaxId("10000000146"); // "tckn"
detectTaxId("<10 hane>"); // "vkn" | null
isValidTaxId(v); // fatura formlarındaki "TCKN / VKN" alanı
generateVkn();IBAN
isValidTrIban("TR33 0006 1005 1978 6457 8413 26"); // true
parseTrIban("TR330006100519786457841326");
// { iban, bankCode: "00061", bankName: null, accountNumber: "0519786457841326" }
formatIban("TR330006100519786457841326"); // "TR33 0006 1005 1978 6457 8413 26"
isValidIbanChecksum("DE89370400440532013000"); // her ülke için mod-97TR_BANK_CODES yaygın bankaların EFT kodlarını içerir (Ziraat 00010, Garanti BBVA 00062, İş Bankası 00064…).
Telefon
detectPhoneKind("0532 123 45 67"); // "mobile"
detectPhoneKind("0212 555 12 34"); // "landline"
detectPhoneKind("0850 123 45 67"); // "national"
toE164("0532 123 45 67"); // "+905321234567"
formatPhone("+905321234567"); // "0532 123 45 67"
maskPhone("05321234567"); // "0532 *** ** 67"
isValidMobilePhone(v);Kabul edilen girişler: 0532…, 532…, +90 (532) …, 90532…, 0090532….
Plaka, posta kodu, MERSİS
isValidPlate("34 ABC 123"); // true
formatPlate("34abc123"); // "34 ABC 123"
isValidPostalCode("21100"); // true (ilk iki hane il kodu)
isValidMersis("0123456789000015");Plaka kuralları: il kodu 01–81; 1 harf → 4–5 rakam, 2 harf → 3–4 rakam, 3 harf → 2–3 rakam; Ç, Ğ, İ, Ö, Ş, Ü, Q, W, X kullanılmaz.
Algoritmik doğrulama, numaranın gerçek bir kişiye/şirkete ait olduğunu kanıtlamaz.