UNPKG

masked-input-utils-ts

Version:

Reusable masking utility for PAN, Aadhar, CVV, Mobile Numbers, Email with TypeScript support

43 lines (42 loc) 1.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.maskPAN = maskPAN; exports.maskAadhar = maskAadhar; exports.maskCVV = maskCVV; exports.maskMobile = maskMobile; exports.maskEmail = maskEmail; exports.maskGeneric = maskGeneric; function maskPAN(pan, showPartial = true) { if (!/^[A-Z]{5}[0-9]{4}[A-Z]{1}$/.test(pan)) return 'Invalid PAN'; return showPartial ? `${pan.slice(0, 2)}*****${pan.slice(-3)}` : '***********'; } function maskAadhar(aadhar) { const cleaned = aadhar.replace(/\D/g, ''); if (cleaned.length !== 12) return 'Invalid Aadhar'; return `XXXX-XXXX-${cleaned.slice(-4)}`; } function maskCVV(cvv) { return /^\d{3,4}$/.test(cvv) ? '*'.repeat(cvv.length) : 'Invalid CVV'; } function maskMobile(mobile) { const cleaned = mobile.replace(/\D/g, ''); if (cleaned.length !== 10) return 'Invalid Mobile Number'; return `${cleaned.slice(0, 2)}******${cleaned.slice(-2)}`; } function maskEmail(email) { const [user, domain] = email.split('@'); if (!user || !domain) return 'Invalid Email'; return `${user[0]}${'*'.repeat(user.length - 1)}@${domain}`; } function maskGeneric(str, options) { const { unmaskedStart, unmaskedEnd, maskChar = '*' } = options; if (!str || str.length < unmaskedStart + unmaskedEnd) return maskChar.repeat(str.length); return (str.slice(0, unmaskedStart) + maskChar.repeat(str.length - unmaskedStart - unmaskedEnd) + str.slice(-unmaskedEnd)); }