UNPKG

@blocklet/payment-react

Version:

Reusable react components for payment kit v2

201 lines (200 loc) 5.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFieldValidation = getFieldValidation; exports.postalCodePatterns = void 0; exports.validatePostalCode = validatePostalCode; var _locales = require("../locales"); const threeDigit = /^\d{3}$/; const fourDigit = /^\d{4}$/; const fiveDigit = /^\d{5}$/; const sixDigit = /^\d{6}$/; const postalCodePatterns = exports.postalCodePatterns = { GB: /^GIR[ ]?0AA|((AB|AL|B|BA|BB|BD|BH|BL|BN|BR|BS|BT|CA|CB|CF|CH|CM|CO|CR|CT|CV|CW|DA|DD|DE|DG|DH|DL|DN|DT|DY|E|EC|EH|EN|EX|FK|FY|G|GL|GY|GU|HA|HD|HG|HP|HR|HS|HU|HX|IG|IM|IP|IV|JE|KA|KT|KW|KY|L|LA|LD|LE|LL|LN|LS|LU|M|ME|MK|ML|N|NE|NG|NN|NP|NR|NW|OL|OX|PA|PE|PH|PL|PO|PR|RG|RH|RM|S|SA|SE|SG|SK|SL|SM|SN|SO|SP|SR|SS|ST|SW|SY|TA|TD|TF|TN|TQ|TR|TS|TW|UB|W|WA|WC|WD|WF|WN|WR|WS|WV|YO|ZE)(\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}))|BFPO[ ]?\d{1,4}$/i, JE: /^JE\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}$/i, GG: /^GY\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}$/i, IM: /^IM\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}$/i, US: /^\d{5}([ -]\d{4})?$/, CA: /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][ ]?\d[ABCEGHJ-NPRSTV-Z]\d$/i, DE: /^\d{5}$/, JP: /^\d{3}-?\d{4}$/, FR: /^\d{2}[ ]?\d{3}$/, AU: fourDigit, IT: /^\d{5}$/, CH: fourDigit, AT: fourDigit, ES: /^\d{5}$/, NL: /^\d{4}[ ]?[A-Z]{2}$/i, BE: fourDigit, DK: fourDigit, SE: /^\d{3}[ ]?\d{2}$/, NO: fourDigit, BR: /^\d{5}-?\d{3}$/, PT: /^\d{4}(-\d{3})?$/, FI: fiveDigit, AX: /^22\d{3}$/, KR: /^\d{5}$/, // 2015年起使用5位数字邮编 CN: /^\d{6}$/, TW: /^\d{3}(\d{2})?$/, SG: sixDigit, DZ: fiveDigit, AD: /^AD\d{3}$/, AR: /^([A-HJ-NP-Z])?\d{4}([A-Z]{3})?$/i, AM: /^(37)?\d{4}$/, AZ: /^\d{4}$/, BH: /^((1[0-2]|[2-9])\d{2})?$/, BD: fourDigit, BB: /^(BB\d{5})?$/i, BY: sixDigit, BM: /^[A-Z]{2}[ ]?[A-Z0-9]{2}$/i, BA: /^\d{5}$/, IO: /^BBND 1ZZ$/i, BN: /^[A-Z]{2}[ ]?\d{4}$/i, BG: fourDigit, KH: fiveDigit, CV: fourDigit, CL: /^\d{7}$/, CR: /^\d{4,5}|\d{3}-\d{4}$/, HR: /^\d{5}$/, CY: fourDigit, CZ: /^\d{3}[ ]?\d{2}$/, DO: fiveDigit, EC: /^([A-Z]\d{4}[A-Z]|(?:[A-Z]{2})?\d{6})?$/i, EG: fiveDigit, EE: fiveDigit, FO: threeDigit, GE: fourDigit, GR: /^\d{3}[ ]?\d{2}$/, GL: /^39\d{2}$/, GT: fiveDigit, HT: /^\d{4}$/, HN: /^(?:\d{5})?$/, HU: fourDigit, IS: threeDigit, IN: /^[1-9]\d{5}$/, ID: fiveDigit, IL: fiveDigit, JO: fiveDigit, KZ: sixDigit, KE: fiveDigit, KW: fiveDigit, LA: fiveDigit, LV: fourDigit, LB: /^(\d{4}([ ]?\d{4})?)?$/, LI: /^(948[5-9])|(949[0-7])$/, LT: fiveDigit, LU: fourDigit, MK: fourDigit, MY: fiveDigit, MV: fiveDigit, MT: /^[A-Z]{3}[ ]?\d{2,4}$/i, MU: /^(\d{3}[A-Z]{2}\d{3})?$/i, MX: fiveDigit, MD: fourDigit, MC: /^980\d{2}$/, MA: fiveDigit, NP: fiveDigit, NZ: fourDigit, NI: /^((\d{4}-)?\d{3}-\d{3}(-\d{1})?)?$/, NG: /^(\d{6})?$/, OM: /^(PC )?\d{3}$/i, PK: fiveDigit, PY: fourDigit, PH: fourDigit, PL: /^\d{2}-\d{3}$/, PR: /^00[679]\d{2}([ -]\d{4})?$/, RO: sixDigit, RU: sixDigit, SM: /^4789\d$/, SA: fiveDigit, SN: fiveDigit, SK: /^\d{3}[ ]?\d{2}$/, SI: fourDigit, ZA: fourDigit, LK: fiveDigit, TJ: sixDigit, TH: fiveDigit, TN: fourDigit, TR: fiveDigit, TM: sixDigit, UA: fiveDigit, UY: fiveDigit, UZ: sixDigit, VA: /^00120$/, VE: fourDigit, ZM: fiveDigit, // Territories & special regions AS: /^96799$/, CC: /^6799$/, CK: fourDigit, RS: sixDigit, ME: /^8\d{4}$/, CS: /^\d{5}$/, // historical YU: /^\d{5}$/, // historical CX: /^6798$/, ET: fourDigit, FK: /^FIQQ 1ZZ$/i, NF: /^2899$/, FM: /^(9694[1-4])([ -]\d{4})?$/, GF: /^9[78]3\d{2}$/, GN: threeDigit, GP: /^9[78][01]\d{2}$/, GS: /^SIQQ 1ZZ$/i, GU: /^969[123]\d([ -]\d{4})?$/, GW: fourDigit, HM: fourDigit, IQ: fiveDigit, KG: sixDigit, LR: fourDigit, LS: threeDigit, MG: threeDigit, MH: /^969[67]\d([ -]\d{4})?$/, MN: sixDigit, MP: /^9695[012]([ -]\d{4})?$/, MQ: /^9[78]2\d{2}$/, NC: /^988\d{2}$/, NE: fourDigit, VI: /^008(([0-4]\d)|(5[01]))([ -]\d{4})?$/, VN: sixDigit, PF: /^987\d{2}$/, PG: threeDigit, PM: /^9[78]5\d{2}$/, PN: /^PCRN 1ZZ$/i, PW: /^96940$/, RE: /^9[78]4\d{2}$/, SH: /^(ASCN|STHL) 1ZZ$/i, SJ: fourDigit, SO: fiveDigit, SZ: /^[HLMS]\d{3}$/i, TC: /^TKCA 1ZZ$/i, WF: /^986\d{2}$/, XK: fiveDigit, YT: /^976\d{2}$/ }; function validatePostalCode(postalCode, country) { if (!postalCode) return true; try { const countryUpper = country?.toUpperCase(); if (!countryUpper) return false; return !postalCodePatterns[countryUpper] || postalCodePatterns[countryUpper].test(postalCode); } catch (error) { console.error(error); return false; } } function getFieldValidation(fieldName, validations, locale = "en") { if (!validations || !validations[fieldName]) return {}; const fieldValidation = validations[fieldName]; const rules = {}; if (fieldValidation.pattern) { rules.pattern = { value: new RegExp(fieldValidation.pattern), message: fieldValidation.pattern_message?.[locale] || (0, _locales.t)("payment.checkout.invalid", locale) }; } return rules; }