UNPKG

test-numbers-generator

Version:

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

49 lines (48 loc) 1.53 kB
"use strict"; // src/bsnGenerators.ts Object.defineProperty(exports, "__esModule", { value: true }); exports.generateTestBSN = generateTestBSN; exports.isValidBSN = isValidBSN; /** * Genereert een geldig Nederlands BSN (Burger Service Nummer) voor testdoeleinden. * Een BSN is 9 cijfers en voldoet aan de 11-proef. */ function generateTestBSN() { 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). */ function isValidBSN(bsn) { 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; }