dataveil
Version:
A robust TypeScript library for masking sensitive data including card numbers, emails, passwords, phone numbers, and more.
27 lines (26 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.maskCardNumber = maskCardNumber;
function maskCardNumber(cardNumber, options) {
if (options === void 0) { options = {}; }
if (!cardNumber || typeof cardNumber !== 'string') {
throw new Error('Card number must be a non-empty string');
}
if (cardNumber.length > 50) {
throw new Error('Card number too long (maximum: 50 characters)');
}
var _a = options.maskChar, maskChar = _a === void 0 ? "*" : _a, _b = options.unmaskedStartDigits, unmaskedStartDigits = _b === void 0 ? 0 : _b, _c = options.unmaskedEndDigits, unmaskedEndDigits = _c === void 0 ? 4 : _c;
if (!maskChar || maskChar.length !== 1) {
throw new Error('Mask character must be a single character');
}
if (unmaskedStartDigits < 0 || unmaskedEndDigits < 0) {
throw new Error('Unmasked digits cannot be negative');
}
if (unmaskedStartDigits + unmaskedEndDigits >= cardNumber.length) {
return cardNumber;
}
var start = cardNumber.slice(0, unmaskedStartDigits);
var end = cardNumber.slice(-unmaskedEndDigits);
var masked = maskChar.repeat(cardNumber.length - start.length - end.length);
return start + masked + end;
}