UNPKG

@taiga-ui/addon-commerce

Version:

Extension package for Taiga UI related to commerce, payment systems, currencies etc.

18 lines 2.75 kB
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