{"version":3,"file":"Validators-eX6_8wdj.js","sources":["../../../app/javascript/shared/helpers/Validators.js"],"sourcesContent":["/**\n * Checks if a string is a valid E.164 phone number format.\n * @param {string} value - The phone number to validate.\n * @returns {boolean} True if the number is in E.164 format, false otherwise.\n */\nexport const isPhoneE164 = value => !!value.match(/^\\+[1-9]\\d{1,14}$/);\n\n/**\n * Validates a phone number after removing the dial code.\n * @param {string} value - The full phone number including dial code.\n * @param {string} dialCode - The dial code to remove before validation.\n * @returns {boolean} True if the number (without dial code) is valid, false otherwise.\n */\nexport const isPhoneNumberValid = (value, dialCode) => {\n const number = value.replace(dialCode, '');\n return !!number.match(/^[0-9]{1,14}$/);\n};\n\n/**\n * Checks if a string is either a valid E.164 phone number or empty.\n * @param {string} value - The phone number to validate.\n * @returns {boolean} True if the number is in E.164 format or empty, false otherwise.\n */\nexport const isPhoneE164OrEmpty = value => isPhoneE164(value) || value === '';\n\n/**\n * Validates a phone number with dial code, requiring at least 5 digits.\n * @param {string} value - The full phone number including dial code.\n * @returns {boolean} True if the number is valid, false otherwise.\n */\nexport const isPhoneNumberValidWithDialCode = value => {\n const number = value.replace(/^\\+/, ''); // Remove the '+' sign\n return !!number.match(/^[1-9]\\d{4,}$/); // Validate the phone number with minimum 5 digits\n};\n\n/**\n * Checks if a string starts with a plus sign.\n * @param {string} value - The string to check.\n * @returns {boolean} True if the string starts with '+', false otherwise.\n */\nexport const startsWithPlus = value => value.startsWith('+');\n\n/**\n * Checks if a string is a valid URL (starts with 'http') or is empty.\n * @param {string} [value=''] - The string to check.\n * @returns {boolean} True if the string is a valid URL or empty, false otherwise.\n */\nexport const shouldBeUrl = (value = '') =>\n value ? value.startsWith('http') : true;\n\n/**\n * Validates a password for complexity requirements.\n * @param {string} value - The password to validate.\n * @returns {boolean} True if the password meets all requirements, false otherwise.\n */\nexport const isValidPassword = value => {\n const containsUppercase = /[A-Z]/.test(value);\n const containsLowercase = /[a-z]/.test(value);\n const containsNumber = /[0-9]/.test(value);\n const containsSpecialCharacter = /[!@#$%^&*()_+\\-=[\\]{}|'\"/\\\\.,`<>:;?~]/.test(\n value\n );\n return (\n containsUppercase &&\n containsLowercase &&\n containsNumber &&\n containsSpecialCharacter\n );\n};\n\n/**\n * Checks if a string consists only of digits.\n * @param {string} value - The string to check.\n * @returns {boolean} True if the string contains only digits, false otherwise.\n */\nexport const isNumber = value => /^\\d+$/.test(value);\n\n/**\n * Validates a domain name.\n * @param {string} value - The domain name to validate.\n * @returns {boolean} True if the domain is valid or empty, false otherwise.\n */\nexport const isDomain = value => {\n if (value !== '') {\n const domainRegex = /^([\\p{L}0-9]+(-[\\p{L}0-9]+)*\\.)+[a-z]{2,}$/gmu;\n return domainRegex.test(value);\n }\n return true;\n};\n\n/**\n * Creates a RegExp object from a string representation of a regular expression.\n * @param {string} regexPatternValue - The string representation of the regex (e.g., '/pattern/flags').\n * @returns {RegExp} A RegExp object created from the input string.\n */\nexport const getRegexp = regexPatternValue => {\n let lastSlash = regexPatternValue.lastIndexOf('/');\n return new RegExp(\n regexPatternValue.slice(1, lastSlash),\n regexPatternValue.slice(lastSlash + 1)\n );\n};\n"],"names":["isPhoneE164","value","isPhoneNumberValid","dialCode","isPhoneE164OrEmpty","isPhoneNumberValidWithDialCode","startsWithPlus","shouldBeUrl","isValidPassword","containsUppercase","containsLowercase","containsNumber","containsSpecialCharacter","isNumber","isDomain","getRegexp","regexPatternValue","lastSlash"],"mappings":"AAKO,MAAMA,EAAcC,GAAS,CAAC,CAACA,EAAM,MAAM,mBAAmB,EAQxDC,EAAqB,CAACD,EAAOE,IAEjC,CAAC,CADOF,EAAM,QAAQE,EAAU,EAAE,EACzB,MAAM,eAAe,EAQ1BC,EAAqBH,GAASD,EAAYC,CAAK,GAAKA,IAAU,GAO9DI,EAAiCJ,GAErC,CAAC,CADOA,EAAM,QAAQ,MAAO,EAAE,EACtB,MAAM,eAAe,EAQ1BK,EAAiBL,GAASA,EAAM,WAAW,GAAG,EAO9CM,EAAc,CAACN,EAAQ,KAClCA,EAAQA,EAAM,WAAW,MAAM,EAAI,GAOxBO,EAAkBP,GAAS,CACtC,MAAMQ,EAAoB,QAAQ,KAAKR,CAAK,EACtCS,EAAoB,QAAQ,KAAKT,CAAK,EACtCU,EAAiB,QAAQ,KAAKV,CAAK,EACnCW,EAA2B,wCAAwC,KACvEX,CACJ,EACE,OACEQ,GACAC,GACAC,GACAC,CAEJ,EAOaC,EAAWZ,GAAS,QAAQ,KAAKA,CAAK,EAOtCa,EAAWb,GAClBA,IAAU,GACQ,gDACD,KAAKA,CAAK,EAExB,GAQIc,EAAYC,GAAqB,CAC5C,IAAIC,EAAYD,EAAkB,YAAY,GAAG,EACjD,OAAO,IAAI,OACTA,EAAkB,MAAM,EAAGC,CAAS,EACpCD,EAAkB,MAAMC,EAAY,CAAC,CACzC,CACA"}