UNPKG

test-numbers-generator

Version:

Generate and validate European test phone numbers (mobile and landline) in safe, non-existent ranges.

44 lines (40 loc) 1.27 kB
// src/bsnGenerators.ts /** * Genereert een geldig Nederlands BSN (Burger Service Nummer) voor testdoeleinden. * Een BSN is 9 cijfers en voldoet aan de 11-proef. */ export function generateTestBSN(): string { while (true) { // Genereer 8 random cijfers, eerste cijfer mag niet 0 zijn const firstDigit = Math.floor(Math.random() * 9) + 1; const digits = [firstDigit]; for (let i = 1; i < 8; i++) { digits.push(Math.floor(Math.random() * 10)); } // Bereken het controlecijfer volgens de 11-proef let sum = 0; for (let i = 0; i < 8; i++) { sum += digits[i] * (9 - i); } // Controlecijfer kan negatief zijn let control = sum % 11; let lastDigit = 11 - control; if (lastDigit === 10) continue; // 10 is ongeldig if (lastDigit === 11) lastDigit = 0; const bsn = [...digits, lastDigit].join(""); // Controleer of het voldoet aan de 11-proef if (isValidBSN(bsn)) return bsn; } } /** * Valideert of een string een geldig BSN is (11-proef). */ export function isValidBSN(bsn: string): boolean { if (!/^[0-9]{9}$/.test(bsn)) return false; let sum = 0; for (let i = 0; i < 8; i++) { sum += parseInt(bsn[i], 10) * (9 - i); } sum -= parseInt(bsn[8], 10); return sum % 11 === 0; }