UNPKG

tckn

Version:

This is just a simple tool written to generate mock data and validate for the Turkish Republic Identity Number for testing purposes.

21 lines (19 loc) 1.1 kB
export class Tckn { static generatedNumber; static validate(tckn) { if (tckn === null || tckn.length !== 11 || !/^\d+$/.test(tckn)) return false; const digits = Array.from(tckn).map(c => parseInt(c, 10)); const oddSum = digits.filter((_, i) => i % 2 === 1 && i < 9).reduce((a, b) => a + b, 0); const evenSum = digits.filter((_, i) => i % 2 === 0 && i < 9).reduce((a, b) => a + b, 0); return ((evenSum * 7) - oddSum) % 10 === digits[9] && digits.slice(0, 10).reduce((a, b) => a + b, 0) % 10 === digits[10]; } static generate() { const tckn = Math.floor(Math.random() * (999999999 - 100000000 + 1)) + 100000000; const list = Array.from(String(tckn), Number); const oddSum = list[0] + list[2] + list[4] + list[6] + list[8]; const evenSum = list[1] + list[3] + list[5] + list[7]; const tc10 = ((7 * oddSum) - evenSum) % 10; Tckn.generatedNumber = tckn.toString() + tc10.toString() + ((evenSum + oddSum + tc10) % 10).toString(); return Tckn.generatedNumber; } }