@taiga-ui/addon-commerce
Version:
Extension package for Taiga UI related to commerce, payment systems, currencies etc.
18 lines • 2.75 kB
JavaScript
import { TUI_NON_DIGITS_REGEXP } from '@taiga-ui/cdk/constants';
/**
* Validates card number using Luhn algorithm
*/
export function tuiIsCardNumberValid(value) {
const cardNumber = String(value).replace(TUI_NON_DIGITS_REGEXP, '');
const { length } = cardNumber;
const arr = cardNumber.split('').map((char, index) => {
const digit = parseInt(char, 10);
if ((index + length) % 2 === 0) {
const digitX2 = digit * 2;
return digitX2 > 9 ? digitX2 - 9 : digitX2;
}
return digit;
});
return !(arr.reduce((a, b) => a + b, 0) % 10);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtY2FyZC1udW1iZXItdmFsaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1jb21tZXJjZS91dGlscy9pcy1jYXJkLW51bWJlci12YWxpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RDs7R0FFRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxLQUFzQjtJQUN2RCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRXBFLE1BQU0sRUFBQyxNQUFNLEVBQUMsR0FBRyxVQUFVLENBQUM7SUFDNUIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDakQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUUxQixPQUFPLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUM5QztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VFVJX05PTl9ESUdJVFNfUkVHRVhQfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5cbi8qKlxuICogVmFsaWRhdGVzIGNhcmQgbnVtYmVyIHVzaW5nIEx1aG4gYWxnb3JpdGhtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0dWlJc0NhcmROdW1iZXJWYWxpZCh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY2FyZE51bWJlciA9IFN0cmluZyh2YWx1ZSkucmVwbGFjZShUVUlfTk9OX0RJR0lUU19SRUdFWFAsICcnKTtcblxuICAgIGNvbnN0IHtsZW5ndGh9ID0gY2FyZE51bWJlcjtcbiAgICBjb25zdCBhcnIgPSBjYXJkTnVtYmVyLnNwbGl0KCcnKS5tYXAoKGNoYXIsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGRpZ2l0ID0gcGFyc2VJbnQoY2hhciwgMTApO1xuXG4gICAgICAgIGlmICgoaW5kZXggKyBsZW5ndGgpICUgMiA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgZGlnaXRYMiA9IGRpZ2l0ICogMjtcblxuICAgICAgICAgICAgcmV0dXJuIGRpZ2l0WDIgPiA5ID8gZGlnaXRYMiAtIDkgOiBkaWdpdFgyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRpZ2l0O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICEoYXJyLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApICUgMTApO1xufVxuIl19