UNPKG

tckn-vkn-validator

Version:

A library for validating Turkish Identification Numbers (TCKN) and Tax Identification Numbers (VKN).

48 lines (46 loc) 1.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateTckn = validateTckn; exports.validateVkn = validateVkn; /** * T.C. Kimlik No doğrulama fonksiyonu. * @param {string} tckn - T.C. Kimlik Numarası (11 haneli). * @returns {boolean} - Doğrulama sonucu (true/false). */ function validateTckn(tckn) { if (!/^\d{11}$/.test(tckn) || tckn[0] === "0") { return false; } const digits = tckn.split("").map(Number); const sumOfFirst10 = digits.slice(0, 10).reduce((sum, digit) => sum + digit, 0); if (sumOfFirst10 % 10 !== digits[10]) { return false; } const oddSum = digits[0] + digits[2] + digits[4] + digits[6] + digits[8]; const evenSum = digits[1] + digits[3] + digits[5] + digits[7]; if ((oddSum * 7 - evenSum) % 10 !== digits[9]) { return false; } return true; } /** * Vergi kimlik numarası doğrulama fonksiyonu. * @param {string} vkn - Vergi Kimlik Numarası (10 haneli). * @returns {boolean} - Doğrulama sonucu (true/false). */ function validateVkn(vkn) { if (vkn.length !== 10) { return false; } let stepOfVkn = []; const lastDigit = Number(vkn.charAt(9)); for (let i = 0; i < 9; i++) { const tmp = (Number(vkn.charAt(i)) + (9 - i)) % 10; stepOfVkn[i] = tmp * 2 ** (9 - i) % 9; if (tmp !== 0 && stepOfVkn[i] === 0) stepOfVkn[i] = 9; } const sum = stepOfVkn.reduce((a, b) => a + b, 0) % 10; return (10 - sum % 10) % 10 === lastDigit; }