UNPKG

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
"use strict"; 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; }