@taiga-ui/addon-commerce
Version:
Extension package for Taiga UI related to commerce, payment systems, currencies etc.
1 lines • 31.4 kB
Source Map (JSON)
{"version":3,"file":"taiga-ui-addon-commerce-utils.mjs","sources":["../../../projects/addon-commerce/utils/get-currency-symbol.ts","../../../projects/addon-commerce/utils/format-currency.ts","../../../projects/addon-commerce/utils/get-code-by-currency.ts","../../../projects/addon-commerce/utils/get-currency-by-code.ts","../../../projects/addon-commerce/utils/get-payment-system.ts","../../../projects/addon-commerce/utils/is-card-length-valid.ts","../../../projects/addon-commerce/utils/is-card-number-valid.ts","../../../projects/addon-commerce/utils/is-expire-valid.ts","../../../projects/addon-commerce/utils/taiga-ui-addon-commerce-utils.ts"],"sourcesContent":["import {\n TuiCurrency,\n TuiCurrencyCode,\n type TuiCurrencyVariants,\n} from '@taiga-ui/addon-commerce/types';\n\nexport function tuiGetCurrencySymbol(currency: TuiCurrencyVariants): string | null {\n switch (currency) {\n case TuiCurrency.ArmenianDram:\n case TuiCurrencyCode.ArmenianDram:\n return '֏';\n case TuiCurrency.AustralianDollar:\n case TuiCurrencyCode.AustralianDollar:\n return 'A$';\n case TuiCurrency.AzerbaijaniManat:\n case TuiCurrencyCode.AzerbaijaniManat:\n return '₼';\n case TuiCurrency.BahrainiDinar:\n case TuiCurrencyCode.BahrainiDinar:\n return 'BD';\n case TuiCurrency.Baht:\n case TuiCurrencyCode.Baht:\n return '฿';\n case TuiCurrency.BelarusianRuble:\n case TuiCurrencyCode.BelarusianRuble:\n return 'Br';\n case TuiCurrency.BrazilianReal:\n case TuiCurrencyCode.BrazilianReal:\n return 'R$';\n case TuiCurrency.CanadianDollar:\n case TuiCurrencyCode.CanadianDollar:\n return 'C$';\n case TuiCurrency.CzechKoruna:\n case TuiCurrencyCode.CzechKoruna:\n return 'Kč';\n case TuiCurrency.Dirham:\n case TuiCurrencyCode.Dirham:\n return 'Dh';\n case TuiCurrency.Dollar:\n case TuiCurrency.MexicanPeso:\n case TuiCurrencyCode.Dollar:\n case TuiCurrencyCode.MexicanPeso:\n return '$';\n case TuiCurrency.EastCaribbeanDollar:\n case TuiCurrencyCode.EastCaribbeanDollar:\n return 'EC$';\n case TuiCurrency.Euro:\n case TuiCurrencyCode.Euro:\n return '€';\n case TuiCurrency.Forint:\n case TuiCurrencyCode.Forint:\n return 'Ft';\n case TuiCurrency.GeorgianLari:\n case TuiCurrencyCode.GeorgianLari:\n return '₾';\n case TuiCurrency.HongKongDollar:\n case TuiCurrencyCode.HongKongDollar:\n return 'HK$';\n case TuiCurrency.Hryvnia:\n case TuiCurrencyCode.Hryvnia:\n return '₴';\n case TuiCurrency.IndianRupee:\n case TuiCurrencyCode.IndianRupee:\n return '₹';\n case TuiCurrency.IndonesianRupiah:\n case TuiCurrencyCode.IndonesianRupiah:\n return 'Rp';\n case TuiCurrency.IranianRial:\n case TuiCurrencyCode.IranianRial:\n return 'IR';\n case TuiCurrency.IsraeliShekel:\n case TuiCurrencyCode.IsraeliShekel:\n return '₪';\n case TuiCurrency.KyrgyzstanSom:\n case TuiCurrencyCode.KyrgyzstanSom:\n return 'c';\n case TuiCurrency.MalaysianRinggit:\n case TuiCurrencyCode.MalaysianRinggit:\n return 'RM';\n case TuiCurrency.MoldovanLeu:\n case TuiCurrencyCode.MoldovanLeu:\n return 'L';\n case TuiCurrency.MongolianTugrik:\n case TuiCurrencyCode.MongolianTugrik:\n return '₮';\n case TuiCurrency.NewTurkmenManat:\n case TuiCurrencyCode.NewTurkmenManat:\n return 'TMT';\n case TuiCurrency.PolandZloty:\n case TuiCurrencyCode.PolandZloty:\n return 'zł';\n case TuiCurrency.Pound:\n case TuiCurrencyCode.Pound:\n return '£';\n case TuiCurrency.Ruble:\n case TuiCurrencyCode.Ruble:\n return '₽';\n case TuiCurrency.SaudiRiyal:\n case TuiCurrencyCode.SaudiRiyal:\n return 'SR';\n case TuiCurrency.SerbianDinar:\n case TuiCurrencyCode.SerbianDinar:\n return 'DIN';\n case TuiCurrency.SingaporeDollar:\n case TuiCurrencyCode.SingaporeDollar:\n return 'S$';\n case TuiCurrency.SouthAfricanRand:\n case TuiCurrencyCode.SouthAfricanRand:\n return 'R';\n case TuiCurrency.SriLankanRupee:\n case TuiCurrencyCode.SriLankanRupee:\n return 'Rs.';\n case TuiCurrency.SwissFranc:\n case TuiCurrencyCode.SwissFranc:\n return '₣';\n case TuiCurrency.TajikistaniSomoni:\n case TuiCurrencyCode.TajikistaniSomoni:\n return 'SM';\n case TuiCurrency.Tenge:\n case TuiCurrencyCode.Tenge:\n return '₸';\n case TuiCurrency.TurkishLira:\n case TuiCurrencyCode.TurkishLira:\n return '₺';\n case TuiCurrency.UzbekSum:\n case TuiCurrencyCode.UzbekSum:\n return \"So'm\";\n case TuiCurrency.VietnameseDong:\n case TuiCurrencyCode.VietnameseDong:\n return 'đ';\n case TuiCurrency.Won:\n case TuiCurrencyCode.Won:\n return '₩';\n case TuiCurrency.Yen:\n case TuiCurrencyCode.Yen:\n return '¥';\n case TuiCurrency.YuanRenminbi:\n case TuiCurrencyCode.YuanRenminbi:\n return 'CN¥';\n default:\n return null;\n }\n}\n","import {type TuiCurrencyVariants} from '@taiga-ui/addon-commerce/types';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {tuiGetCurrencySymbol} from './get-currency-symbol';\n\nfunction stringifyCurrency(currency: TuiCurrencyVariants): string {\n return currency === null || tuiIsString(currency)\n ? currency || ''\n : String(currency).padStart(3, '0');\n}\n\nexport function tuiFormatCurrency(currency: TuiCurrencyVariants): string {\n const stringifiedCurrency = stringifyCurrency(currency);\n\n return tuiGetCurrencySymbol(stringifiedCurrency) || stringifiedCurrency;\n}\n","// cspell:disable\nimport {TuiCurrency, TuiCurrencyCode} from '@taiga-ui/addon-commerce/types';\n\nexport const TUI_CODE_DICTIONARY: Record<TuiCurrency, TuiCurrencyCode> = {\n [TuiCurrency.Ruble]: TuiCurrencyCode.Ruble,\n [TuiCurrency.Dollar]: TuiCurrencyCode.Dollar,\n [TuiCurrency.MexicanPeso]: TuiCurrencyCode.MexicanPeso,\n [TuiCurrency.MoldovanLeu]: TuiCurrencyCode.MoldovanLeu,\n [TuiCurrency.PolandZloty]: TuiCurrencyCode.PolandZloty,\n [TuiCurrency.SingaporeDollar]: TuiCurrencyCode.SingaporeDollar,\n [TuiCurrency.AustralianDollar]: TuiCurrencyCode.AustralianDollar,\n [TuiCurrency.HongKongDollar]: TuiCurrencyCode.HongKongDollar,\n [TuiCurrency.CanadianDollar]: TuiCurrencyCode.CanadianDollar,\n [TuiCurrency.CzechKoruna]: TuiCurrencyCode.CzechKoruna,\n [TuiCurrency.EastCaribbeanDollar]: TuiCurrencyCode.EastCaribbeanDollar,\n [TuiCurrency.Euro]: TuiCurrencyCode.Euro,\n [TuiCurrency.Forint]: TuiCurrencyCode.Forint,\n [TuiCurrency.Pound]: TuiCurrencyCode.Pound,\n [TuiCurrency.Baht]: TuiCurrencyCode.Baht,\n [TuiCurrency.BahrainiDinar]: TuiCurrencyCode.BahrainiDinar,\n [TuiCurrency.TurkishLira]: TuiCurrencyCode.TurkishLira,\n [TuiCurrency.YuanRenminbi]: TuiCurrencyCode.YuanRenminbi,\n [TuiCurrency.Yen]: TuiCurrencyCode.Yen,\n [TuiCurrency.IsraeliShekel]: TuiCurrencyCode.IsraeliShekel,\n [TuiCurrency.IndianRupee]: TuiCurrencyCode.IndianRupee,\n [TuiCurrency.SwissFranc]: TuiCurrencyCode.SwissFranc,\n [TuiCurrency.ArmenianDram]: TuiCurrencyCode.ArmenianDram,\n [TuiCurrency.Won]: TuiCurrencyCode.Won,\n [TuiCurrency.Tenge]: TuiCurrencyCode.Tenge,\n [TuiCurrency.Hryvnia]: TuiCurrencyCode.Hryvnia,\n [TuiCurrency.UzbekSum]: TuiCurrencyCode.UzbekSum,\n [TuiCurrency.KyrgyzstanSom]: TuiCurrencyCode.KyrgyzstanSom,\n [TuiCurrency.Dirham]: TuiCurrencyCode.Dirham,\n [TuiCurrency.TajikistaniSomoni]: TuiCurrencyCode.TajikistaniSomoni,\n [TuiCurrency.MalaysianRinggit]: TuiCurrencyCode.MalaysianRinggit,\n [TuiCurrency.BelarusianRuble]: TuiCurrencyCode.BelarusianRuble,\n [TuiCurrency.GeorgianLari]: TuiCurrencyCode.GeorgianLari,\n [TuiCurrency.AzerbaijaniManat]: TuiCurrencyCode.AzerbaijaniManat,\n [TuiCurrency.SriLankanRupee]: TuiCurrencyCode.SriLankanRupee,\n [TuiCurrency.SerbianDinar]: TuiCurrencyCode.SerbianDinar,\n [TuiCurrency.SaudiRiyal]: TuiCurrencyCode.SaudiRiyal,\n [TuiCurrency.MongolianTugrik]: TuiCurrencyCode.MongolianTugrik,\n [TuiCurrency.SouthAfricanRand]: TuiCurrencyCode.SouthAfricanRand,\n [TuiCurrency.IranianRial]: TuiCurrencyCode.IranianRial,\n [TuiCurrency.IndonesianRupiah]: TuiCurrencyCode.IndonesianRupiah,\n [TuiCurrency.VietnameseDong]: TuiCurrencyCode.VietnameseDong,\n [TuiCurrency.NewTurkmenManat]: TuiCurrencyCode.NewTurkmenManat,\n [TuiCurrency.BrazilianReal]: TuiCurrencyCode.BrazilianReal,\n};\n\nexport function tuiGetCodeByCurrency(code: TuiCurrency): TuiCurrencyCode | null {\n return TUI_CODE_DICTIONARY[code] ?? null;\n}\n","// cspell:disable\nimport {TuiCurrency, TuiCurrencyCode} from '@taiga-ui/addon-commerce/types';\n\nexport const TUI_CURRENCY_DICTIONARY: Record<TuiCurrencyCode, TuiCurrency> = {\n [TuiCurrencyCode.Ruble]: TuiCurrency.Ruble,\n [TuiCurrencyCode.Dollar]: TuiCurrency.Dollar,\n [TuiCurrencyCode.MexicanPeso]: TuiCurrency.MexicanPeso,\n [TuiCurrencyCode.MoldovanLeu]: TuiCurrency.MoldovanLeu,\n [TuiCurrencyCode.PolandZloty]: TuiCurrency.PolandZloty,\n [TuiCurrencyCode.SingaporeDollar]: TuiCurrency.SingaporeDollar,\n [TuiCurrencyCode.AustralianDollar]: TuiCurrency.AustralianDollar,\n [TuiCurrencyCode.HongKongDollar]: TuiCurrency.HongKongDollar,\n [TuiCurrencyCode.CanadianDollar]: TuiCurrency.CanadianDollar,\n [TuiCurrencyCode.CzechKoruna]: TuiCurrency.CzechKoruna,\n [TuiCurrencyCode.EastCaribbeanDollar]: TuiCurrency.EastCaribbeanDollar,\n [TuiCurrencyCode.Euro]: TuiCurrency.Euro,\n [TuiCurrencyCode.Forint]: TuiCurrency.Forint,\n [TuiCurrencyCode.Pound]: TuiCurrency.Pound,\n [TuiCurrencyCode.Baht]: TuiCurrency.Baht,\n [TuiCurrencyCode.BahrainiDinar]: TuiCurrency.BahrainiDinar,\n [TuiCurrencyCode.TurkishLira]: TuiCurrency.TurkishLira,\n [TuiCurrencyCode.YuanRenminbi]: TuiCurrency.YuanRenminbi,\n [TuiCurrencyCode.Yen]: TuiCurrency.Yen,\n [TuiCurrencyCode.IsraeliShekel]: TuiCurrency.IsraeliShekel,\n [TuiCurrencyCode.IndianRupee]: TuiCurrency.IndianRupee,\n [TuiCurrencyCode.SwissFranc]: TuiCurrency.SwissFranc,\n [TuiCurrencyCode.ArmenianDram]: TuiCurrency.ArmenianDram,\n [TuiCurrencyCode.Won]: TuiCurrency.Won,\n [TuiCurrencyCode.Tenge]: TuiCurrency.Tenge,\n [TuiCurrencyCode.Hryvnia]: TuiCurrency.Hryvnia,\n [TuiCurrencyCode.UzbekSum]: TuiCurrency.UzbekSum,\n [TuiCurrencyCode.KyrgyzstanSom]: TuiCurrency.KyrgyzstanSom,\n [TuiCurrencyCode.Dirham]: TuiCurrency.Dirham,\n [TuiCurrencyCode.TajikistaniSomoni]: TuiCurrency.TajikistaniSomoni,\n [TuiCurrencyCode.MalaysianRinggit]: TuiCurrency.MalaysianRinggit,\n [TuiCurrencyCode.BelarusianRuble]: TuiCurrency.BelarusianRuble,\n [TuiCurrencyCode.GeorgianLari]: TuiCurrency.GeorgianLari,\n [TuiCurrencyCode.AzerbaijaniManat]: TuiCurrency.AzerbaijaniManat,\n [TuiCurrencyCode.SriLankanRupee]: TuiCurrency.SriLankanRupee,\n [TuiCurrencyCode.SerbianDinar]: TuiCurrency.SerbianDinar,\n [TuiCurrencyCode.SaudiRiyal]: TuiCurrency.SaudiRiyal,\n [TuiCurrencyCode.MongolianTugrik]: TuiCurrency.MongolianTugrik,\n [TuiCurrencyCode.SouthAfricanRand]: TuiCurrency.SouthAfricanRand,\n [TuiCurrencyCode.IranianRial]: TuiCurrency.IranianRial,\n [TuiCurrencyCode.IndonesianRupiah]: TuiCurrency.IndonesianRupiah,\n [TuiCurrencyCode.VietnameseDong]: TuiCurrency.VietnameseDong,\n [TuiCurrencyCode.NewTurkmenManat]: TuiCurrency.NewTurkmenManat,\n [TuiCurrencyCode.BrazilianReal]: TuiCurrency.BrazilianReal,\n};\n\nexport function tuiGetCurrencyByCode(currency: TuiCurrencyCode): TuiCurrency | null {\n return TUI_CURRENCY_DICTIONARY[currency] ?? null;\n}\n","import {type TuiPaymentSystem} from '@taiga-ui/addon-commerce/types';\n\n// https://en.wikipedia.org/wiki/Payment_card_number#Issuer_identification_number_(IIN)\nexport const TUI_BIN_TABLE: ReadonlyArray<\n [paymentSystem: TuiPaymentSystem, start: number, end?: number]\n> = [\n ['mir', 2200, 2204],\n ['mastercard', 2221, 2720],\n ['jcb', 3528, 3589],\n ['amex', 34],\n ['amex', 37],\n ['dinersclub', 36],\n ['electron', 4026],\n ['electron', 4175],\n ['electron', 4405],\n ['electron', 4508],\n ['electron', 4844],\n ['electron', 4913],\n ['electron', 4917],\n ['visa', 4],\n ['verve', 506099, 506198],\n ['verve', 507865, 507964],\n ['maestro', 5018],\n ['maestro', 5020],\n ['maestro', 5038],\n ['maestro', 5090],\n ['maestro', 5890],\n ['maestro', 5893],\n ['rupay', 508],\n ['maestro', 50],\n ['mastercard', 51, 55],\n ['maestro', 56],\n ['maestro', 58],\n ['mastercard', 5],\n ['maestro', 6000],\n ['maestro', 6304],\n ['maestro', 6759, 6763],\n ['verve', 650002, 650027],\n ['maestro', 676770],\n ['maestro', 676774],\n ['discover', 644, 649],\n ['discover', 6011],\n ['rupay', 60],\n ['unionpay', 62],\n ['discover', 65],\n ['maestro', 6],\n ['rupay', 81, 82],\n ['uzcard', 8600],\n ['humo', 9860],\n];\n\nexport function tuiGetPaymentSystem(\n cardNumber?: string | null,\n supported?: TuiPaymentSystem[],\n): TuiPaymentSystem | null {\n if (!cardNumber) {\n return null;\n }\n\n const row = TUI_BIN_TABLE.find(([paymentSystem, start, end = start]) => {\n const cardNumberNumeric = Number.parseInt(\n cardNumber.slice(0, String(start).length),\n 10,\n );\n\n const match = cardNumberNumeric >= start && cardNumberNumeric <= end;\n\n return match && (!supported?.length || supported.includes(paymentSystem));\n });\n\n return row?.[0] ?? null;\n}\n\nexport function tuiIsMaestro(three: number, two: number, one: number): boolean {\n if (one === 6) {\n return true;\n }\n\n if (two === 50 || (two > 55 && two < 59)) {\n return true;\n }\n\n if (three < 500) {\n return false;\n }\n\n return three < 510;\n}\n\nexport function tuiIsMastercard(four: number, two: number, one: number): boolean {\n if (one === 5) {\n return true;\n }\n\n if (two < 10) {\n return false;\n }\n\n if (two > 50 && two < 56) {\n return true;\n }\n\n if (four < 1000) {\n return false;\n }\n\n return four > 2220 && four < 2721;\n}\n\nexport function tuiIsMir(four: number): boolean {\n return four > 2199 && four < 2205;\n}\n\nexport function tuiIsElectron(four: number): boolean {\n switch (four) {\n case 4026:\n case 4175:\n case 4405:\n case 4508:\n case 4844:\n case 4913:\n case 4917:\n return true;\n default:\n return false;\n }\n}\n\nexport function tuiIsVisa(one: number): boolean {\n return one === 4;\n}\n","import {tuiGetPaymentSystem} from './get-payment-system';\n\n/**\n * Validates card number length using payment system dictionary\n */\nexport function tuiIsCardLengthValid(cardNumber: string): boolean {\n const {length} = cardNumber;\n const paymentSystem = tuiGetPaymentSystem(cardNumber);\n\n switch (paymentSystem) {\n case 'electron':\n return length === 16;\n case 'maestro':\n return length > 11 && length < 20;\n case 'mastercard':\n case 'mir':\n return length > 15 && length < 20;\n case 'visa':\n return length > 12 && length < 20;\n default:\n return length > 8 && length < 20;\n }\n}\n","import {TUI_NON_DIGITS_REGEXP} from '@taiga-ui/cdk/constants';\n\n/**\n * Validates card number using Luhn algorithm\n */\nexport function tuiIsCardNumberValid(value: number | string): boolean {\n const cardNumber = String(value).replace(TUI_NON_DIGITS_REGEXP, '');\n\n const {length} = cardNumber;\n const arr = cardNumber.split('').map((char, index) => {\n const digit = parseInt(char, 10);\n\n if ((index + length) % 2 === 0) {\n const digitX2 = digit * 2;\n\n return digitX2 > 9 ? digitX2 - 9 : digitX2;\n }\n\n return digit;\n });\n\n return !(arr.reduce((a, b) => a + b, 0) % 10);\n}\n","import {tuiClamp} from '@taiga-ui/cdk/utils/math';\n\nexport function tuiIsExpireValid(expire: string, today = new Date()): boolean {\n const currentMonth = today.getMonth() + 1;\n const currentYear = today.getFullYear() - 2000;\n const expireMonth = tuiClamp(parseInt(expire.slice(0, 2), 10), 1, 12);\n const expireYear = tuiClamp(parseInt(expire.slice(-2), 10), 0, 99);\n\n return (\n expireYear > currentYear ||\n (currentYear === expireYear && expireMonth >= currentMonth)\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}