{"version":3,"sources":["../src/parsers/parseToArray.ts","../src/helpers/parsePiecesToDate.ts","../src/helpers/comparePiecesToDate.ts","../src/helpers/mapToPieces.ts","../src/parsers/parseToDate.ts","../src/parsers/parseToNumber.ts","../src/helpers/calculateCAEPFDigit.ts","../src/helpers/generateCAEPFCheckSums.ts","../src/helpers/isRepeatedValue.ts","../src/helpers/mapToNumeric.ts","../src/helpers/mapToNumbers.ts","../src/validators/isCAEPF.ts","../src/validators/isCEP.ts","../src/helpers/generateCheckSums.ts","../src/helpers/getRemaining.ts","../src/helpers/mapToAlphanumericNumbers.ts","../src/validators/isCNPJAlphanumeric.ts","../src/validators/isCNPJ.ts","../src/validators/isCPF.ts","../src/validators/isDate.ts","../src/validators/isDDD.ts","../src/validators/isPhone.ts","../src/validators/isCPFOrCNPJ.ts","../src/helpers/addPeriods.ts","../src/formatters/formatToBRL.ts","../src/formatters/formatToCAEPF.ts","../src/helpers/capitalizeWord.ts","../src/helpers/normalizeWhiteSpaces.ts","../src/helpers/splitIntoWords.ts","../src/formatters/formatToCapitalized.ts","../src/formatters/formatToCEP.ts","../src/formatters/formatToCNPJ.ts","../src/helpers/mapToAlphanumeric.ts","../src/formatters/formatToCNPJAlphanumeric.ts","../src/formatters/formatToCPF.ts","../src/formatters/formatToCPFOrCNPJ.ts","../src/helpers/fillWithZeros.ts","../src/formatters/formatToDate.ts","../src/formatters/formatToDateTime.ts","../src/formatters/formatToGenericPhone.ts","../src/models/Range.ts","../src/parsers/parseToCharacters.ts","../src/formatters/formatToHiddenDigits.ts","../src/helpers/splitOnLast.ts","../src/formatters/formatToList.ts","../src/formatters/formatToNumber.ts","../src/formatters/formatToPhone.ts","../src/formatters/formatToRG.ts"],"sourcesContent":["/**\n * Parses a brazilian formatted list into an Array.\n * @example\n * parseToArray('');\n * //=> []\n * parseToArray('1');\n * //=> ['1']\n * parseToArray('1 e 2');\n * //=> ['1', '2']\n * parseToArray('1, 2, 3, 4 e 5');\n * //=> ['1', '2', '3', '4', '5']\n * parseToArray('Fernanda, Luana e Ana Carolina');\n * //=> ['Fernanda', 'Luana', 'Ana Carolina']\n * @param value - A brazilian formatted list.\n */\nconst parseToArray = (value: string): string[] => {\n  if (!value.trim()) return [];\n  const items = value.split(\" e \");\n  if (items.length === 1) return items;\n  const first = items[0];\n  const second = items[1];\n  if (!first || !second) return items;\n  return first.split(\", \").concat(second);\n};\n\nexport default parseToArray;\n","import DateTimePieces from \"../models/DateTimePieces\";\n\n/**\n * Transforms pieces of a date into a Date instance.\n * @param pieces - Date pieces.\n */\nconst parsePiecesToDate = (\n  pieces: DateTimePieces,\n): Date => new Date(pieces.year, pieces.month, pieces.date, pieces.hours, pieces.minutes, pieces.seconds);\n\nexport default parsePiecesToDate;\n","import DateTimePieces from '../models/DateTimePieces';\nimport parsePiecesToDate from './parsePiecesToDate';\n\n/**\n * Compare pieces of a date to values obtained from a Date instance.\n * @param pieces - Pieces of a date (date, month, year, hours, minutes and seconds).\n * @param instance - A Date instance.\n */\nconst comparePiecesToDate = (\n  pieces: DateTimePieces,\n  instance: Date = parsePiecesToDate(pieces),\n): boolean => (\n  instance.getDate() === pieces.date &&\n  instance.getMonth() === pieces.month &&\n  instance.getFullYear() === pieces.year &&\n  instance.getHours() === pieces.hours &&\n  instance.getMinutes() === pieces.minutes &&\n  instance.getSeconds() === pieces.seconds\n);\n\nexport default comparePiecesToDate;\n","import DateTimePieces from \"../models/DateTimePieces\";\n\n/**\n * Resolve a brazilian formatted date or datetime into date, month, year  pieces and hours, minutes and seconds pieces (if contains time).\n * @param value - A date in DD/MM/YYYY or DD/MM/YYYY HH:mm:ss.\n */\nconst mapToPieces = (value: string): DateTimePieces => {\n  const expression =\n    /^(\\d{2})\\/(\\d{2})\\/(\\d{4})( (\\d{2}):(\\d{2})(:(\\d{2}))?)?$/;\n  const [, DD, MM, YYYY, , HH, mm, , ss] = expression.exec(value)!;\n  return {\n    date: parseInt(DD ?? \"0\", 10),\n    year: parseInt(YYYY ?? \"0\", 10),\n    month: parseInt(MM ?? \"0\", 10) - 1,\n    hours: parseInt(HH ?? \"0\", 10),\n    minutes: parseInt(mm ?? \"0\", 10),\n    seconds: parseInt(ss ?? \"0\", 10),\n  };\n};\n\nexport default mapToPieces;\n","import comparePiecesToDate from '../helpers/comparePiecesToDate';\nimport mapToPieces from '../helpers/mapToPieces';\nimport parsePiecesToDate from '../helpers/parsePiecesToDate';\n\n/**\n * A `RegExp` that matches common brazilian date and, optionally, time formats.\n *\n * In date and time the seconds are optional too. So the valid formats are:\n * \"DD/MM/YYYY\", \"DD/MM/YYYY HH:mm\" and \"DD/MM/YYYY HH:mm:ss\".\n */\nconst DATE_TIME_PATTERN = /^\\d{2}\\/\\d{2}\\/\\d{4}( \\d{2}:\\d{2}(:\\d{2})?)?$/;\n\n/**\n * Parses a brazilian formatted date into a Date instance.\n * @example ```js\n * parseToDate('28/03/1996')\n * //=> '1996-03-28T03:00:00.000Z'\n *\n * parseToDate('31/02/2018')\n * //=> throws Error('Value \"31/02/2018\" is an invalid date.')\n * ```\n * @param value - A date in DD/MM/YYYY.\n */\nconst parseToDate = (\n  value: string,\n): Date => {\n  if (!DATE_TIME_PATTERN.test(value))\n    throw new Error(`Value \"${value}\" does not match format.`);\n  const pieces = mapToPieces(value);\n  const instance = parsePiecesToDate(pieces);\n  if (!comparePiecesToDate(pieces, instance))\n    throw new Error(`Value \"${value}\" is an invalid date.`);\n  return instance;\n};\n\nexport default parseToDate;\n","/**\n * Parses brazilian formatted number to number.\n * @example\n * parseToNumber('10')\n * //=> 10\n * parseToNumber('-1.299')\n * //=> -1299\n * parseToNumber('0,981')\n * //=> 0.981\n * parseToNumber('19.898,1298')\n * //=> 19898.1298\n * @param value - A brazilian formatted number.\n */\nconst parseToNumber = (\n  value: string,\n): number => Number(value.replace(/\\./g, '').replace(',', '.'));\n\nexport default parseToNumber;\n","/**\n * Generate the next digit from a CAEPF number.\n * @param numbers - Numbers used to generate checkers.\n * @param validators - Validators used to generate checkers.\n */\n const calculateCAEPFDigit = (\n  numbers: Array<number>,\n  validators: Array<number>,\n): number => {\n  const digit = numbers.reduce(\n    (digit, value, index) => digit += Number(value) * Number(validators[index]), 0\n  )\n  \n  return (digit % 11) % 10\n}\n\nexport default calculateCAEPFDigit","import calculateCAEPFDigit from \"./calculateCAEPFDigit\";\nimport { CheckSums } from \"./generateCheckSums\";\n\n/**\n * Generate CAEPF checksums. Generate simple checksums, add 12 and subtract 100\n * if it's more than that. Used to validate document number.\n * @param numbers - Numbers used to generate checkers.\n * @param validators - Validators used to generate checkers.\n */\nconst generateCAEPFCheckSums = (\n  numbers: Array<number>,\n  validators: Array<number>,\n): CheckSums => {\n  const value = numbers.slice()\n  value[12] = (calculateCAEPFDigit(value.slice(0, 12), validators.slice(1, 13)))\n  value[13] = (calculateCAEPFDigit(value.slice(0, 13), validators))\n\n  const dv = (Number(`${value[12]}${value[13]}`) + 12) % 100\n\n  return [Math.floor(dv / 10), dv % 10]\n};\n\nexport default generateCAEPFCheckSums;\n","/**\n * Check if items are same, if their values are repeated.\n * @param item\n */\nconst isRepeatedArray = <T>(\n  items: Array<T>,\n): boolean => items.every((item) => items[0] === item);\n\nexport default isRepeatedArray;\n","/**\n * Matches every non-numeric characters.\n */\nconst NonNumeric = /\\D/g;\n\n/**\n * Maps to a text containing only numeric characters.\n * @param value - A text containing numbers.\n */\nconst mapToNumeric = (\n  value: string,\n): string => value.replace(NonNumeric, '');\n\nexport default mapToNumeric;\n","import mapToNumeric from './mapToNumeric';\n\n/**\n * Maps a text to a collection of it's numbers.\n * @param value - A text containing numbers.\n */\nconst mapToNumbers = (\n  value: string,\n): Array<number> => mapToNumeric(value).split('').map(Number);\n\nexport default mapToNumbers;\n","import generateCAEPFCheckSums from \"../helpers/generateCAEPFCheckSums\";\nimport isRepeatedArray from \"../helpers/isRepeatedValue\";\nimport mapToNumbers from \"../helpers/mapToNumbers\";\n\n/**\n * Pattern to match formatted CAEPF (999.999.999/999-99) or 14 numbers.\n */\nexport const CAEPF_PATTERN = /^(\\d{14}|\\d{3}\\.\\d{3}\\.\\d{3}\\/\\d{3}\\-\\d{2})$/;\n\n/**\n * Check if value is a valid CAEPF.\n * @example ```js\n * isCAEPF('41142260000101')\n * //=> true\n *\n * isCAEPF('411.422.600/001-01')\n * //=> true\n *\n * isCAEPF('111.111.111/111-11')\n * //=> false\n *\n * isCAEPF('411407182')\n * //=> false\n *\n * ```\n * @param value - A text containing a CAEPF.\n */\nconst isCAEPF = (value: string): boolean => {\n  if (!CAEPF_PATTERN.test(value)) return false;\n  const numbers = mapToNumbers(value);\n  if (isRepeatedArray(numbers)) return false;\n  const validators = [5, 6, 7, 8, 9, 2, 3, 4, 5, 6, 7, 8, 9];\n  const checkers = generateCAEPFCheckSums(numbers, validators);\n  return numbers[12] === checkers[0] && numbers[13] === checkers[1];\n};\n\nexport default isCAEPF;\n","/**\n * Pattern to match formatted CEP (99999-999) or 8 numbers.\n */\nconst CEP_PATTERN = /^(\\d{8}|\\d{2}\\.?\\d{3}\\-\\d{3})$/;\n\n/**\n * Check if value is a valid CEP.\n * @example ```js\n * isCEP('50.833-000')\n * //=> true\n *\n * isCEP('02998-050')\n * //=> true\n *\n * isCEP('00000000')\n * //=> true\n *\n * isCEP('0')\n * //=> false\n *\n * isCEP('1982891928981982198')\n * //=> false\n * ```\n * @param value - A text containing a CEP.\n */\nconst isCEP = (\n  value: string,\n): boolean => CEP_PATTERN.test(value);\n\nexport default isCEP;\n","/**\n * Numbers used to check a document or something containing numbers.\n */\nexport type CheckSums = [number, number];\n\n/**\n * Generate check sums. Multiply numbers to validators and sum them to generate\n * check sums, they're used to check if numbers are valid.\n * @param numbers - Numbers used to generate checkers.\n * @param validators - Validators used to generate checkers.\n */\nconst generateCheckSums = (\n  numbers: Array<number>,\n  validators: Array<number>\n): CheckSums => {\n  const initialCheckSums: CheckSums = [0, 0];\n\n  return validators.reduce(\n    ([checkerA, checkerB], validator, index) =>\n      [\n        index === 0 ? 0 : checkerA + (numbers[index - 1] ?? 0) * validator,\n        checkerB + (numbers[index] ?? 0) * validator,\n      ] as CheckSums,\n    initialCheckSums\n  );\n};\n\nexport default generateCheckSums;\n","/**\n * Get remaining of 11 or `0` if lower than 2.\n * @param value - Value used remaining.\n */\nconst getRemaining = (\n  value: number,\n): number => (value % 11) < 2 ? 0 : 11 - (value % 11);\n\nexport default getRemaining;\n","/**\n * Matches every non-alphanumeric characters.\n */\nconst NonAlphaNumeric = /[^0-9a-z]/gi;\n\nconst NumericBaseCode = \"0\".charCodeAt(0);\n\n/**\n * Maps a text to a collection of its alphanumeric numbers.\n * @param value - A text containing alphanumeric characters.\n */\nconst mapToAlphanumericNumbers = (value: string): Array<number> =>\n  value\n    .replace(NonAlphaNumeric, \"\")\n    .toUpperCase()\n    .split(\"\")\n    .map((character) => character.charCodeAt(0) - NumericBaseCode);\n\nexport default mapToAlphanumericNumbers;\n","import mapToAlphanumericNumbers from \"../helpers/mapToAlphanumericNumbers\";\n\n/**\n * Pattern to match formatted CNPJ alphanumeric (AA.AAA.AAA/AAAA-99) or 14 characters.\n */\nexport const CNPJ_ALPHANUMERIC_PATTERN =\n  /^([0-9A-Za-z]{12}\\d{2}|[0-9A-Za-z]{2}\\.[0-9A-Za-z]{3}\\.[0-9A-Za-z]{3}\\/[0-9A-Za-z]{4}-\\d{2})$/;\n\nconst CNPJ_ALPHANUMERIC_MASK = /[./-]/g;\nconst CNPJ_ALPHANUMERIC_INVALID_CHARS = /[^A-Z\\d./-]/i;\nconst CNPJ_ALPHANUMERIC_NO_DV_PATTERN = /^([A-Z\\d]){12}$/;\nconst CNPJ_ALPHANUMERIC_PATTERN_NO_MASK = /^([A-Z\\d]){12}(\\d){2}$/;\nconst CNPJ_ALPHANUMERIC_ZERO = \"00000000000000\";\nconst CNPJ_ALPHANUMERIC_LENGTH = 12;\nconst CNPJ_ALPHANUMERIC_WEIGHTS = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * Check if value is a valid alphanumeric CNPJ.\n * @example ```js\n * isCNPJAlphanumeric('AB12CD34EF5602')\n * //=> true\n *\n * isCNPJAlphanumeric('AB.12C.D34/EF56-02')\n * //=> true\n *\n * isCNPJAlphanumeric('AB12CD34EF5600')\n * //=> false\n * ```\n * @param value - A text containing an alphanumeric CNPJ.\n */\nconst isCNPJAlphanumeric = (value: string): boolean => {\n  if (!CNPJ_ALPHANUMERIC_PATTERN.test(value)) return false;\n  if (CNPJ_ALPHANUMERIC_INVALID_CHARS.test(value)) return false;\n  const sanitized = value.replace(CNPJ_ALPHANUMERIC_MASK, \"\").toUpperCase();\n  if (!CNPJ_ALPHANUMERIC_PATTERN_NO_MASK.test(sanitized)) return false;\n  if (sanitized === CNPJ_ALPHANUMERIC_ZERO) return false;\n  const cnpjWithoutDv = sanitized.substring(0, CNPJ_ALPHANUMERIC_LENGTH);\n  if (!CNPJ_ALPHANUMERIC_NO_DV_PATTERN.test(cnpjWithoutDv)) return false;\n  if (\n    cnpjWithoutDv ===\n    CNPJ_ALPHANUMERIC_ZERO.substring(0, CNPJ_ALPHANUMERIC_LENGTH)\n  )\n    return false;\n  const numbers = mapToAlphanumericNumbers(cnpjWithoutDv);\n  let sumFirst = 0;\n  let sumSecond = 0;\n  for (let index = 0; index < CNPJ_ALPHANUMERIC_LENGTH; index += 1) {\n    sumFirst +=\n      (numbers[index] ?? 0) * (CNPJ_ALPHANUMERIC_WEIGHTS[index + 1] ?? 0);\n    sumSecond +=\n      (numbers[index] ?? 0) * (CNPJ_ALPHANUMERIC_WEIGHTS[index] ?? 0);\n  }\n  const digitFirst = sumFirst % 11 < 2 ? 0 : 11 - (sumFirst % 11);\n  sumSecond +=\n    digitFirst * (CNPJ_ALPHANUMERIC_WEIGHTS[CNPJ_ALPHANUMERIC_LENGTH] ?? 0);\n  const digitSecond = sumSecond % 11 < 2 ? 0 : 11 - (sumSecond % 11);\n  const dvInformed = sanitized.substring(CNPJ_ALPHANUMERIC_LENGTH);\n  return dvInformed === `${digitFirst}${digitSecond}`;\n};\n\nexport default isCNPJAlphanumeric;\n","import generateCheckSums from \"../helpers/generateCheckSums\";\nimport getRemaining from \"../helpers/getRemaining\";\nimport isRepeatedArray from \"../helpers/isRepeatedValue\";\nimport mapToNumbers from \"../helpers/mapToNumbers\";\nimport isCNPJAlphanumeric from \"./isCNPJAlphanumeric\";\n\n/**\n * Pattern to match formatted CNPJ (99.999.999/9999-99) or 14 numbers.\n */\nexport const CNPJ_PATTERN = /^(\\d{14}|\\d{2}\\.\\d{3}\\.\\d{3}\\/\\d{4}\\-\\d{2})$/;\n\n/**\n * Check if value is a valid CNPJ (numeric or alphanumeric).\n * Accepts both traditional numeric CNPJs and new alphanumeric CNPJs (valid from 2026).\n * @example ```js\n * isCNPJ('41142260000189')\n * //=> true\n *\n * isCNPJ('45.723.174/0001-10')\n * //=> true\n *\n * isCNPJ('AB12CD34EF5602')\n * //=> true\n *\n * isCNPJ('AB.12C.D34/EF56-02')\n * //=> true\n *\n * isCNPJ('411407182')\n * //=> false\n *\n * isCNPJ('11.111.111/1111-11')\n * //=> false\n * ```\n * @param value - A text containing a CNPJ.\n */\nconst isCNPJ = (value: string): boolean => {\n  // First, try to validate as alphanumeric CNPJ\n  if (isCNPJAlphanumeric(value)) {\n    return true;\n  }\n\n  // If not alphanumeric, validate as numeric CNPJ\n  if (!CNPJ_PATTERN.test(value)) return false;\n  const numbers = mapToNumbers(value);\n  if (isRepeatedArray(numbers)) return false;\n  const validators = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n  const checkers = generateCheckSums(numbers, validators);\n  return (\n    numbers[12] === getRemaining(checkers[0]) &&\n    numbers[13] === getRemaining(checkers[1])\n  );\n};\n\nexport default isCNPJ;\n","import generateCheckSums from '../helpers/generateCheckSums';\nimport getRemaining from '../helpers/getRemaining';\nimport isRepeatedArray from '../helpers/isRepeatedValue';\nimport mapToNumbers from '../helpers/mapToNumbers';\n\n/**\n * Pattern to match formatted CPF (999.999.999-99) or 11 numbers.\n */\nexport const CPF_PATTERN = /^(\\d{11}|\\d{3}\\.\\d{3}\\.\\d{3}\\-\\d{2})$/;\n\n/**\n * Check if value is a valid CPF.\n * @example ```js\n * isCPF('366.418.768-70')\n * //=> true\n *\n * isCPF('36641876870')\n * //=> true\n *\n * isCPF('213.198.013-20')\n * //=> false\n *\n * isCPF('2131201872781')\n * //=> false\n *\n * isCPF('11111111111')\n * //=> false\n * ```\n * @param value - A text containing a CPF.\n */\nconst isCPF = (\n  value: string,\n): boolean => {\n  if (!CPF_PATTERN.test(value))\n    return false;\n  const numbers = mapToNumbers(value);\n  if (isRepeatedArray(numbers))\n    return false;\n  const validators = [ 11, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];\n  const checkers = generateCheckSums(numbers, validators);\n  return (\n    numbers[9] === getRemaining(checkers[0]) &&\n    numbers[10] === getRemaining(checkers[1])\n  );\n};\n\nexport default isCPF;\n","import comparePiecesToDate from '../helpers/comparePiecesToDate';\nimport mapToPieces from '../helpers/mapToPieces';\n\n/**\n * Pattern to match brazilian formatted dates (99/99/9999).\n */\nconst DATE_PATTERN = /^\\d{2}\\/\\d{2}\\/\\d{4}((\\s)?(\\d{2}:\\d{2}:\\d{2}))?$/;\n\n/**\n * Check if a brazilian formatted date is valid.\n * @example ```js\n * isDate('03/08/2017')\n * //=> true\n *\n * isDate('28/13/2017')\n * //=> false\n *\n * isDate('03-08-2017')\n * //=> false\n *\n * isDate('31/03/18')\n * //=> false\n * ```\n * @param value - A date in DD/MM/YYYY.\n */\nconst isDate = (\n  value: string,\n): boolean => DATE_PATTERN.test(value) && comparePiecesToDate(mapToPieces(value));\n\nexport default isDate;\n","/**\n * Brazilian valid DDD (direct dialing at a distance) codes.\n */\nconst DDDs = [\n  \"11\",\n  \"12\",\n  \"13\",\n  \"14\",\n  \"15\",\n  \"16\",\n  \"17\",\n  \"18\",\n  \"19\",\n  \"21\",\n  \"22\",\n  \"24\",\n  \"27\",\n  \"28\",\n  \"31\",\n  \"32\",\n  \"33\",\n  \"34\",\n  \"35\",\n  \"37\",\n  \"38\",\n  \"41\",\n  \"42\",\n  \"43\",\n  \"44\",\n  \"45\",\n  \"46\",\n  \"47\",\n  \"48\",\n  \"49\",\n  \"51\",\n  \"53\",\n  \"54\",\n  \"55\",\n  \"61\",\n  \"62\",\n  \"63\",\n  \"64\",\n  \"65\",\n  \"66\",\n  \"67\",\n  \"68\",\n  \"69\",\n  \"71\",\n  \"73\",\n  \"74\",\n  \"75\",\n  \"77\",\n  \"79\",\n  \"81\",\n  \"82\",\n  \"83\",\n  \"84\",\n  \"85\",\n  \"86\",\n  \"87\",\n  \"88\",\n  \"89\",\n  \"91\",\n  \"92\",\n  \"93\",\n  \"94\",\n  \"95\",\n  \"96\",\n  \"97\",\n  \"98\",\n  \"99\"\n];\n\n/**\n * Check if value is a valid DDD.\n * @example ```js\n * isDDD('81')\n * //=> true\n * \n * isDDD('10')\n * //=> false\n * \n * isDDD('A#')\n * //=> false\n * ```\n * @param code \n */\nconst isDDD = (\n  code: string,\n): boolean => DDDs.indexOf(code) !== -1;\n\nexport default isDDD;\n","import isDDD from './isDDD';\n\n/**\n * Pattern for common brazilian telephone number formats, optionally with DDI,\n * DDD and the ninth digit.\n */\nconst PHONE_PATTERN = /^(\\+55)? ?\\(?(\\d{2})?\\)? ?9?\\d{4}[-| ]?\\d{4}$/;\n\n/**\n * Check if value is a valid brazilian phone number. It can check a wide\n * variety of formats optionally with DDI, DDD and the ninth digit.\n * \n * @example ```js\n * isPhone('+55 (11) 98273-1182')\n * //=> true\n * \n * isPhone('11 98273 1182')\n * //=> true\n * \n * isPhone('1139723768')\n * //=> true\n * \n * isPhone('(23) 3972-3768')\n * //=> false\n * \n * isPhone('(13) 65093-2093')\n * //=> false\n * \n * isPhone('(81) 555 178')\n * //=> false\n * ```\n * @param value \n */\nconst isPhone = (\n  value: string,\n): boolean => {\n  if (!PHONE_PATTERN.test(value))\n    return false;\n  const [,,DDD] = PHONE_PATTERN.exec(value)!;\n  return DDD ? isDDD(DDD): true;\n};\n\nexport default isPhone;\n","import isCNPJ, { CNPJ_PATTERN } from \"./isCNPJ\";\nimport { CNPJ_ALPHANUMERIC_PATTERN } from \"./isCNPJAlphanumeric\";\nimport isCPF, { CPF_PATTERN } from \"./isCPF\";\n\nconst PATTERNS = [CPF_PATTERN, CNPJ_PATTERN, CNPJ_ALPHANUMERIC_PATTERN];\n\n/**\n * Check if a value is a valid CPF or CNPJ (numeric or alphanumeric)\n * Accepts traditional numeric CPFs and CNPJs, as well as new alphanumeric CNPJs (valid from 2026).\n * @example ```js\n * isCPFOrCNPJ('366.418.768-70')\n * //=> true\n *\n * isCPFOrCNPJ('36641876870')\n * //=> true\n *\n * isCPFOrCNPJ('213.198.013-20')\n * //=> false\n *\n * isCPFOrCNPJ('2131201872781')\n * //=> false\n *\n * isCPFOrCNPJ('11111111111')\n * //=> false\n *\n * isCPFOrCNPJ('41142260000189')\n * //=> true\n *\n * isCPFOrCNPJ('45.723.174/0001-10')\n * //=> true\n *\n * isCPFOrCNPJ('AB12CD34EF5602')\n * //=> true\n *\n * isCPFOrCNPJ('AB.12C.D34/EF56-02')\n * //=> true\n *\n * isCPFOrCNPJ('411407182')\n * //=> false\n *\n * isCPFOrCNPJ('11.111.111/1111-11')\n * //=> false\n * ```\n * @param value - A text containing a CPF or CNPJ\n */\nconst isCPFOrCNPJ = (value: string): boolean => {\n  const matches = PATTERNS.map((pattern) => pattern.test(value));\n\n  if (!matches.includes(true)) return false;\n\n  // If it matches CPF pattern, validate as CPF\n  if (matches[0]) return isCPF(value);\n\n  // Otherwise, validate as CNPJ (numeric or alphanumeric)\n  return isCNPJ(value);\n};\n\nexport default isCPFOrCNPJ;\n","/**\n * Add periods to a numeric string value.\n * @param value - A numeric string value.\n */\nconst addPeriods = (\n  value: string,\n): string => value.replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1.');\n\nexport default addPeriods;\n","import addPeriods from \"../helpers/addPeriods\";\n\n/**\n * Formats a number into money (BRL) format.\n * @example ```js\n * formatToBRL(1928.93)\n * //=> 'R$ 1.928,93'\n *\n * formatToBRL('9211928.18203')\n * //=> 'R$ 9.211.928,18'\n *\n * formatToBRL(-18.49)\n * //=> 'R$ -18,49'\n * ```\n * @param value BRL value.\n */\nconst formatToBRL = (\n  value: number | string,\n): string => {\n  const number = Number(value).toFixed(2).replace('.', ',');\n  return 'R$ ' + addPeriods(number);\n};\n\nexport default formatToBRL;\n","import mapToNumeric from '../helpers/mapToNumeric';\n\n/**\n * Formats step-by-step a `string` value into a CAEPF.\n * @example ```js\n * formatToCAEPF('1234567')\n * //=> '123.456.7'\n *\n * formatToCAEPF('12345678900199')\n * //=> '123.456.789/001-99'\n *\n * formatToCAEPF('00.000.0.0--0-0000.00')\n * //=> '000.000.000/000-00'\n * \n * formatToCAEPF('123.456.789/001-99')\n * //=> '123.456.789/001-99'\n * ```\n * @param value - A `string` value of a CAEPF.\n */\nconst formatToCAEPF = (\n  value: string,\n): string => (\n  mapToNumeric(value)\n    .replace(/(\\d{3})(\\d)/, '$1.$2')\n    .replace(/(\\d{3})(\\d)/, '$1.$2')\n    .replace(/(\\d{3})(\\d)/, '$1/$2')\n    .replace(/(\\d{3})(\\d{1,2})$/, '$1-$2')\n);\n\nexport default formatToCAEPF;\n","/**\n * Capitalizes a word.\n * @param word - A `string` (word) to be capitalized.\n */\nconst capitalizeWord = (\n  word: string,\n): string => (\n  word.charAt(0).toLocaleUpperCase() + word.substr(1).toLocaleLowerCase()\n);\n\nexport default capitalizeWord;\n","/**\n * Normalize white spaces in a `string` (value).\n * @param value - A `string` to be normalized.\n */\nconst normalizeWhiteSpaces = (\n  value: string,\n): string => value.trim().replace(/\\s+/g, ' ');\n\nexport default normalizeWhiteSpaces;\n","/**\n * Splits text into words.\n * @param text - A `string` to be splitted into words.\n */\nconst splitIntoWords = (\n  text: string,\n): string[] => text ? text.split(/\\s+/) : [];\n\nexport default splitIntoWords;\n","import capitalizeWord from '../helpers/capitalizeWord';\nimport normalizeWhiteSpaces from '../helpers/normalizeWhiteSpaces';\nimport splitIntoWords from '../helpers/splitIntoWords';\n\n/**\n * Options for `formatToCapitalizedd` function.\n */\ntype Options = {\n  wordsToKeepLowerCase?: string[];\n  wordsToKeepUpperCase?: string[];\n  trimTrailingWhiteSpaces?: boolean;\n};\n\n/**\n * A list of default words to keep upper case.\n */\nconst DEFAULT_WORDS_TO_KEEP_UPPER_CASE = [\n  'cnpj',\n  'cpf',\n  'ltda',\n  'qp',\n  'tv',\n];\n\n/**\n * A list of default words to keep lower case.\n */\nconst DEFAULT_WORDS_TO_KEEP_LOWER_CASE = [\n  'a',\n  'com',\n  'da',\n  'das',\n  'de',\n  'do',\n  'dos',\n  'e',\n  'em',\n  'i',\n  'na',\n  'nas',\n  'no',\n  'nos',\n  'o',\n  'por',\n  'sem',\n  'u',\n];\n\n/**\n * Capitaliza as palavras de um texto, com exceção das palavras configuradas\n * para serem deixadas em caixa-alta ou em caixa-baixa (menos a primeira palavra\n * que não será caixa-baixa mesmo se configurada como).\n *\n * @example ```js\n * formatToCapitalized('SERVIDOR PÚBLICO MUNICIPAL')\n * //=> 'Servidor Público Municipal'\n *\n * formatToCapitalized('   os PrimEIROS  HOMens da tERra', {\n *   wordsToKeepLowerCase: ['os', 'da']\n * })\n * //=> 'Os Primeiros Homens da Terra'\n *\n * formatToCapitalized('nova tv foi lançada', {\n *   wordsToKeepUpperCase: ['tv']\n * })\n * //=> 'Nova TV Foi Lançada'\n *\n * formatToCapitalized(' com espaços antes e depois ', {\n *   trimTrailingWhiteSpaces: false\n * })\n * //=> ' Com Espaços Antes e Depois '\n * ```\n * @param value - A `string` to capitalize\n */\nconst formatToCapitalized = (\n  value: string,\n  {\n    wordsToKeepLowerCase = DEFAULT_WORDS_TO_KEEP_LOWER_CASE,\n    wordsToKeepUpperCase = DEFAULT_WORDS_TO_KEEP_UPPER_CASE,\n    trimTrailingWhiteSpaces = true,\n  }: Options = {}\n): string => (\n  splitIntoWords(trimTrailingWhiteSpaces ? normalizeWhiteSpaces(value) : value)\n    .map((word, index, words) => {\n      const isFirstWord = (word && index === 0) || (!words[0] && index === 1);\n      const wordInLowerCase = word.toLocaleLowerCase();\n      if (!isFirstWord && wordsToKeepLowerCase.indexOf(wordInLowerCase) !== -1)\n        return wordInLowerCase;\n      if (wordsToKeepUpperCase.indexOf(wordInLowerCase) !== -1)\n        return word.toLocaleUpperCase();\n      return capitalizeWord(word);\n    })\n    .join(\" \")\n);\n\nexport default formatToCapitalized;\n","import mapToNumeric from '../helpers/mapToNumeric';\n\n/**\n * Format a `string` number sequence into CEP format.\n * @example ```js\n * formatToCEP('15998030')\n * //=> '15998-030'\n *\n * formatToCEP('02999')\n * //=> '02999'\n * ```\n * @param value A `string` with CEP numbers.\n */\nconst formatToCEP = (\n  value: string,\n): string => (\n  mapToNumeric(value)\n    .replace(/(\\d{5})(\\d{1,3})/, '$1-$2')\n);\n\nexport default formatToCEP;\n","import mapToNumeric from '../helpers/mapToNumeric';\n\n/**\n * Formats step-by-step a `string` value into a CNPJ.\n * @example ```js\n * formatToCNPJ('128781')\n * //=> '12.878.1'\n *\n * formatToCNPJ('32284981000138')\n * //=> '32.284.981/0001-38'\n *\n * formatToCNPJ('00.0.000.00.00--00-00')\n * //=> '00.000.000/0000-00'\n * ```\n * @param value - A `string` value of a CNPJ.\n */\nconst formatToCNPJ = (\n  value: string,\n): string => (\n  mapToNumeric(value)\n    .replace(/(\\d{2})(\\d)/, '$1.$2')\n    .replace(/(\\d{3})(\\d)/, '$1.$2')\n    .replace(/(\\d{3})(\\d)/, '$1/$2')\n    .replace(/(\\d{4})(\\d{1,2})$/, '$1-$2')\n);\n\nexport default formatToCNPJ;\n","/**\n * Matches every non-alphanumeric character (keeps letters and numbers).\n */\nconst NonAlphanumeric = /[^A-Z0-9]/gi;\n\n/**\n * Maps to a text containing only alphanumeric characters (letters and numbers).\n * @param value - A text containing alphanumeric characters.\n */\nconst mapToAlphanumeric = (value: string): string =>\n  value.replace(NonAlphanumeric, \"\");\n\nexport default mapToAlphanumeric;\n","import mapToAlphanumeric from \"../helpers/mapToAlphanumeric\";\n\n/**\n * Formats step-by-step a `string` value into an alphanumeric CNPJ.\n * Supports both numeric and alphanumeric CNPJs in the format AA.AAA.AAA/AAAA-99.\n * @example ```js\n * formatToCNPJAlphanumeric('AB12CD34EF5602')\n * //=> 'AB.12C.D34/EF56-02'\n *\n * formatToCNPJAlphanumeric('AB.12C.D34/EF56-02')\n * //=> 'AB.12C.D34/EF56-02'\n *\n * formatToCNPJAlphanumeric('32284981000138')\n * //=> '32.284.981/0001-38'\n *\n * formatToCNPJAlphanumeric('XY987')\n * //=> 'XY.987'\n * ```\n * @param value - A `string` value of an alphanumeric CNPJ.\n */\nconst formatToCNPJAlphanumeric = (value: string): string =>\n  mapToAlphanumeric(value)\n    .toUpperCase()\n    .replace(/^(.{2})(.+)/, \"$1.$2\")\n    .replace(/^(.{2}\\.)(.{3})(.+)/, \"$1$2.$3\")\n    .replace(/^(.{2}\\..{3}\\.)(.{3})(.+)/, \"$1$2/$3\")\n    .replace(/^(.{2}\\..{3}\\..{3}\\/)(.{4})(.{1,2})$/, \"$1$2-$3\");\n\nexport default formatToCNPJAlphanumeric;\n","import mapToNumeric from '../helpers/mapToNumeric';\n\n/**\n * Formats step-by-step a `string` value into a CPF.\n * @example ```js\n * formatToCPF('00000000')\n * //=> '000.000.00'\n *\n * formatToCPF('00000000000')\n * //=> '000.000.000-00'\n *\n * formatToCPF('366.418.768-70')\n * //=> '366.418.768-70'\n * ```\n * @param value - A `string` value of a CPF.\n */\nconst formatToCPF = (\n  value: string,\n): string => (\n  mapToNumeric(value)\n    .replace(/(\\d{3})(\\d)/, '$1.$2')\n    .replace(/(\\d{3})(\\d)/, '$1.$2')\n    .replace(/(\\d{3})(\\d{1,2})$/, '$1-$2')\n);\n\nexport default formatToCPF;\n","import formatToCNPJ from \"./formatToCNPJ\";\nimport formatToCNPJAlphanumeric from \"./formatToCNPJAlphanumeric\";\nimport formatToCPF from \"./formatToCPF\";\n\n/**\n * Check if a `string` value can be formatted to CPF.\n * @param value - A `string` value of a CPF or CNPJ.\n */\nconst canFormatToCPF = (value: string): boolean =>\n  (value.match(/\\d/g)?.length ?? 0) <= 11;\n\n/**\n * Check if a `string` value contains alphanumeric characters (letters).\n * @param value - A `string` value of a CNPJ.\n */\nconst hasAlphanumericChars = (value: string): boolean => /[A-Za-z]/.test(value);\n\n/**\n * Formats step-by-step a `string` value to CPF or CNPJ depending on its length.\n * Supports numeric CPFs, numeric CNPJs, and alphanumeric CNPJs.\n * @example\n * formatToCPFOrCNPJ('00000000')\n * //=> '000.000.00'\n *\n * formatToCPFOrCNPJ('366.418.768-70')\n * //=> '366.418.768-70'\n *\n * formatToCPFOrCNPJ('32284981000138')\n * //=> '32.284.981/0001-38'\n *\n * formatToCPFOrCNPJ('00.0.000.00.00--00-00')\n * //=> '00.000.000/0000-00'\n *\n * formatToCPFOrCNPJ('AB12CD34EF5602')\n * //=> 'AB.12C.D34/EF56-02'\n * @param value - A `string` value of a CPF or CNPJ.\n */\nconst formatToCPFOrCNPJ = (value: string): string => {\n  // First check if it contains letters (alphanumeric CNPJ)\n  if (hasAlphanumericChars(value)) {\n    return formatToCNPJAlphanumeric(value);\n  }\n\n  // Then check if it's a CPF based on digit count\n  if (canFormatToCPF(value)) {\n    return formatToCPF(value);\n  }\n\n  // Otherwise, format as numeric CNPJ\n  return formatToCNPJ(value);\n};\n\nexport default formatToCPFOrCNPJ;\n","/**\n * Fills a number with zeros.\n * @param value - A number value.\n * @param length - Number of characters to be filled with zeros.\n */\nconst fillWithZeros = (\n  value: number,\n  length: number,\n): string => {\n  let numbers = value.toString(10);\n  while (numbers.length < length)\n    numbers = '0' + numbers;\n  return numbers;\n};\n\nexport default fillWithZeros;\n","import fillWithZeros from '../helpers/fillWithZeros';\n\n/**\n * Formats a Date instance to brazilian format, DD/MM/YYYY.\n * @example ```js\n * formatToDate(new Date(2002, 7, 21))\n * //=> '21/08/2002'\n *\n * formatToDate(new Date())\n * //=> '08/09/2018'\n * ```\n * @param value - A Date instance.\n */\nconst formatToDate = (\n  value: Date,\n): string => (\n  fillWithZeros(value.getDate(), 2) + '/' +\n  fillWithZeros(value.getMonth() + 1, 2) + '/' +\n  fillWithZeros(value.getFullYear(), 4)\n);\n\nexport default formatToDate;\n","import formatToDate from './formatToDate';\nimport fillWithZeros from '../helpers/fillWithZeros';\n\n/**\n * Formats a Date instance to brazilian format of date and time, DD/MM/YYYY HH:mm.\n * @example ```js\n * formatToDateTime(new Date(2002, 7, 21, 18, 30))\n * //=> '21/08/2002 18:30'\n * ```\n * @param value - A Date instance.\n */\nconst formatToDateTime = (\n  value: Date,\n): string => (\n  formatToDate(value) + ' ' +\n  fillWithZeros(value.getHours(), 2) + ':' +\n  fillWithZeros(value.getMinutes(), 2)\n);\n\nexport default formatToDateTime;\n","import mapToNumeric from \"../helpers/mapToNumeric\";\n\n/**\n * Formats a phone value into brazilian common phone formats.\n * @example ```js\n * formatToGenericPhone('23456789')\n * //=> '2345-6789'\n *\n * formatToGenericPhone('923456789')\n * //=> '92345-6789'\n *\n * formatToGenericPhone('21923456789')\n * //=> '(21) 92345-6789'\n *\n * formatToGenericPhone('021923456789')\n * //=> '021 92345-6789'\n *\n * formatToGenericPhone('5521923456789')\n * //=> '+55 21 92345-6789'\n * ```\n * @param value\n * @param countryCodeLength\n */\nconst formatToGenericPhone = (\n  value: string,\n  /*\n    Brazil country code: +55\n  */\n  countryCodeLength: number = 2\n): string => {\n  const phone = mapToNumeric(value);\n  if (phone.length === 8) {\n    return phone.replace(/(^\\d{4})(\\d{4}$)/gi, \"$1-$2\");\n  }\n  if (phone.length === 9) {\n    return phone.replace(/(^\\d{5})(\\d{4}$)/gi, \"$1-$2\");\n  }\n  if (phone.length === 10) {\n    return phone.replace(/(^\\d{2})(\\d{4})(\\d{4}$)/gi, \"($1) $2-$3\");\n  }\n  if (phone.length === 11) {\n    return phone.replace(/(^\\d{2})(\\d{4,5})(\\d{4}$)/gi, \"($1) $2-$3\");\n  }\n  if (phone.length === 12) {\n    return phone.replace(/(^\\d{3})(\\d{5})(\\d{4}$)/gi, \"$1 $2-$3\");\n  }\n  const re = new RegExp(\n    `([0-9]{${countryCodeLength}})([0-9][0-9])([0-9]{5})([0-9]{4})`,\n    \"gi\"\n  );\n  return phone.replace(re, \"+$1 $2 $3-$4\");\n};\n\nexport default formatToGenericPhone;\n","export type Range = number | [number, number];\n\nexport const normalizeRange = (\n  range: number | [number, number],\n  limit: number\n): [number, number] => {\n  if (Array.isArray(range)) return range;\n\n  if (range >= 0) return [0, range];\n\n  return [limit + 1 - Math.abs(range), limit];\n};\n\nexport const within = (\n  range: [number, number],\n  value: number,\n): boolean => value >= range[0] && value <= range[1]\n","/** A {@link RegExp} that matches numbers between `0-9`. */\nconst DIGIT = /^\\d$/;\n\nexport type DigitCharacterNode = {\n  kind: 'digit';\n\n  /** The digit number. */\n  digit: number;\n  character: string;\n};\n\nexport type OtherCharacterNode = {\n  kind: 'other';\n  character: string;\n};\n\nexport type RootCharacterNode = {\n  kind: 'root';\n  digits: number;\n  children: (DigitCharacterNode | OtherCharacterNode)[];\n};\n\n/**\n * Parses the received `string` value to a tree of characters.\n * @param value\n */\nconst parseToCharacters = (value: string): RootCharacterNode => {\n  let digits = 0;\n\n  const children = value.split('').map((character: string): DigitCharacterNode | OtherCharacterNode => {\n    if (DIGIT.test(character))\n      return {\n        character,\n        kind: 'digit',\n        digit: ++digits, // It returns the incremented value of 'digits'.\n      };\n    return {\n      character,\n      kind: 'other',\n    };\n  });\n\n  return {\n    digits,\n    children,\n    kind: 'root',\n  };\n};\n\nexport default parseToCharacters;\n","import { normalizeRange, within } from \"../models/Range\";\nimport parseToCharacters from \"../parsers/parseToCharacters\";\n\n/** Options object for {@link formatToHiddenDigits} function. */\nexport type FormatToHiddenDigitsOptions = {\n  /**\n   * The range of digits replaced by {@link FormatToHiddenDigitsOptions.hider}\n   * character. It can be both a tuple of numbers or a single number.\n   *\n   * @example ```js\n   * formatToHiddenDigits(\"00.000-00\", { range: 2 });\n   * //=> \"**.000-00\"\n   *\n   * formatToHiddenDigits(\"00.000-00\", { range: -2 });\n   * //=> \"00.000-**\"\n   *\n   * formatToHiddenDigits(\"00.000-00\", { range: [1, 4] });\n   * //=> \"0*.***-00\"\n   * ```\n   *\n   * @default 3\n   */\n  range?: number | [number, number];\n\n  /**\n   * The character used as replacement for digits in within\n   * {@link FormatToHiddenDigitsOptions.range}.\n   *\n   * @example ```js\n   * formatToHiddenDigits(\"00.000-00\", { hider: \"-\" });\n   * //=> \"--.-00-00\"\n   *\n   * formatToHiddenDigits(\"00.000-00\", { hider: \" \" });\n   * //=> \"  . 00-00\"\n   *\n   * formatToHiddenDigits(\"00.000-00\", { hider: \"#\" });\n   * //=> \"##.#00-00\"\n   * ```js\n   *\n   * @default \"*\"\n   */\n  hider?: string;\n};\n\n/**\n * Formats a `string` value with digits by replacing the digits within the\n * range using the hider character as replacement.\n *\n * @example ```js\n * formatToHiddenDigits('00.000-000')\n * //=> '**.*00-000'\n *\n * formatToHiddenDigits('03/04/2002', { hider: '-' })\n * //=> '--/-4/2002'\n *\n * formatToHiddenDigits('111.111.111-11', { range: [4, 9] })\n * //=> '111.***.***-11'\n *\n * formatToHiddenDigits('12.345.678-9', { hider: '#', range: 5 })\n * //=> '##.###.678-9'\n *\n * formatToHiddenDigits('52.715.348/0001-69', { hider: '@', range: -9 })\n * //=> '52.715.@@@/@@@@-@@'\n * ```\n *\n * @param value - A `string` with digits, with or without a mask.\n * @param options - The options object.\n */\nconst formatToHiddenDigits = (\n  value: string,\n  options: FormatToHiddenDigitsOptions = {}\n): string => {\n  const characters = parseToCharacters(value);\n  const range = normalizeRange(options.range ?? 3, characters.digits);\n  return characters.children\n    .map((node) => {\n      if (node.kind === \"digit\" && within(range, node.digit))\n        return options.hider ?? \"*\";\n      return node.character;\n    })\n    .join(\"\");\n};\n\nexport default formatToHiddenDigits;\n","/**\n * Split `Array` elements into every but last and last element.\n * @param value - An Array with at least one item.\n */\nconst splitOnLast = <T>(value: T[]): [T[], T] => [\n  value.slice(0, value.length - 1),\n  value[value.length - 1]!,\n];\n\nexport default splitOnLast;\n","import splitOnLast from \"../helpers/splitOnLast\";\n\n/**\n * Formats an Array into brazilian formatted list.\n * @example\n * formatToList(['Vitor', 'William', 'Fernando'])\n * //=> 'Vitor, William e Fernando'\n *\n * formatToList([])\n * // => ''\n *\n * formatToList(['1', '2'])\n * // => '1 e 2'\n *\n * formatToList(['Direito Civil'])\n * //=> 'Direito Civil'\n * @param value - An array of string values.\n */\nconst formatToList = (value: string[]): string => {\n  if (value.length === 0) return \"\";\n  if (value.length === 1) return value[0]!;\n  const [everyButLast, last] = splitOnLast(value);\n  return everyButLast.join(\", \") + \" e \" + (last ?? \"\");\n};\n\nexport default formatToList;\n","import addPeriods from \"../helpers/addPeriods\";\n\n/**\n * Formats a number to brazilian formatted number.\n * @example\n * formatToNumber(0)\n * //=> '0'\n * formatToNumber(-1299)\n * //=> '-1.299'\n * formatToNumber(.981)\n * //=> '0,981'\n * formatToNumber('19898.1298')\n * //=> '19.898,1298'\n * @param value - Number value to be formatted.\n */\nconst formatToNumber = (value: number | string): string => {\n  const [number = \"0\", trunc] = Number(value).toString(10).split(\".\");\n  if (!trunc) return addPeriods(number);\n  return addPeriods(number) + \",\" + trunc;\n};\n\nexport default formatToNumber;\n","import mapToNumeric from '../helpers/mapToNumeric';\n\n/**\n * Formats a phone value into brazilian common phone formats.\n * @example ```js\n * formatToPhone('11')\n * //=> '(11'\n *\n * formatToPhone('11971626')\n * //=> '(11) 9716-26'\n *\n * formatToPhone('11971626799')\n * //=> '(11) 97162-6799'\n * ```\n * @param value\n */\nconst formatToPhone = (\n  value: string,\n): string => (\n  mapToNumeric(value)\n    .replace(/(\\d{1,2})/, '($1')\n    .replace(/(\\(\\d{2})(\\d{1,4})/, '$1) $2')\n    .replace(/( \\d{4})(\\d{1,4})/, '$1-$2')\n    .replace(/( \\d{4})(?:-)(\\d{1})(\\d{4})/, '$1$2-$3')\n);\n\nexport default formatToPhone;\n","/**\n * Progressively formats a `string` into a RG.\n * @example ```js\n * formatToRG('00000000A', 'SP')\n * //=> '00.000.000-A'\n *\n * formatToRG('00.00.0000-0', 'RJ')\n * //=> '00.000.000-0'\n *\n * formatToRG('MG-14.808.688', 'MG')\n * //=> 'MG-14.808.688'\n * ```\n * @param value - A `string` representing an RG.\n * @param state - Brazilian state which defines RG format.\n */\nconst formatToRG = (\n  value: string,\n  state?: string,\n): string => (state !== 'RJ' && state !== 'SP') ? value : (\n  value\n    .toUpperCase()\n    .replace(/[^\\d|A|B|X]/g, '')\n    .replace(/(\\d{2})(\\d)/, '$1.$2')\n    .replace(/(\\d{3})(\\d)/, '$1.$2')\n    .replace(/(\\d{3})([\\d|A|B|X]{1})$/, '$1-$2')\n);\n\nexport default formatToRG;\n"],"mappings":"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","names":["digit"]}