@taiga-ui/addon-commerce
Version:
Extension package for Taiga UI related to commerce, payment systems, currencies etc.
105 lines • 11.2 kB
JavaScript
// https://en.wikipedia.org/wiki/Payment_card_number#Issuer_identification_number_(IIN)
export const TUI_BIN_TABLE = [
['mir', 2200, 2204],
['mastercard', 2221, 2720],
['jcb', 3528, 3589],
['amex', 34],
['amex', 37],
['dinersclub', 36],
['electron', 4026],
['electron', 4175],
['electron', 4405],
['electron', 4508],
['electron', 4844],
['electron', 4913],
['electron', 4917],
['visa', 4],
['verve', 506099, 506198],
['verve', 507865, 507964],
['maestro', 5018],
['maestro', 5020],
['maestro', 5038],
['maestro', 5090],
['maestro', 5890],
['maestro', 5893],
['rupay', 508],
['maestro', 50],
['mastercard', 51, 55],
['maestro', 56],
['maestro', 58],
['mastercard', 5],
['maestro', 6000],
['maestro', 6304],
['maestro', 6759, 6763],
['verve', 650002, 650027],
['maestro', 676770],
['maestro', 676774],
['discover', 644, 649],
['discover', 6011],
['rupay', 60],
['unionpay', 62],
['discover', 65],
['maestro', 6],
['rupay', 81, 82],
['uzcard', 8600],
['humo', 9860],
];
export function tuiGetPaymentSystem(cardNumber, supported) {
if (!cardNumber) {
return null;
}
const row = TUI_BIN_TABLE.find(([paymentSystem, start, end = start]) => {
const cardNumberNumeric = Number.parseInt(cardNumber.slice(0, String(start).length), 10);
const match = cardNumberNumeric >= start && cardNumberNumeric <= end;
return match && (!supported?.length || supported.includes(paymentSystem));
});
return row?.[0] ?? null;
}
export function tuiIsMaestro(three, two, one) {
if (one === 6) {
return true;
}
if (two === 50 || (two > 55 && two < 59)) {
return true;
}
if (three < 500) {
return false;
}
return three < 510;
}
export function tuiIsMastercard(four, two, one) {
if (one === 5) {
return true;
}
if (two < 10) {
return false;
}
if (two > 50 && two < 56) {
return true;
}
if (four < 1000) {
return false;
}
return four > 2220 && four < 2721;
}
export function tuiIsMir(four) {
return four > 2199 && four < 2205;
}
export function tuiIsElectron(four) {
switch (four) {
case 4026:
case 4175:
case 4405:
case 4508:
case 4844:
case 4913:
case 4917:
return true;
default:
return false;
}
}
export function tuiIsVisa(one) {
return one === 4;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBheW1lbnQtc3lzdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tY29tbWVyY2UvdXRpbHMvZ2V0LXBheW1lbnQtc3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLHVGQUF1RjtBQUN2RixNQUFNLENBQUMsTUFBTSxhQUFhLEdBRXRCO0lBQ0EsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztJQUNuQixDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0lBQzFCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7SUFDbkIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQ1osQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQ1osQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO0lBQ2xCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztJQUNsQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7SUFDbEIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO0lBQ2xCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztJQUNsQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7SUFDbEIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO0lBQ2xCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztJQUNsQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ3pCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDekIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDO0lBQ2pCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQztJQUNqQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUM7SUFDakIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDO0lBQ2pCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FB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QUFJLEdBQUcsR0FBRyxFQUFFLEVBQUU7UUFDdEIsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUVELElBQUksSUFBSSxHQUFHLElBQUksRUFBRTtRQUNiLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBRUQsT0FBTyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsSUFBWTtJQUNqQyxPQUFPLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFZO0lBQ3RDLFFBQVEsSUFBSSxFQUFFO1FBQ1YsS0FBSyxJQUFJLENBQUM7UUFDVixLQUFLLElBQUksQ0FBQztRQUNWLEtBQUssSUFBSSxDQUFDO1FBQ1YsS0FBSyxJQUFJLENBQUM7UUFDVixLQUFLLElBQUksQ0FBQztRQUNWLEtBQUssSUFBSSxDQUFDO1FBQ1YsS0FBSyxJQUFJO1lBQ0wsT0FBTyxJQUFJLENBQUM7UUFDaEI7WUFDSSxPQUFPLEtBQUssQ0FBQztLQUNwQjtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQVc7SUFDakMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3R5cGUgVHVpUGF5bWVudFN5c3RlbX0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlL3R5cGVzJztcblxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGF5bWVudF9jYXJkX251bWJlciNJc3N1ZXJfaWRlbnRpZmljYXRpb25fbnVtYmVyXyhJSU4pXG5leHBvcnQgY29uc3QgVFVJX0JJTl9UQUJMRTogUmVhZG9ubHlBcnJheTxcbiAgICBbcGF5bWVudFN5c3RlbTogVHVpUGF5bWVudFN5c3RlbSwgc3RhcnQ6IG51bWJlciwgZW5kPzogbnVtYmVyXVxuPiA9IFtcbiAgICBbJ21pcicsIDIyMDAsIDIyMDRdLFxuICAgIFsnbWFzdGVyY2FyZCcsIDIyMjEsIDI3MjBdLFxuICAgIFsnamNiJywgMzUyOCwgMzU4OV0sXG4gICAgWydhbWV4JywgMzRdLFxuICAgIFsnYW1leCcsIDM3XSxcbiAgICBbJ2RpbmVyc2NsdWInLCAzNl0sXG4gICAgWydlbGVjdHJvbicsIDQwMjZdLFxuICAgIFsnZWxlY3Ryb24nLCA0MTc1XSxcbiAgICBbJ2VsZWN0cm9uJywgNDQwNV0sXG4gICAgWydlbGVjdHJvbicsIDQ1MDhdLFxuICAgIFsnZWxlY3Ryb24nLCA0ODQ0XSxcbiAgICBbJ2VsZWN0cm9uJywgNDkxM10sXG4gICAgWydlbGVjdHJvbicsIDQ5MTddLFxuICAgIFsndmlzYScsIDRdLFxuICAgIFsndmVydmUnLCA1MDYwOTksIDUwNjE5OF0sXG4gICAgWyd2ZXJ2ZScsIDUwNzg2NSwgNTA3OTY0XSxcbiAgICBbJ21hZXN0cm8nLCA1MDE4XSxcbiAgICBbJ21hZXN0cm8nLCA1MDIwXSxcbiAgICBbJ21hZXN0cm8nLCA1MDM4XSxcbiAgICBbJ21hZXN0cm8nLCA1MDkwXSxcbiAgICBbJ21hZXN0cm8nLCA1ODkwXSxcbiAgICBbJ21hZXN0cm8nLCA1ODkzXSxcbiAgICBbJ3J1cGF5JywgNTA4XSxcbiAgICBbJ21hZXN0cm8nLCA1MF0sXG4gICAgWydtYXN0ZXJjYXJkJywgNTEsIDU1XSxcbiAgICBbJ21hZXN0cm8nLCA1Nl0sXG4gICAgWydtYWVzdHJvJywgNThdLFxuICAgIFsnbWFzdGVyY2FyZCcsIDVdLFxuICAgIFsnbWFlc3RybycsIDYwMDBdLFxuICAgIFsnbWFlc3RybycsIDYzMDRdLFxuICAgIFsnbWFlc3RybycsIDY3NTksIDY3NjNdLFxuICAgIFsndmVydmUnLCA2NTAwMDIsIDY1MDAyN10sXG4gICAgWydtYWVzdHJvJywgNjc2NzcwXSxcbiAgICBbJ21hZXN0cm8nLCA2NzY3NzRdLFxuICAgIFsnZGlzY292ZXInLCA2NDQsIDY0OV0sXG4gICAgWydkaXNjb3ZlcicsIDYwMTFdLFxuICAgIFsncnVwYXknLCA2MF0sXG4gICAgWyd1bmlvbnBheScsIDYyXSxcbiAgICBbJ2Rpc2NvdmVyJywgNjVdLFxuICAgIFsnbWFlc3RybycsIDZdLFxuICAgIFsncnVwYXknLCA4MSwgODJdLFxuICAgIFsndXpjYXJkJywgODYwMF0sXG4gICAgWydodW1vJywgOTg2MF0sXG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gdHVpR2V0UGF5bWVudFN5c3RlbShcbiAgICBjYXJkTnVtYmVyPzogc3RyaW5nIHwgbnVsbCxcbiAgICBzdXBwb3J0ZWQ/OiBUdWlQYXltZW50U3lzdGVtW10sXG4pOiBUdWlQYXltZW50U3lzdGVtIHwgbnVsbCB7XG4gICAgaWYgKCFjYXJkTnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJvdyA9IFRVSV9CSU5fVEFCTEUuZmluZCgoW3BheW1lbnRTeXN0ZW0sIHN0YXJ0LCBlbmQgPSBzdGFydF0pID0+IHtcbiAgICAgICAgY29uc3QgY2FyZE51bWJlck51bWVyaWMgPSBOdW1iZXIucGFyc2VJbnQoXG4gICAgICAgICAgICBjYXJkTnVtYmVyLnNsaWNlKDAsIFN0cmluZyhzdGFydCkubGVuZ3RoKSxcbiAgICAgICAgICAgIDEwLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IG1hdGNoID0gY2FyZE51bWJlck51bWVyaWMgPj0gc3RhcnQgJiYgY2FyZE51bWJlck51bWVyaWMgPD0gZW5kO1xuXG4gICAgICAgIHJldHVybiBtYXRjaCAmJiAoIXN1cHBvcnRlZD8ubGVuZ3RoIHx8IHN1cHBvcnRlZC5pbmNsdWRlcyhwYXltZW50U3lzdGVtKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm93Py5bMF0gPz8gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUlzTWFlc3Rybyh0aHJlZTogbnVtYmVyLCB0d286IG51bWJlciwgb25lOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAob25lID09PSA2KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0d28gPT09IDUwIHx8ICh0d28gPiA1NSAmJiB0d28gPCA1OSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRocmVlIDwgNTAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhyZWUgPCA1MTA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlJc01hc3RlcmNhcmQoZm91cjogbnVtYmVyLCB0d286IG51bWJlciwgb25lOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBpZiAob25lID09PSA1KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0d28gPCAxMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHR3byA+IDUwICYmIHR3byA8IDU2KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChmb3VyIDwgMTAwMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdXIgPiAyMjIwICYmIGZvdXIgPCAyNzIxO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpSXNNaXIoZm91cjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZvdXIgPiAyMTk5ICYmIGZvdXIgPCAyMjA1O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpSXNFbGVjdHJvbihmb3VyOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKGZvdXIpIHtcbiAgICAgICAgY2FzZSA0MDI2OlxuICAgICAgICBjYXNlIDQxNzU6XG4gICAgICAgIGNhc2UgNDQwNTpcbiAgICAgICAgY2FzZSA0NTA4OlxuICAgICAgICBjYXNlIDQ4NDQ6XG4gICAgICAgIGNhc2UgNDkxMzpcbiAgICAgICAgY2FzZSA0OTE3OlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpSXNWaXNhKG9uZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG9uZSA9PT0gNDtcbn1cbiJdfQ==