UNPKG

@visa/nova-react

Version:

Visa Product Design System Nova React library

18 lines (17 loc) 3.21 kB
/** * Copyright (c) 2025 Visa, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **/ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=[4,4,4,4],t={AMERICAN_EXPRESS:{binRegex:RegExp("^3(4|7)\\d*$"),binRegexes:[RegExp("^3(4|7)\\d*$")],brand:"AMERICAN_EXPRESS",lengths:[15],maxLength:15,spacingPattern:[4,6,5]},DISCOVER:{binRegex:RegExp("^6(5|011|4[4-9]|22((1[2-9][6-9])|[2-8][0-9]{2}|9([0-1][0-9]|2[0-5])))\\d*$"),binRegexes:[RegExp("^6011\\d{2,}$"),RegExp("^65\\d$"),RegExp("^64[4-9]\\d{3,}$"),RegExp("^622(1[2-9][6-9]|[2-8][0-9]{2}|9([0-1][0-9]|2[0-5]))\\d*$")],brand:"DISCOVER",lengths:[16,19],maxLength:19,spacingPattern:e},ELO:{binRegex:RegExp("^(50(4175|6(699|7\\d{2})|9\\d{3})|636(297|368))\\d*$"),binRegexes:[RegExp("^50(4175|6(699|7\\d{2}))\\d*$"),RegExp("^509\\d{3,}$"),RegExp("^636(297|368)\\d*$")],brand:"ELO",lengths:[16],maxLength:16,spacingPattern:e},MAESTRO:{binRegex:RegExp("^(5018|5020|5038|5893|6304|6759|676[1-3]|676770|676774)\\d*$"),binRegexes:[RegExp("^(5018|5020|5038|5893|6304|6759|676770|676774)\\d*$"),RegExp("^676[1-3]\\d*$")],brand:"MAESTRO",lengths:[12,13,14,15,16,17,18,19],maxLength:19,spacingPatterns:{13:[4,4,5],15:[4,6,5],16:e,19:[4,4,4,4,3]}},MASTER_CARD:{binRegex:RegExp("^(5[1-5]|2(22[1-9]|2[3-9]\\d|[3-6]\\d{2}|7[0-1]\\d|720))\\d*$"),binRegexes:[RegExp("^5[1-5]\\d*$"),RegExp("^2(22[1-9]|2[3-9]\\d|[3-6]\\d{2}|7[0-1]\\d|720)\\d*$")],brand:"MASTER_CARD",lengths:[16],maxLength:16,spacingPattern:e},VISA:{binRegex:RegExp("^4\\d*$"),binRegexes:[RegExp("^4\\d*$")],brand:"VISA",lengths:[13,16,19],maxLength:19,spacingPattern:e}},r=Object.values(t),a=(e,t)=>{const r=e.length;return!!t?.some((e=>r===e))},n=(e,t=r)=>t.find((t=>t.binRegex.test(e))),g=(t,r=e)=>{let a=0;return(r.reduce(((e,r)=>{const n=a;return a+=r,e+t.slice(n,n+r)+" "}),"")+t.slice(a)).trim()},d=(e,t)=>g(e,t?.spacingPatterns?t.spacingPatterns[e.length]:t?.spacingPattern),s=(e,t=10)=>{const r=e.length-1;let a=0;for(let t=0;t<=r;t++){const n=+e[r-t];if(t%2){const e=2*n;a+=e>9?e-9:e}else a+=n}return a%t==0},x=(e,t)=>void 0===t?e:e.slice(0,t),i=e=>e.replace(/\D/g,"");var o={cardNumberLengthCheck:a,cardValidators:t,cardValidatorsArray:r,defaultSpacingPattern:e,findCardValidatorFromBinRegex:n,formatCardNumber:g,formatCardNumberFromValidator:d,moduloCheck:s,removeCharactersAfterMaxLength:x,removeNonDigits:i};exports.cardNumberLengthCheck=a,exports.cardValidators=t,exports.cardValidatorsArray=r,exports.default=o,exports.defaultSpacingPattern=e,exports.findCardValidatorFromBinRegex=n,exports.formatCardNumber=g,exports.formatCardNumberFromValidator=d,exports.moduloCheck=s,exports.removeCharactersAfterMaxLength=x,exports.removeNonDigits=i;