@br-validators/core 1.9.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/README.md +57 -7
  2. package/dist/batch.d.ts +24 -3
  3. package/dist/batch.js +14 -13
  4. package/dist/brcode.js +6 -6
  5. package/dist/cep.js +6 -3
  6. package/dist/{chunk-F6LVFAJT.js → chunk-4NS47CJG.js} +3 -3
  7. package/dist/{chunk-F6LVFAJT.js.map → chunk-4NS47CJG.js.map} +1 -1
  8. package/dist/chunk-5V2TNYC7.js +3 -0
  9. package/dist/{chunk-KLPONHBL.js.map → chunk-5V2TNYC7.js.map} +1 -1
  10. package/dist/{chunk-YYHS5WQN.js → chunk-6BWOYNQD.js} +2 -2
  11. package/dist/{chunk-YYHS5WQN.js.map → chunk-6BWOYNQD.js.map} +1 -1
  12. package/dist/chunk-6LCZGDCZ.js +27862 -0
  13. package/dist/chunk-6LCZGDCZ.js.map +1 -0
  14. package/dist/{chunk-MSYTS5K7.js → chunk-6WBUKUHD.js} +3 -3
  15. package/dist/{chunk-MSYTS5K7.js.map → chunk-6WBUKUHD.js.map} +1 -1
  16. package/dist/{chunk-DS6MOO5K.js → chunk-7XVCTDJE.js} +6 -65
  17. package/dist/chunk-7XVCTDJE.js.map +1 -0
  18. package/dist/{chunk-4HQ4J2J5.js → chunk-A255RZZ7.js} +3 -3
  19. package/dist/{chunk-4HQ4J2J5.js.map → chunk-A255RZZ7.js.map} +1 -1
  20. package/dist/chunk-AOBSYTR2.js +31 -0
  21. package/dist/chunk-AOBSYTR2.js.map +1 -0
  22. package/dist/{chunk-JNAZI3HU.js → chunk-AZAZRJZC.js} +10 -9
  23. package/dist/chunk-AZAZRJZC.js.map +1 -0
  24. package/dist/{chunk-3FDHWX2H.js → chunk-BTRWDUZF.js} +3 -3
  25. package/dist/{chunk-3FDHWX2H.js.map → chunk-BTRWDUZF.js.map} +1 -1
  26. package/dist/{chunk-55IZCKNL.js → chunk-C4E2AE2A.js} +3 -3
  27. package/dist/{chunk-55IZCKNL.js.map → chunk-C4E2AE2A.js.map} +1 -1
  28. package/dist/{chunk-W5LOXC7J.js → chunk-DQQNXXGO.js} +12 -3
  29. package/dist/chunk-DQQNXXGO.js.map +1 -0
  30. package/dist/{chunk-56ZN3TBH.js → chunk-DXKHCIMV.js} +3 -3
  31. package/dist/{chunk-56ZN3TBH.js.map → chunk-DXKHCIMV.js.map} +1 -1
  32. package/dist/chunk-FA5ZM5UA.js +63 -0
  33. package/dist/chunk-FA5ZM5UA.js.map +1 -0
  34. package/dist/{chunk-N2MDJI4B.js → chunk-FTC4V5PN.js} +3 -3
  35. package/dist/{chunk-N2MDJI4B.js.map → chunk-FTC4V5PN.js.map} +1 -1
  36. package/dist/{chunk-7HEMXLDS.js → chunk-GQRHLW5W.js} +3 -4
  37. package/dist/chunk-GQRHLW5W.js.map +1 -0
  38. package/dist/{chunk-5IYHOWQU.js → chunk-GTEKDS6X.js} +98 -12
  39. package/dist/chunk-GTEKDS6X.js.map +1 -0
  40. package/dist/{chunk-ZL5RDZJM.js → chunk-HEPUV3XR.js} +3 -4
  41. package/dist/chunk-HEPUV3XR.js.map +1 -0
  42. package/dist/chunk-JUQMINSZ.js +52 -0
  43. package/dist/chunk-JUQMINSZ.js.map +1 -0
  44. package/dist/{chunk-CIOSYWV4.js → chunk-JZKKTVMO.js} +3 -3
  45. package/dist/{chunk-CIOSYWV4.js.map → chunk-JZKKTVMO.js.map} +1 -1
  46. package/dist/{chunk-DL4TSGE5.js → chunk-JZOS2MO7.js} +3 -3
  47. package/dist/{chunk-DL4TSGE5.js.map → chunk-JZOS2MO7.js.map} +1 -1
  48. package/dist/{chunk-2BNGYQFQ.js → chunk-KCRWHMDY.js} +3 -3
  49. package/dist/{chunk-2BNGYQFQ.js.map → chunk-KCRWHMDY.js.map} +1 -1
  50. package/dist/{chunk-UNBIJPJU.js → chunk-L3WG36Y4.js} +3 -3
  51. package/dist/{chunk-UNBIJPJU.js.map → chunk-L3WG36Y4.js.map} +1 -1
  52. package/dist/{chunk-NQIKXTMI.js → chunk-LKDZEPWZ.js} +3 -3
  53. package/dist/{chunk-NQIKXTMI.js.map → chunk-LKDZEPWZ.js.map} +1 -1
  54. package/dist/chunk-LLJSXMO2.js +32 -0
  55. package/dist/chunk-LLJSXMO2.js.map +1 -0
  56. package/dist/{chunk-2RZXK6C3.js → chunk-MGFDTECS.js} +13 -32
  57. package/dist/chunk-MGFDTECS.js.map +1 -0
  58. package/dist/{chunk-BLSDFC3C.js → chunk-NNMK3ZHS.js} +21 -3
  59. package/dist/chunk-NNMK3ZHS.js.map +1 -0
  60. package/dist/{chunk-SCBXZLZ5.js → chunk-OHGZOWUT.js} +19 -14
  61. package/dist/{chunk-SCBXZLZ5.js.map → chunk-OHGZOWUT.js.map} +1 -1
  62. package/dist/{chunk-KVJL4MTV.js → chunk-PRSHGHAS.js} +10 -9
  63. package/dist/chunk-PRSHGHAS.js.map +1 -0
  64. package/dist/{chunk-MOMQLTSD.js → chunk-QGL5YFPF.js} +10 -10
  65. package/dist/{chunk-MOMQLTSD.js.map → chunk-QGL5YFPF.js.map} +1 -1
  66. package/dist/{chunk-BDYNBRT7.js → chunk-UG2YICWH.js} +3 -3
  67. package/dist/{chunk-BDYNBRT7.js.map → chunk-UG2YICWH.js.map} +1 -1
  68. package/dist/{chunk-KSDAKRG5.js → chunk-UH6WIKOT.js} +15 -10
  69. package/dist/chunk-UH6WIKOT.js.map +1 -0
  70. package/dist/{chunk-N6CALNFU.js → chunk-YC4GZZJP.js} +3 -3
  71. package/dist/{chunk-N6CALNFU.js.map → chunk-YC4GZZJP.js.map} +1 -1
  72. package/dist/chunk-YQN6RNJN.js +30 -0
  73. package/dist/chunk-YQN6RNJN.js.map +1 -0
  74. package/dist/{chunk-62P6SKG3.js → chunk-ZJ2GD2GK.js} +21 -19
  75. package/dist/chunk-ZJ2GD2GK.js.map +1 -0
  76. package/dist/{chunk-DQPSNERX.js → chunk-ZODIHY33.js} +11 -10
  77. package/dist/chunk-ZODIHY33.js.map +1 -0
  78. package/dist/cnh.js +6 -3
  79. package/dist/cnpj.js +3 -3
  80. package/dist/compare.d.ts +2 -2
  81. package/dist/compare.js +16 -15
  82. package/dist/cpf.js +2 -3
  83. package/dist/csosn.d.ts +54 -0
  84. package/dist/csosn.js +96 -0
  85. package/dist/csosn.js.map +1 -0
  86. package/dist/data-catalog.js +32 -30
  87. package/dist/data-catalog.js.map +1 -1
  88. package/dist/detect.js +13 -12
  89. package/dist/diff.d.ts +2 -2
  90. package/dist/diff.js +16 -15
  91. package/dist/esocial.d.ts +29 -1
  92. package/dist/esocial.js +1720 -2
  93. package/dist/esocial.js.map +1 -1
  94. package/dist/generate.js +22 -21
  95. package/dist/ibge.js +1 -27859
  96. package/dist/ibge.js.map +1 -1
  97. package/dist/{index-CttohJuk.d.ts → index-CmpOAd8U.d.ts} +1 -1
  98. package/dist/index.d.ts +4 -4
  99. package/dist/index.js +38 -37
  100. package/dist/index.js.map +1 -1
  101. package/dist/iss-municipal.d.ts +71 -3
  102. package/dist/iss-municipal.js +45366 -235
  103. package/dist/iss-municipal.js.map +1 -1
  104. package/dist/mask.js +21 -20
  105. package/dist/{pix-B8_PfK2D.d.ts → pix-DhAb6Iho.d.ts} +3 -1
  106. package/dist/pix.d.ts +1 -1
  107. package/dist/pix.js +8 -7
  108. package/dist/placa.js +6 -3
  109. package/dist/ptax.d.ts +12 -4
  110. package/dist/ptax.js +8467 -252
  111. package/dist/ptax.js.map +1 -1
  112. package/dist/renavam.js +6 -3
  113. package/dist/sanitize.d.ts +1 -1
  114. package/dist/sanitize.js +14 -10
  115. package/dist/titulo-eleitor.js +6 -3
  116. package/dist/{types-CTLx5zMu.d.ts → types-DLuN-sEJ.d.ts} +1 -1
  117. package/package.json +5 -1
  118. package/dist/chunk-2RZXK6C3.js.map +0 -1
  119. package/dist/chunk-5IYHOWQU.js.map +0 -1
  120. package/dist/chunk-62P6SKG3.js.map +0 -1
  121. package/dist/chunk-7HEMXLDS.js.map +0 -1
  122. package/dist/chunk-BLSDFC3C.js.map +0 -1
  123. package/dist/chunk-DQPSNERX.js.map +0 -1
  124. package/dist/chunk-DS6MOO5K.js.map +0 -1
  125. package/dist/chunk-JNAZI3HU.js.map +0 -1
  126. package/dist/chunk-KLPONHBL.js +0 -3
  127. package/dist/chunk-KSDAKRG5.js.map +0 -1
  128. package/dist/chunk-KVJL4MTV.js.map +0 -1
  129. package/dist/chunk-RUQDVHR7.js +0 -14
  130. package/dist/chunk-RUQDVHR7.js.map +0 -1
  131. package/dist/chunk-VBFKN3NR.js +0 -14
  132. package/dist/chunk-VBFKN3NR.js.map +0 -1
  133. package/dist/chunk-W5LOXC7J.js.map +0 -1
  134. package/dist/chunk-YUAMWVIU.js +0 -30
  135. package/dist/chunk-YUAMWVIU.js.map +0 -1
  136. package/dist/chunk-ZL5RDZJM.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { stripTituloEleitor } from './chunk-YYHS5WQN.js';
1
+ import { stripTituloEleitor } from './chunk-6BWOYNQD.js';
2
2
  import { weightedSum } from './chunk-OTZHMJYE.js';
3
3
  import { brandTituloEleitor } from './chunk-BVMY4IWB.js';
4
4
 
@@ -222,5 +222,5 @@ function validateTituloEleitor(input) {
222
222
  }
223
223
 
224
224
  export { TITULO_ELEITOR_ALGORITHM_REF_URL, TITULO_ELEITOR_ALGORITHM_WEIGHTS_REF_URL, TITULO_ELEITOR_DV1_WEIGHTS_8, TITULO_ELEITOR_DV1_WEIGHTS_9, TITULO_ELEITOR_DV2_WEIGHTS, TITULO_ELEITOR_ETITULO_URL, TITULO_ELEITOR_EXTERIOR_UF_CODE, TITULO_ELEITOR_GOLDEN_EXTERIOR, TITULO_ELEITOR_GOLDEN_MASKED_INPUT, TITULO_ELEITOR_GOLDEN_PRIMARY, TITULO_ELEITOR_GOLDEN_SP_EXTENDED, TITULO_ELEITOR_GOLDEN_SP_SPECIAL, TITULO_ELEITOR_LENGTH, TITULO_ELEITOR_LENGTH_EXTENDED, TITULO_ELEITOR_NORMATIVE_SECONDARY_URL, TITULO_ELEITOR_NUMERIC_PATTERN_12, TITULO_ELEITOR_NUMERIC_PATTERN_13, TITULO_ELEITOR_OFFICIAL_SOURCE_URL, TITULO_ELEITOR_SEQUENTIAL_LENGTH, TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED, TITULO_ELEITOR_SPECIAL_UF_CODES, TITULO_ELEITOR_TSE_PORTAL_URL, TITULO_ELEITOR_UF_BY_CODE, computeTituloEleitorCheckDigits, isValidTituloEleitor, validateTituloEleitor };
225
- //# sourceMappingURL=chunk-MSYTS5K7.js.map
226
- //# sourceMappingURL=chunk-MSYTS5K7.js.map
225
+ //# sourceMappingURL=chunk-6WBUKUHD.js.map
226
+ //# sourceMappingURL=chunk-6WBUKUHD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/titulo-eleitor/constants.ts","../src/core/titulo-eleitor/check-digits.ts","../src/core/titulo-eleitor/parse.ts","../src/core/titulo-eleitor/index.ts"],"names":[],"mappings":"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","file":"chunk-MSYTS5K7.js","sourcesContent":["/**\n * Título de Eleitor constants — modulo 11 (TSE Res. 20.132/1998 + algorithm cross-checks).\n * @see https://www.tse.jus.br/legislacao/compilada/res/1998/resolucao-no-20-132-de-19-de-marco-de-1998 — Art. 10 (structure, mod 11)\n * @see https://pt.wikipedia.org/wiki/T%C3%ADtulo_eleitoral#C%C3%A1lculo_do_d%C3%ADgito_verificador — weights + SP/MG rule\n * @see http://ghiorzi.org/DVnew.htm#e — algorithm cross-check\n */\nimport type { UfCode } from '../../types/validation-result.js';\n\nexport const TITULO_ELEITOR_DV1_WEIGHTS_8 = [2, 3, 4, 5, 6, 7, 8, 9] as const;\nexport const TITULO_ELEITOR_DV1_WEIGHTS_9 = [9, 2, 3, 4, 5, 6, 7, 8, 9] as const;\nexport const TITULO_ELEITOR_DV2_WEIGHTS = [7, 8, 9] as const;\nexport const TITULO_ELEITOR_SEQUENTIAL_LENGTH = 8;\nexport const TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED = 9;\nexport const TITULO_ELEITOR_LENGTH = 12;\nexport const TITULO_ELEITOR_LENGTH_EXTENDED = 13;\nexport const TITULO_ELEITOR_UF_LENGTH = 2;\nexport const TITULO_ELEITOR_DV_LENGTH = 2;\nexport const TITULO_ELEITOR_MIN_UF_CODE = 1;\nexport const TITULO_ELEITOR_MAX_UF_CODE = 28;\nexport const TITULO_ELEITOR_NUMERIC_PATTERN_12 = /^\\d{12}$/;\nexport const TITULO_ELEITOR_NUMERIC_PATTERN_13 = /^\\d{13}$/;\n\n/** TSE UF codes where remainder 0 maps DV to 1 instead of 0. */\nexport const TITULO_ELEITOR_SPECIAL_UF_CODES = [1, 2] as const;\n\n/** Golden primary — SC (UF=09), Wikipedia PT walkthrough. */\nexport const TITULO_ELEITOR_GOLDEN_PRIMARY = '004356870906';\nexport const TITULO_ELEITOR_GOLDEN_SP_SPECIAL = '000000000116';\nexport const TITULO_ELEITOR_GOLDEN_SP_EXTENDED = '1234567890175';\nexport const TITULO_ELEITOR_GOLDEN_EXTERIOR = '000000012895';\nexport const TITULO_ELEITOR_GOLDEN_MASKED_INPUT = '0043 5687 0906';\n\n/** Normative — Resolução TSE 20.132/1998, Art. 10 (8 seq + 2 UF + 2 DV, mod 11). */\nexport const TITULO_ELEITOR_OFFICIAL_SOURCE_URL =\n 'https://www.tse.jus.br/legislacao/compilada/res/1998/resolucao-no-20-132-de-19-de-marco-de-1998';\n\n/** Normative — Resolução TSE 23.659/2021 (Cadastro Eleitoral; confirms UF + DV structure). */\nexport const TITULO_ELEITOR_NORMATIVE_SECONDARY_URL =\n 'https://www.tse.jus.br/legislacao/compilada/res/2021/resolucao-no-23-659-de-26-de-outubro-de-2021';\n\n/**\n * Algorithm weights + SP/MG remainder-zero rule — not in TSE resolution text.\n * Community consensus validated empirically (Wikipedia PT worked example).\n */\nexport const TITULO_ELEITOR_ALGORITHM_WEIGHTS_REF_URL =\n 'https://pt.wikipedia.org/wiki/T%C3%ADtulo_eleitoral#C%C3%A1lculo_do_d%C3%ADgito_verificador';\n\n/** Algorithm cross-check — Ghiorzi DV table. */\nexport const TITULO_ELEITOR_ALGORITHM_REF_URL = 'http://ghiorzi.org/DVnew.htm#e';\n\nexport const TITULO_ELEITOR_TSE_PORTAL_URL = 'https://www.tse.jus.br/';\n\nexport const TITULO_ELEITOR_ETITULO_URL =\n 'https://www.tse.jus.br/eleitor/servicos/aplicativo-e-titulo';\n\n/** TSE electoral UF code → Brazilian UF (28 = exterior / ZZ). */\nexport const TITULO_ELEITOR_UF_BY_CODE: Readonly<Record<number, UfCode>> = {\n 1: 'SP',\n 2: 'MG',\n 3: 'RJ',\n 4: 'RS',\n 5: 'BA',\n 6: 'PR',\n 7: 'CE',\n 8: 'PE',\n 9: 'SC',\n 10: 'GO',\n 11: 'MA',\n 12: 'PB',\n 13: 'PA',\n 14: 'ES',\n 15: 'PI',\n 16: 'RN',\n 17: 'AL',\n 18: 'MT',\n 19: 'MS',\n 20: 'DF',\n 21: 'SE',\n 22: 'AM',\n 23: 'RO',\n 24: 'AC',\n 25: 'AP',\n 26: 'RR',\n 27: 'TO',\n};\n\nexport const TITULO_ELEITOR_EXTERIOR_UF_CODE = 28;\n","/**\n * Título de Eleitor check digits — modulo 11 (TSE / Wikipedia PT + Ghiorzi).\n * @see https://www.tse.jus.br/legislacao/compilada/res/1998/resolucao-no-20-132-de-19-de-marco-de-1998\n * @see https://pt.wikipedia.org/wiki/T%C3%ADtulo_eleitoral#C%C3%A1lculo_do_d%C3%ADgito_verificador\n * @see http://ghiorzi.org/DVnew.htm#e\n */\nimport { weightedSum } from '../cnpj/modulo11.js';\nimport {\n TITULO_ELEITOR_DV1_WEIGHTS_8,\n TITULO_ELEITOR_DV1_WEIGHTS_9,\n TITULO_ELEITOR_DV2_WEIGHTS,\n TITULO_ELEITOR_SPECIAL_UF_CODES,\n} from './constants.js';\n\nfunction digitValues(chars: string): number[] {\n const values: number[] = [];\n for (let i = 0; i < chars.length; i++) {\n values.push(Number(chars.charAt(i)));\n }\n return values;\n}\n\nfunction isSpecialUf(ufCode: number): boolean {\n return (TITULO_ELEITOR_SPECIAL_UF_CODES as readonly number[]).includes(ufCode);\n}\n\nexport function resolveTituloEleitorCheckDigit(remainder: number, ufCode: number): number {\n if (remainder >= 10) {\n return 0;\n }\n if (remainder === 0 && isSpecialUf(ufCode)) {\n return 1;\n }\n return remainder;\n}\n\nexport function computeTituloEleitorFirstCheckDigit(sequential: string, ufCode: number): number {\n const weights =\n sequential.length === 8 ? TITULO_ELEITOR_DV1_WEIGHTS_8 : TITULO_ELEITOR_DV1_WEIGHTS_9;\n const remainder = weightedSum(digitValues(sequential), weights) % 11;\n return resolveTituloEleitorCheckDigit(remainder, ufCode);\n}\n\nexport function computeTituloEleitorSecondCheckDigit(\n ufDigits: string,\n firstDv: number,\n ufCode: number,\n): number {\n const uf1 = Number(ufDigits.charAt(0));\n const uf2 = Number(ufDigits.charAt(1));\n const remainder = weightedSum([uf1, uf2, firstDv], TITULO_ELEITOR_DV2_WEIGHTS) % 11;\n return resolveTituloEleitorCheckDigit(remainder, ufCode);\n}\n\nexport function computeTituloEleitorCheckDigits(\n sequential: string,\n ufDigits: string,\n ufCode: number,\n): string {\n const dv1 = computeTituloEleitorFirstCheckDigit(sequential, ufCode);\n const dv2 = computeTituloEleitorSecondCheckDigit(ufDigits, dv1, ufCode);\n return `${String(dv1)}${String(dv2)}`;\n}\n","import {\n TITULO_ELEITOR_LENGTH,\n TITULO_ELEITOR_LENGTH_EXTENDED,\n TITULO_ELEITOR_SEQUENTIAL_LENGTH,\n TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED,\n TITULO_ELEITOR_SPECIAL_UF_CODES,\n} from './constants.js';\n\nexport type TituloEleitorParts = {\n sequential: string;\n ufDigits: string;\n ufCode: number;\n checkDigits: string;\n};\n\nexport function parseTituloEleitorParts(stripped: string): TituloEleitorParts | null {\n if (stripped.length === TITULO_ELEITOR_LENGTH) {\n return {\n sequential: stripped.slice(0, TITULO_ELEITOR_SEQUENTIAL_LENGTH),\n ufDigits: stripped.slice(TITULO_ELEITOR_SEQUENTIAL_LENGTH, TITULO_ELEITOR_LENGTH - 2),\n ufCode: Number(stripped.slice(TITULO_ELEITOR_SEQUENTIAL_LENGTH, TITULO_ELEITOR_LENGTH - 2)),\n checkDigits: stripped.slice(TITULO_ELEITOR_LENGTH - 2),\n };\n }\n\n if (stripped.length === TITULO_ELEITOR_LENGTH_EXTENDED) {\n const ufDigits = stripped.slice(\n TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED,\n TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED + 2,\n );\n const ufCode = Number(ufDigits);\n if (!(TITULO_ELEITOR_SPECIAL_UF_CODES as readonly number[]).includes(ufCode)) {\n return null;\n }\n return {\n sequential: stripped.slice(0, TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED),\n ufDigits,\n ufCode,\n checkDigits: stripped.slice(TITULO_ELEITOR_LENGTH_EXTENDED - 2),\n };\n }\n\n return null;\n}\n","/**\n * Título de Eleitor validation — modulo 11 (TSE Res. 20.132/1998 + algorithm cross-checks).\n * @see https://www.tse.jus.br/legislacao/compilada/res/1998/resolucao-no-20-132-de-19-de-marco-de-1998\n * @see https://pt.wikipedia.org/wiki/T%C3%ADtulo_eleitoral#C%C3%A1lculo_do_d%C3%ADgito_verificador\n * @see http://ghiorzi.org/DVnew.htm#e\n */\nimport { stripTituloEleitor } from '../../strip/index.js';\nimport type { TituloEleitorValidationResult, UfCode } from '../../types/validation-result.js';\nimport { brandTituloEleitor } from '../../types/validation-result.js';\nimport { computeTituloEleitorCheckDigits } from './check-digits.js';\nimport {\n TITULO_ELEITOR_EXTERIOR_UF_CODE,\n TITULO_ELEITOR_LENGTH,\n TITULO_ELEITOR_LENGTH_EXTENDED,\n TITULO_ELEITOR_MAX_UF_CODE,\n TITULO_ELEITOR_MIN_UF_CODE,\n TITULO_ELEITOR_UF_BY_CODE,\n} from './constants.js';\nimport { parseTituloEleitorParts } from './parse.js';\n\nexport {\n TITULO_ELEITOR_ALGORITHM_REF_URL,\n TITULO_ELEITOR_ALGORITHM_WEIGHTS_REF_URL,\n TITULO_ELEITOR_DV1_WEIGHTS_8,\n TITULO_ELEITOR_DV1_WEIGHTS_9,\n TITULO_ELEITOR_DV2_WEIGHTS,\n TITULO_ELEITOR_ETITULO_URL,\n TITULO_ELEITOR_EXTERIOR_UF_CODE,\n TITULO_ELEITOR_GOLDEN_EXTERIOR,\n TITULO_ELEITOR_GOLDEN_MASKED_INPUT,\n TITULO_ELEITOR_GOLDEN_PRIMARY,\n TITULO_ELEITOR_GOLDEN_SP_EXTENDED,\n TITULO_ELEITOR_GOLDEN_SP_SPECIAL,\n TITULO_ELEITOR_LENGTH,\n TITULO_ELEITOR_LENGTH_EXTENDED,\n TITULO_ELEITOR_NORMATIVE_SECONDARY_URL,\n TITULO_ELEITOR_NUMERIC_PATTERN_12,\n TITULO_ELEITOR_NUMERIC_PATTERN_13,\n TITULO_ELEITOR_OFFICIAL_SOURCE_URL,\n TITULO_ELEITOR_SEQUENTIAL_LENGTH,\n TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED,\n TITULO_ELEITOR_SPECIAL_UF_CODES,\n TITULO_ELEITOR_TSE_PORTAL_URL,\n TITULO_ELEITOR_UF_BY_CODE,\n} from './constants.js';\n\ntype FailedResult = Extract<TituloEleitorValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string, ufCode?: number): FailedResult {\n if (ufCode === undefined) {\n return { ok: false, code, message };\n }\n return { ok: false, code, message, ufCode };\n}\n\nfunction hasRepeatedDigits(value: string): boolean {\n const first = value[0];\n for (let i = 1; i < value.length; i++) {\n if (value[i] !== first) {\n return false;\n }\n }\n return true;\n}\n\nfunction isValidUfCode(ufCode: number): boolean {\n return ufCode >= TITULO_ELEITOR_MIN_UF_CODE && ufCode <= TITULO_ELEITOR_MAX_UF_CODE;\n}\n\nfunction resolveUf(ufCode: number): UfCode | undefined {\n return TITULO_ELEITOR_UF_BY_CODE[ufCode];\n}\n\ntype StructureResult =\n | { ok: false; error: FailedResult }\n | { ok: true; parts: NonNullable<ReturnType<typeof parseTituloEleitorParts>> };\n\nfunction validateStructure(input: string, stripped: string): StructureResult {\n if (stripped.length === 0) {\n return { ok: false, error: failure('EMPTY_INPUT', 'Título de Eleitor input is empty') };\n }\n\n if (/[^0-9\\s]/.test(input.replace(/\\s/g, ''))) {\n return { ok: false, error: failure('INVALID_CHARACTER', 'Título de Eleitor contains invalid characters') };\n }\n\n if (stripped.length !== TITULO_ELEITOR_LENGTH && stripped.length !== TITULO_ELEITOR_LENGTH_EXTENDED) {\n return {\n ok: false,\n error: failure(\n 'INVALID_LENGTH',\n `Título de Eleitor must have ${TITULO_ELEITOR_LENGTH} or ${TITULO_ELEITOR_LENGTH_EXTENDED} digits after normalization`,\n ),\n };\n }\n\n const parts = parseTituloEleitorParts(stripped);\n if (!parts) {\n return {\n ok: false,\n error: failure(\n 'UNSUPPORTED_FORMAT',\n `13-digit Título de Eleitor is only valid for SP (01) or MG (02)`,\n ),\n };\n }\n\n if (!isValidUfCode(parts.ufCode)) {\n return {\n ok: false,\n error: failure(\n 'KNOWN_INVALID_PATTERN',\n `Título de Eleitor UF code ${parts.ufDigits} is not a valid TSE electoral code`,\n parts.ufCode,\n ),\n };\n }\n\n if (hasRepeatedDigits(stripped)) {\n return {\n ok: false,\n error: failure('KNOWN_INVALID_PATTERN', 'Título de Eleitor with all identical digits is invalid'),\n };\n }\n\n return { ok: true, parts };\n}\n\nfunction isValidTituloEleitorChecksum(parts: {\n sequential: string;\n ufDigits: string;\n ufCode: number;\n checkDigits: string;\n}): boolean {\n const expected = computeTituloEleitorCheckDigits(parts.sequential, parts.ufDigits, parts.ufCode);\n return parts.checkDigits === expected;\n}\n\nexport function isValidTituloEleitor(input: string): boolean {\n return validateTituloEleitor(input).ok;\n}\n\nexport function validateTituloEleitor(input: string): TituloEleitorValidationResult {\n const stripped = stripTituloEleitor(input);\n const structure = validateStructure(input, stripped);\n if (!structure.ok) {\n return structure.error;\n }\n\n const { parts } = structure;\n\n if (!isValidTituloEleitorChecksum(parts)) {\n return failure('INVALID_CHECK_DIGIT', 'Título de Eleitor check digits are invalid', parts.ufCode);\n }\n\n const uf = resolveUf(parts.ufCode);\n const success: Extract<TituloEleitorValidationResult, { ok: true }> = {\n ok: true,\n value: brandTituloEleitor(stripped),\n format: 'numeric',\n ufCode: parts.ufCode,\n };\n if (uf !== undefined) {\n success.uf = uf;\n } else if (parts.ufCode === TITULO_ELEITOR_EXTERIOR_UF_CODE) {\n success.exterior = true;\n }\n return success;\n}\n"]}
1
+ {"version":3,"sources":["../src/core/titulo-eleitor/constants.ts","../src/core/titulo-eleitor/check-digits.ts","../src/core/titulo-eleitor/parse.ts","../src/core/titulo-eleitor/index.ts"],"names":[],"mappings":";;;;;AAQO,IAAM,4BAAA,GAA+B,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC;AAC5D,IAAM,4BAAA,GAA+B,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC;AAC/D,IAAM,0BAAA,GAA6B,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC;AAC3C,IAAM,gCAAA,GAAmC;AACzC,IAAM,yCAAA,GAA4C;AAClD,IAAM,qBAAA,GAAwB;AAC9B,IAAM,8BAAA,GAAiC;AAGvC,IAAM,0BAAA,GAA6B,CAAA;AACnC,IAAM,0BAAA,GAA6B,EAAA;AACnC,IAAM,iCAAA,GAAoC;AAC1C,IAAM,iCAAA,GAAoC;AAG1C,IAAM,+BAAA,GAAkC,CAAC,CAAA,EAAG,CAAC;AAG7C,IAAM,6BAAA,GAAgC;AACtC,IAAM,gCAAA,GAAmC;AACzC,IAAM,iCAAA,GAAoC;AAC1C,IAAM,8BAAA,GAAiC;AACvC,IAAM,kCAAA,GAAqC;AAG3C,IAAM,kCAAA,GACX;AAGK,IAAM,sCAAA,GACX;AAMK,IAAM,wCAAA,GACX;AAGK,IAAM,gCAAA,GAAmC;AAEzC,IAAM,6BAAA,GAAgC;AAEtC,IAAM,0BAAA,GACX;AAGK,IAAM,yBAAA,GAA8D;AAAA,EACzE,CAAA,EAAG,IAAA;AAAA,EACH,CAAA,EAAG,IAAA;AAAA,EACH,CAAA,EAAG,IAAA;AAAA,EACH,CAAA,EAAG,IAAA;AAAA,EACH,CAAA,EAAG,IAAA;AAAA,EACH,CAAA,EAAG,IAAA;AAAA,EACH,CAAA,EAAG,IAAA;AAAA,EACH,CAAA,EAAG,IAAA;AAAA,EACH,CAAA,EAAG,IAAA;AAAA,EACH,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,+BAAA,GAAkC;;;ACxE/C,SAAS,YAAY,KAAA,EAAyB;AAC5C,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,IAAA,MAAA,CAAO,KAAK,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA;AAAA,EACrC;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,YAAY,MAAA,EAAyB;AAC5C,EAAA,OAAQ,+BAAA,CAAsD,SAAS,MAAM,CAAA;AAC/E;AAEO,SAAS,8BAAA,CAA+B,WAAmB,MAAA,EAAwB;AACxF,EAAA,IAAI,aAAa,EAAA,EAAI;AACnB,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IAAI,SAAA,KAAc,CAAA,IAAK,WAAA,CAAY,MAAM,CAAA,EAAG;AAC1C,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,OAAO,SAAA;AACT;AAEO,SAAS,mCAAA,CAAoC,YAAoB,MAAA,EAAwB;AAC9F,EAAA,MAAM,OAAA,GACJ,UAAA,CAAW,MAAA,KAAW,CAAA,GAAI,4BAAA,GAA+B,4BAAA;AAC3D,EAAA,MAAM,YAAY,WAAA,CAAY,WAAA,CAAY,UAAU,CAAA,EAAG,OAAO,CAAA,GAAI,EAAA;AAClE,EAAA,OAAO,8BAAA,CAA+B,WAAW,MAAM,CAAA;AACzD;AAEO,SAAS,oCAAA,CACd,QAAA,EACA,OAAA,EACA,MAAA,EACQ;AACR,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,CAAC,CAAC,CAAA;AACrC,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,CAAC,CAAC,CAAA;AACrC,EAAA,MAAM,SAAA,GAAY,YAAY,CAAC,GAAA,EAAK,KAAK,OAAO,CAAA,EAAG,0BAA0B,CAAA,GAAI,EAAA;AACjF,EAAA,OAAO,8BAAA,CAA+B,WAAW,MAAM,CAAA;AACzD;AAEO,SAAS,+BAAA,CACd,UAAA,EACA,QAAA,EACA,MAAA,EACQ;AACR,EAAA,MAAM,GAAA,GAAM,mCAAA,CAAoC,UAAA,EAAY,MAAM,CAAA;AAClE,EAAA,MAAM,GAAA,GAAM,oCAAA,CAAqC,QAAA,EAAU,GAAA,EAAK,MAAM,CAAA;AACtE,EAAA,OAAO,GAAG,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG,MAAA,CAAO,GAAG,CAAC,CAAA,CAAA;AACrC;;;AC/CO,SAAS,wBAAwB,QAAA,EAA6C;AACnF,EAAA,IAAI,QAAA,CAAS,WAAW,qBAAA,EAAuB;AAC7C,IAAA,OAAO;AAAA,MACL,UAAA,EAAY,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,gCAAgC,CAAA;AAAA,MAC9D,QAAA,EAAU,QAAA,CAAS,KAAA,CAAM,gCAAA,EAAkC,wBAAwB,CAAC,CAAA;AAAA,MACpF,QAAQ,MAAA,CAAO,QAAA,CAAS,MAAM,gCAAA,EAAkC,qBAAA,GAAwB,CAAC,CAAC,CAAA;AAAA,MAC1F,WAAA,EAAa,QAAA,CAAS,KAAA,CAAM,qBAAA,GAAwB,CAAC;AAAA,KACvD;AAAA,EACF;AAEA,EAAA,IAAI,QAAA,CAAS,WAAW,8BAAA,EAAgC;AACtD,IAAA,MAAM,WAAW,QAAA,CAAS,KAAA;AAAA,MACxB,yCAAA;AAAA,MACA,yCAAA,GAA4C;AAAA,KAC9C;AACA,IAAA,MAAM,MAAA,GAAS,OAAO,QAAQ,CAAA;AAC9B,IAAA,IAAI,CAAE,+BAAA,CAAsD,QAAA,CAAS,MAAM,CAAA,EAAG;AAC5E,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,OAAO;AAAA,MACL,UAAA,EAAY,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,yCAAyC,CAAA;AAAA,MACvE,QAAA;AAAA,MACA,MAAA;AAAA,MACA,WAAA,EAAa,QAAA,CAAS,KAAA,CAAM,8BAAA,GAAiC,CAAC;AAAA,KAChE;AAAA,EACF;AAEA,EAAA,OAAO,IAAA;AACT;;;ACKA,SAAS,OAAA,CAAQ,IAAA,EAA4B,OAAA,EAAiB,MAAA,EAA+B;AAC3F,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,OAAA,EAAQ;AAAA,EACpC;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,SAAS,MAAA,EAAO;AAC5C;AAEA,SAAS,kBAAkB,KAAA,EAAwB;AACjD,EAAA,MAAM,KAAA,GAAQ,MAAM,CAAC,CAAA;AACrB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,IAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,KAAA,EAAO;AACtB,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,cAAc,MAAA,EAAyB;AAC9C,EAAA,OAAO,MAAA,IAAU,8BAA8B,MAAA,IAAU,0BAAA;AAC3D;AAEA,SAAS,UAAU,MAAA,EAAoC;AACrD,EAAA,OAAO,0BAA0B,MAAM,CAAA;AACzC;AAMA,SAAS,iBAAA,CAAkB,OAAe,QAAA,EAAmC;AAC3E,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,OAAO,OAAA,CAAQ,aAAA,EAAe,qCAAkC,CAAA,EAAE;AAAA,EACxF;AAEA,EAAA,IAAI,WAAW,IAAA,CAAK,KAAA,CAAM,QAAQ,KAAA,EAAO,EAAE,CAAC,CAAA,EAAG;AAC7C,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,OAAO,OAAA,CAAQ,mBAAA,EAAqB,kDAA+C,CAAA,EAAE;AAAA,EAC3G;AAEA,EAAA,IAAI,QAAA,CAAS,MAAA,KAAW,qBAAA,IAAyB,QAAA,CAAS,WAAW,8BAAA,EAAgC;AACnG,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,OAAA;AAAA,QACL,gBAAA;AAAA,QACA,CAAA,+BAAA,EAA+B,qBAAqB,CAAA,IAAA,EAAO,8BAA8B,CAAA,2BAAA;AAAA;AAC3F,KACF;AAAA,EACF;AAEA,EAAA,MAAM,KAAA,GAAQ,wBAAwB,QAAQ,CAAA;AAC9C,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,OAAA;AAAA,QACL,oBAAA;AAAA,QACA,CAAA,kEAAA;AAAA;AACF,KACF;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,aAAA,CAAc,KAAA,CAAM,MAAM,CAAA,EAAG;AAChC,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,OAAA;AAAA,QACL,uBAAA;AAAA,QACA,CAAA,6BAAA,EAA6B,MAAM,QAAQ,CAAA,kCAAA,CAAA;AAAA,QAC3C,KAAA,CAAM;AAAA;AACR,KACF;AAAA,EACF;AAEA,EAAA,IAAI,iBAAA,CAAkB,QAAQ,CAAA,EAAG;AAC/B,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,KAAA,EAAO,OAAA,CAAQ,uBAAA,EAAyB,2DAAwD;AAAA,KAClG;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,KAAA,EAAM;AAC3B;AAEA,SAAS,6BAA6B,KAAA,EAK1B;AACV,EAAA,MAAM,WAAW,+BAAA,CAAgC,KAAA,CAAM,YAAY,KAAA,CAAM,QAAA,EAAU,MAAM,MAAM,CAAA;AAC/F,EAAA,OAAO,MAAM,WAAA,KAAgB,QAAA;AAC/B;AAEO,SAAS,qBAAqB,KAAA,EAAwB;AAC3D,EAAA,OAAO,qBAAA,CAAsB,KAAK,CAAA,CAAE,EAAA;AACtC;AAEO,SAAS,sBAAsB,KAAA,EAA8C;AAClF,EAAA,MAAM,QAAA,GAAW,mBAAmB,KAAK,CAAA;AACzC,EAAA,MAAM,SAAA,GAAY,iBAAA,CAAkB,KAAA,EAAO,QAAQ,CAAA;AACnD,EAAA,IAAI,CAAC,UAAU,EAAA,EAAI;AACjB,IAAA,OAAO,SAAA,CAAU,KAAA;AAAA,EACnB;AAEA,EAAA,MAAM,EAAE,OAAM,GAAI,SAAA;AAElB,EAAA,IAAI,CAAC,4BAAA,CAA6B,KAAK,CAAA,EAAG;AACxC,IAAA,OAAO,OAAA,CAAQ,qBAAA,EAAuB,+CAAA,EAA8C,KAAA,CAAM,MAAM,CAAA;AAAA,EAClG;AAEA,EAAA,MAAM,EAAA,GAAK,SAAA,CAAU,KAAA,CAAM,MAAM,CAAA;AACjC,EAAA,MAAM,OAAA,GAAgE;AAAA,IACpE,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO,mBAAmB,QAAQ,CAAA;AAAA,IAClC,MAAA,EAAQ,SAAA;AAAA,IACR,QAAQ,KAAA,CAAM;AAAA,GAChB;AACA,EAAA,IAAI,OAAO,MAAA,EAAW;AACpB,IAAA,OAAA,CAAQ,EAAA,GAAK,EAAA;AAAA,EACf,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,KAAW,+BAAA,EAAiC;AAC3D,IAAA,OAAA,CAAQ,QAAA,GAAW,IAAA;AAAA,EACrB;AACA,EAAA,OAAO,OAAA;AACT","file":"chunk-6WBUKUHD.js","sourcesContent":["/**\n * Título de Eleitor constants — modulo 11 (TSE Res. 20.132/1998 + algorithm cross-checks).\n * @see https://www.tse.jus.br/legislacao/compilada/res/1998/resolucao-no-20-132-de-19-de-marco-de-1998 — Art. 10 (structure, mod 11)\n * @see https://pt.wikipedia.org/wiki/T%C3%ADtulo_eleitoral#C%C3%A1lculo_do_d%C3%ADgito_verificador — weights + SP/MG rule\n * @see http://ghiorzi.org/DVnew.htm#e — algorithm cross-check\n */\nimport type { UfCode } from '../../types/validation-result.js';\n\nexport const TITULO_ELEITOR_DV1_WEIGHTS_8 = [2, 3, 4, 5, 6, 7, 8, 9] as const;\nexport const TITULO_ELEITOR_DV1_WEIGHTS_9 = [9, 2, 3, 4, 5, 6, 7, 8, 9] as const;\nexport const TITULO_ELEITOR_DV2_WEIGHTS = [7, 8, 9] as const;\nexport const TITULO_ELEITOR_SEQUENTIAL_LENGTH = 8;\nexport const TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED = 9;\nexport const TITULO_ELEITOR_LENGTH = 12;\nexport const TITULO_ELEITOR_LENGTH_EXTENDED = 13;\nexport const TITULO_ELEITOR_UF_LENGTH = 2;\nexport const TITULO_ELEITOR_DV_LENGTH = 2;\nexport const TITULO_ELEITOR_MIN_UF_CODE = 1;\nexport const TITULO_ELEITOR_MAX_UF_CODE = 28;\nexport const TITULO_ELEITOR_NUMERIC_PATTERN_12 = /^\\d{12}$/;\nexport const TITULO_ELEITOR_NUMERIC_PATTERN_13 = /^\\d{13}$/;\n\n/** TSE UF codes where remainder 0 maps DV to 1 instead of 0. */\nexport const TITULO_ELEITOR_SPECIAL_UF_CODES = [1, 2] as const;\n\n/** Golden primary — SC (UF=09), Wikipedia PT walkthrough. */\nexport const TITULO_ELEITOR_GOLDEN_PRIMARY = '004356870906';\nexport const TITULO_ELEITOR_GOLDEN_SP_SPECIAL = '000000000116';\nexport const TITULO_ELEITOR_GOLDEN_SP_EXTENDED = '1234567890175';\nexport const TITULO_ELEITOR_GOLDEN_EXTERIOR = '000000012895';\nexport const TITULO_ELEITOR_GOLDEN_MASKED_INPUT = '0043 5687 0906';\n\n/** Normative — Resolução TSE 20.132/1998, Art. 10 (8 seq + 2 UF + 2 DV, mod 11). */\nexport const TITULO_ELEITOR_OFFICIAL_SOURCE_URL =\n 'https://www.tse.jus.br/legislacao/compilada/res/1998/resolucao-no-20-132-de-19-de-marco-de-1998';\n\n/** Normative — Resolução TSE 23.659/2021 (Cadastro Eleitoral; confirms UF + DV structure). */\nexport const TITULO_ELEITOR_NORMATIVE_SECONDARY_URL =\n 'https://www.tse.jus.br/legislacao/compilada/res/2021/resolucao-no-23-659-de-26-de-outubro-de-2021';\n\n/**\n * Algorithm weights + SP/MG remainder-zero rule — not in TSE resolution text.\n * Community consensus validated empirically (Wikipedia PT worked example).\n */\nexport const TITULO_ELEITOR_ALGORITHM_WEIGHTS_REF_URL =\n 'https://pt.wikipedia.org/wiki/T%C3%ADtulo_eleitoral#C%C3%A1lculo_do_d%C3%ADgito_verificador';\n\n/** Algorithm cross-check — Ghiorzi DV table. */\nexport const TITULO_ELEITOR_ALGORITHM_REF_URL = 'http://ghiorzi.org/DVnew.htm#e';\n\nexport const TITULO_ELEITOR_TSE_PORTAL_URL = 'https://www.tse.jus.br/';\n\nexport const TITULO_ELEITOR_ETITULO_URL =\n 'https://www.tse.jus.br/eleitor/servicos/aplicativo-e-titulo';\n\n/** TSE electoral UF code → Brazilian UF (28 = exterior / ZZ). */\nexport const TITULO_ELEITOR_UF_BY_CODE: Readonly<Record<number, UfCode>> = {\n 1: 'SP',\n 2: 'MG',\n 3: 'RJ',\n 4: 'RS',\n 5: 'BA',\n 6: 'PR',\n 7: 'CE',\n 8: 'PE',\n 9: 'SC',\n 10: 'GO',\n 11: 'MA',\n 12: 'PB',\n 13: 'PA',\n 14: 'ES',\n 15: 'PI',\n 16: 'RN',\n 17: 'AL',\n 18: 'MT',\n 19: 'MS',\n 20: 'DF',\n 21: 'SE',\n 22: 'AM',\n 23: 'RO',\n 24: 'AC',\n 25: 'AP',\n 26: 'RR',\n 27: 'TO',\n};\n\nexport const TITULO_ELEITOR_EXTERIOR_UF_CODE = 28;\n","/**\n * Título de Eleitor check digits — modulo 11 (TSE / Wikipedia PT + Ghiorzi).\n * @see https://www.tse.jus.br/legislacao/compilada/res/1998/resolucao-no-20-132-de-19-de-marco-de-1998\n * @see https://pt.wikipedia.org/wiki/T%C3%ADtulo_eleitoral#C%C3%A1lculo_do_d%C3%ADgito_verificador\n * @see http://ghiorzi.org/DVnew.htm#e\n */\nimport { weightedSum } from '../cnpj/modulo11.js';\nimport {\n TITULO_ELEITOR_DV1_WEIGHTS_8,\n TITULO_ELEITOR_DV1_WEIGHTS_9,\n TITULO_ELEITOR_DV2_WEIGHTS,\n TITULO_ELEITOR_SPECIAL_UF_CODES,\n} from './constants.js';\n\nfunction digitValues(chars: string): number[] {\n const values: number[] = [];\n for (let i = 0; i < chars.length; i++) {\n values.push(Number(chars.charAt(i)));\n }\n return values;\n}\n\nfunction isSpecialUf(ufCode: number): boolean {\n return (TITULO_ELEITOR_SPECIAL_UF_CODES as readonly number[]).includes(ufCode);\n}\n\nexport function resolveTituloEleitorCheckDigit(remainder: number, ufCode: number): number {\n if (remainder >= 10) {\n return 0;\n }\n if (remainder === 0 && isSpecialUf(ufCode)) {\n return 1;\n }\n return remainder;\n}\n\nexport function computeTituloEleitorFirstCheckDigit(sequential: string, ufCode: number): number {\n const weights =\n sequential.length === 8 ? TITULO_ELEITOR_DV1_WEIGHTS_8 : TITULO_ELEITOR_DV1_WEIGHTS_9;\n const remainder = weightedSum(digitValues(sequential), weights) % 11;\n return resolveTituloEleitorCheckDigit(remainder, ufCode);\n}\n\nexport function computeTituloEleitorSecondCheckDigit(\n ufDigits: string,\n firstDv: number,\n ufCode: number,\n): number {\n const uf1 = Number(ufDigits.charAt(0));\n const uf2 = Number(ufDigits.charAt(1));\n const remainder = weightedSum([uf1, uf2, firstDv], TITULO_ELEITOR_DV2_WEIGHTS) % 11;\n return resolveTituloEleitorCheckDigit(remainder, ufCode);\n}\n\nexport function computeTituloEleitorCheckDigits(\n sequential: string,\n ufDigits: string,\n ufCode: number,\n): string {\n const dv1 = computeTituloEleitorFirstCheckDigit(sequential, ufCode);\n const dv2 = computeTituloEleitorSecondCheckDigit(ufDigits, dv1, ufCode);\n return `${String(dv1)}${String(dv2)}`;\n}\n","import {\n TITULO_ELEITOR_LENGTH,\n TITULO_ELEITOR_LENGTH_EXTENDED,\n TITULO_ELEITOR_SEQUENTIAL_LENGTH,\n TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED,\n TITULO_ELEITOR_SPECIAL_UF_CODES,\n} from './constants.js';\n\nexport type TituloEleitorParts = {\n sequential: string;\n ufDigits: string;\n ufCode: number;\n checkDigits: string;\n};\n\nexport function parseTituloEleitorParts(stripped: string): TituloEleitorParts | null {\n if (stripped.length === TITULO_ELEITOR_LENGTH) {\n return {\n sequential: stripped.slice(0, TITULO_ELEITOR_SEQUENTIAL_LENGTH),\n ufDigits: stripped.slice(TITULO_ELEITOR_SEQUENTIAL_LENGTH, TITULO_ELEITOR_LENGTH - 2),\n ufCode: Number(stripped.slice(TITULO_ELEITOR_SEQUENTIAL_LENGTH, TITULO_ELEITOR_LENGTH - 2)),\n checkDigits: stripped.slice(TITULO_ELEITOR_LENGTH - 2),\n };\n }\n\n if (stripped.length === TITULO_ELEITOR_LENGTH_EXTENDED) {\n const ufDigits = stripped.slice(\n TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED,\n TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED + 2,\n );\n const ufCode = Number(ufDigits);\n if (!(TITULO_ELEITOR_SPECIAL_UF_CODES as readonly number[]).includes(ufCode)) {\n return null;\n }\n return {\n sequential: stripped.slice(0, TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED),\n ufDigits,\n ufCode,\n checkDigits: stripped.slice(TITULO_ELEITOR_LENGTH_EXTENDED - 2),\n };\n }\n\n return null;\n}\n","/**\n * Título de Eleitor validation — modulo 11 (TSE Res. 20.132/1998 + algorithm cross-checks).\n * @see https://www.tse.jus.br/legislacao/compilada/res/1998/resolucao-no-20-132-de-19-de-marco-de-1998\n * @see https://pt.wikipedia.org/wiki/T%C3%ADtulo_eleitoral#C%C3%A1lculo_do_d%C3%ADgito_verificador\n * @see http://ghiorzi.org/DVnew.htm#e\n */\nimport { stripTituloEleitor } from '../../strip/index.js';\nimport type { TituloEleitorValidationResult, UfCode } from '../../types/validation-result.js';\nimport { brandTituloEleitor } from '../../types/validation-result.js';\nimport { computeTituloEleitorCheckDigits } from './check-digits.js';\nimport {\n TITULO_ELEITOR_EXTERIOR_UF_CODE,\n TITULO_ELEITOR_LENGTH,\n TITULO_ELEITOR_LENGTH_EXTENDED,\n TITULO_ELEITOR_MAX_UF_CODE,\n TITULO_ELEITOR_MIN_UF_CODE,\n TITULO_ELEITOR_UF_BY_CODE,\n} from './constants.js';\nimport { parseTituloEleitorParts } from './parse.js';\n\nexport {\n TITULO_ELEITOR_ALGORITHM_REF_URL,\n TITULO_ELEITOR_ALGORITHM_WEIGHTS_REF_URL,\n TITULO_ELEITOR_DV1_WEIGHTS_8,\n TITULO_ELEITOR_DV1_WEIGHTS_9,\n TITULO_ELEITOR_DV2_WEIGHTS,\n TITULO_ELEITOR_ETITULO_URL,\n TITULO_ELEITOR_EXTERIOR_UF_CODE,\n TITULO_ELEITOR_GOLDEN_EXTERIOR,\n TITULO_ELEITOR_GOLDEN_MASKED_INPUT,\n TITULO_ELEITOR_GOLDEN_PRIMARY,\n TITULO_ELEITOR_GOLDEN_SP_EXTENDED,\n TITULO_ELEITOR_GOLDEN_SP_SPECIAL,\n TITULO_ELEITOR_LENGTH,\n TITULO_ELEITOR_LENGTH_EXTENDED,\n TITULO_ELEITOR_NORMATIVE_SECONDARY_URL,\n TITULO_ELEITOR_NUMERIC_PATTERN_12,\n TITULO_ELEITOR_NUMERIC_PATTERN_13,\n TITULO_ELEITOR_OFFICIAL_SOURCE_URL,\n TITULO_ELEITOR_SEQUENTIAL_LENGTH,\n TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED,\n TITULO_ELEITOR_SPECIAL_UF_CODES,\n TITULO_ELEITOR_TSE_PORTAL_URL,\n TITULO_ELEITOR_UF_BY_CODE,\n} from './constants.js';\n\ntype FailedResult = Extract<TituloEleitorValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string, ufCode?: number): FailedResult {\n if (ufCode === undefined) {\n return { ok: false, code, message };\n }\n return { ok: false, code, message, ufCode };\n}\n\nfunction hasRepeatedDigits(value: string): boolean {\n const first = value[0];\n for (let i = 1; i < value.length; i++) {\n if (value[i] !== first) {\n return false;\n }\n }\n return true;\n}\n\nfunction isValidUfCode(ufCode: number): boolean {\n return ufCode >= TITULO_ELEITOR_MIN_UF_CODE && ufCode <= TITULO_ELEITOR_MAX_UF_CODE;\n}\n\nfunction resolveUf(ufCode: number): UfCode | undefined {\n return TITULO_ELEITOR_UF_BY_CODE[ufCode];\n}\n\ntype StructureResult =\n | { ok: false; error: FailedResult }\n | { ok: true; parts: NonNullable<ReturnType<typeof parseTituloEleitorParts>> };\n\nfunction validateStructure(input: string, stripped: string): StructureResult {\n if (stripped.length === 0) {\n return { ok: false, error: failure('EMPTY_INPUT', 'Título de Eleitor input is empty') };\n }\n\n if (/[^0-9\\s]/.test(input.replace(/\\s/g, ''))) {\n return { ok: false, error: failure('INVALID_CHARACTER', 'Título de Eleitor contains invalid characters') };\n }\n\n if (stripped.length !== TITULO_ELEITOR_LENGTH && stripped.length !== TITULO_ELEITOR_LENGTH_EXTENDED) {\n return {\n ok: false,\n error: failure(\n 'INVALID_LENGTH',\n `Título de Eleitor must have ${TITULO_ELEITOR_LENGTH} or ${TITULO_ELEITOR_LENGTH_EXTENDED} digits after normalization`,\n ),\n };\n }\n\n const parts = parseTituloEleitorParts(stripped);\n if (!parts) {\n return {\n ok: false,\n error: failure(\n 'UNSUPPORTED_FORMAT',\n `13-digit Título de Eleitor is only valid for SP (01) or MG (02)`,\n ),\n };\n }\n\n if (!isValidUfCode(parts.ufCode)) {\n return {\n ok: false,\n error: failure(\n 'KNOWN_INVALID_PATTERN',\n `Título de Eleitor UF code ${parts.ufDigits} is not a valid TSE electoral code`,\n parts.ufCode,\n ),\n };\n }\n\n if (hasRepeatedDigits(stripped)) {\n return {\n ok: false,\n error: failure('KNOWN_INVALID_PATTERN', 'Título de Eleitor with all identical digits is invalid'),\n };\n }\n\n return { ok: true, parts };\n}\n\nfunction isValidTituloEleitorChecksum(parts: {\n sequential: string;\n ufDigits: string;\n ufCode: number;\n checkDigits: string;\n}): boolean {\n const expected = computeTituloEleitorCheckDigits(parts.sequential, parts.ufDigits, parts.ufCode);\n return parts.checkDigits === expected;\n}\n\nexport function isValidTituloEleitor(input: string): boolean {\n return validateTituloEleitor(input).ok;\n}\n\nexport function validateTituloEleitor(input: string): TituloEleitorValidationResult {\n const stripped = stripTituloEleitor(input);\n const structure = validateStructure(input, stripped);\n if (!structure.ok) {\n return structure.error;\n }\n\n const { parts } = structure;\n\n if (!isValidTituloEleitorChecksum(parts)) {\n return failure('INVALID_CHECK_DIGIT', 'Título de Eleitor check digits are invalid', parts.ufCode);\n }\n\n const uf = resolveUf(parts.ufCode);\n const success: Extract<TituloEleitorValidationResult, { ok: true }> = {\n ok: true,\n value: brandTituloEleitor(stripped),\n format: 'numeric',\n ufCode: parts.ufCode,\n };\n if (uf !== undefined) {\n success.uf = uf;\n } else if (parts.ufCode === TITULO_ELEITOR_EXTERIOR_UF_CODE) {\n success.exterior = true;\n }\n return success;\n}\n"]}
@@ -1,9 +1,6 @@
1
- import { applyCpfMask } from './chunk-VBFKN3NR.js';
2
- import { validateCpf } from './chunk-W5LOXC7J.js';
3
- import { stripCpf } from './chunk-UCJPSJN5.js';
4
- import { applyCnpjMask } from './chunk-RUQDVHR7.js';
5
- import { validateCnpj, detectCnpjFormat } from './chunk-2RZXK6C3.js';
6
- import { stripCnpj } from './chunk-EB3G4IG6.js';
1
+ import { validateCpf, applyCpfMask } from './chunk-DQQNXXGO.js';
2
+ import { PIX_EMAIL_MAX_LENGTH, PIX_EMAIL_PATTERN, PIX_EVP_PATTERN, PIX_PHONE_E164_PATTERN, PIX_PHONE_BR_MOBILE_PATTERN, detectPixKeyType } from './chunk-FA5ZM5UA.js';
3
+ import { validateCnpj, applyCnpjMask } from './chunk-MGFDTECS.js';
7
4
  import { brandPixKey } from './chunk-BVMY4IWB.js';
8
5
 
9
6
  // src/core/pix/cnpj.ts
@@ -48,62 +45,6 @@ function validatePixCpfKey(input) {
48
45
  };
49
46
  }
50
47
 
51
- // src/core/pix/constants.ts
52
- var PIX_EMAIL_MAX_LENGTH = 77;
53
- var PIX_EMAIL_PATTERN = /^[a-z0-9.!#$'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/;
54
- var PIX_PHONE_E164_PATTERN = /^\+[1-9]\d{1,14}$/;
55
- var PIX_PHONE_BR_MOBILE_PATTERN = /^\+55\d{2}9\d{8}$/;
56
- var PIX_EVP_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
57
- var PIX_CPF_DIGITS_PATTERN = /^[0-9]{11}$/;
58
- var PIX_GOLDEN_CPF = "12345678909";
59
- var PIX_GOLDEN_CNPJ_NUMERIC = "11222333000181";
60
- var PIX_GOLDEN_CNPJ_ALPHANUMERIC = "12ABC34501DE35";
61
- var PIX_GOLDEN_EMAIL = "pix@bcb.gov.br";
62
- var PIX_GOLDEN_PHONE = "+5510998765432";
63
- var PIX_GOLDEN_EVP = "123e4567-e89b-12d3-a456-426655440000";
64
- var PIX_OFFICIAL_SOURCE_URL = "https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf";
65
- var PIX_DICT_API_SOURCE_URL = "https://aprendervalor.bcb.gov.br/content/estabilidadefinanceira/pix/API-DICT_v2-9-0.html";
66
-
67
- // src/core/pix/detect.ts
68
- function isCpfShapedInput(input) {
69
- const trimmed = input.trim();
70
- const stripped = stripCpf(trimmed);
71
- if (!PIX_CPF_DIGITS_PATTERN.test(stripped)) {
72
- return false;
73
- }
74
- return /^[\d.\-\s]+$/.test(trimmed);
75
- }
76
- function isCnpjShapedInput(input) {
77
- const trimmed = input.trim();
78
- const stripped = stripCnpj(trimmed);
79
- if (detectCnpjFormat(stripped) === "unknown") {
80
- return false;
81
- }
82
- return /^[A-Za-z0-9./\-\s]+$/.test(trimmed);
83
- }
84
- function detectPixKeyType(input) {
85
- const trimmed = input.trim();
86
- if (trimmed.length === 0) {
87
- return "unknown";
88
- }
89
- if (trimmed.includes("@")) {
90
- return "email";
91
- }
92
- if (trimmed.startsWith("+")) {
93
- return "phone";
94
- }
95
- if (PIX_EVP_PATTERN.test(trimmed)) {
96
- return "evp";
97
- }
98
- if (isCpfShapedInput(trimmed)) {
99
- return "cpf";
100
- }
101
- if (isCnpjShapedInput(trimmed)) {
102
- return "cnpj";
103
- }
104
- return "unknown";
105
- }
106
-
107
48
  // src/core/pix/email.ts
108
49
  function failure3(code, message) {
109
50
  return { ok: false, code, message, keyType: "email" };
@@ -250,6 +191,6 @@ function validatePixKey(input, options) {
250
191
  return validateByType(trimmed, detected);
251
192
  }
252
193
 
253
- export { PIX_DICT_API_SOURCE_URL, PIX_GOLDEN_CNPJ_ALPHANUMERIC, PIX_GOLDEN_CNPJ_NUMERIC, PIX_GOLDEN_CPF, PIX_GOLDEN_EMAIL, PIX_GOLDEN_EVP, PIX_GOLDEN_PHONE, PIX_OFFICIAL_SOURCE_URL, applyPixCnpjKeyMask, applyPixCpfKeyMask, applyPixEmailKeyMask, applyPixEvpKeyMask, applyPixPhoneKeyMask, detectPixKeyType, isValidPixKey, validatePixCnpjKey, validatePixCpfKey, validatePixEmailKey, validatePixEvpKey, validatePixKey, validatePixPhoneKey };
254
- //# sourceMappingURL=chunk-DS6MOO5K.js.map
255
- //# sourceMappingURL=chunk-DS6MOO5K.js.map
194
+ export { applyPixCnpjKeyMask, applyPixCpfKeyMask, applyPixEmailKeyMask, applyPixEvpKeyMask, applyPixPhoneKeyMask, isValidPixKey, validatePixCnpjKey, validatePixCpfKey, validatePixEmailKey, validatePixEvpKey, validatePixKey, validatePixPhoneKey };
195
+ //# sourceMappingURL=chunk-7XVCTDJE.js.map
196
+ //# sourceMappingURL=chunk-7XVCTDJE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/pix/cnpj.ts","../src/core/pix/cpf.ts","../src/core/pix/email.ts","../src/core/pix/evp.ts","../src/core/pix/phone.ts","../src/core/pix/mask.ts","../src/core/pix/index.ts"],"names":["failure"],"mappings":"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","file":"chunk-7XVCTDJE.js","sourcesContent":["import { validateCnpj } from '../cnpj/index.js';\nimport type { PixValidationResult } from '../../types/validation-result.js';\nimport { brandPixKey } from '../../types/validation-result.js';\n\ntype FailedResult = Extract<PixValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, keyType: 'cnpj' };\n}\n\nexport function validatePixCnpjKey(input: string): PixValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return failure('EMPTY_INPUT', 'PIX CNPJ key input is empty');\n }\n\n const result = validateCnpj(trimmed);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message, keyType: 'cnpj' };\n }\n\n return {\n ok: true,\n value: brandPixKey(result.value),\n keyType: 'cnpj',\n format: result.format,\n };\n}\n","import { validateCpf } from '../cpf/index.js';\nimport type { PixValidationResult } from '../../types/validation-result.js';\nimport { brandPixKey } from '../../types/validation-result.js';\n\ntype FailedResult = Extract<PixValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, keyType: 'cpf' };\n}\n\nexport function validatePixCpfKey(input: string): PixValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return failure('EMPTY_INPUT', 'PIX CPF key input is empty');\n }\n\n const result = validateCpf(trimmed);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message, keyType: 'cpf' };\n }\n\n return {\n ok: true,\n value: brandPixKey(result.value),\n keyType: 'cpf',\n format: result.format,\n };\n}\n","import type { PixValidationResult } from '../../types/validation-result.js';\nimport { brandPixKey } from '../../types/validation-result.js';\nimport { PIX_EMAIL_MAX_LENGTH, PIX_EMAIL_PATTERN } from './constants.js';\n\ntype FailedResult = Extract<PixValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, keyType: 'email' };\n}\n\nexport function validatePixEmailKey(input: string): PixValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return failure('EMPTY_INPUT', 'PIX email key input is empty');\n }\n\n if (trimmed !== trimmed.toLowerCase()) {\n return failure('INVALID_CHARACTER', 'PIX email key must be lowercase');\n }\n\n if (trimmed.length > PIX_EMAIL_MAX_LENGTH) {\n return failure('INVALID_LENGTH', `PIX email key must have at most ${PIX_EMAIL_MAX_LENGTH} characters`);\n }\n\n if (!trimmed.includes('@') || !PIX_EMAIL_PATTERN.test(trimmed)) {\n return failure('UNSUPPORTED_FORMAT', 'PIX email key format is invalid');\n }\n\n return {\n ok: true,\n value: brandPixKey(trimmed),\n keyType: 'email',\n format: 'email',\n };\n}\n","import type { PixValidationResult } from '../../types/validation-result.js';\nimport { brandPixKey } from '../../types/validation-result.js';\nimport { PIX_EVP_PATTERN } from './constants.js';\n\ntype FailedResult = Extract<PixValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, keyType: 'evp' };\n}\n\nexport function validatePixEvpKey(input: string): PixValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return failure('EMPTY_INPUT', 'PIX EVP key input is empty');\n }\n\n if (trimmed !== trimmed.toLowerCase()) {\n return failure('INVALID_CHARACTER', 'PIX EVP key must be lowercase');\n }\n\n if (!PIX_EVP_PATTERN.test(trimmed)) {\n return failure('UNSUPPORTED_FORMAT', 'PIX EVP key must be a lowercase UUID with hyphens');\n }\n\n return {\n ok: true,\n value: brandPixKey(trimmed),\n keyType: 'evp',\n format: 'evp',\n };\n}\n","import type { PixValidationResult } from '../../types/validation-result.js';\nimport { brandPixKey } from '../../types/validation-result.js';\nimport { PIX_PHONE_BR_MOBILE_PATTERN, PIX_PHONE_E164_PATTERN } from './constants.js';\n\ntype FailedResult = Extract<PixValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message, keyType: 'phone' };\n}\n\nexport function validatePixPhoneKey(input: string): PixValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return failure('EMPTY_INPUT', 'PIX phone key input is empty');\n }\n\n if (!trimmed.startsWith('+')) {\n return failure('INVALID_CHARACTER', 'PIX phone key must start with + (E.164)');\n }\n\n if (!PIX_PHONE_E164_PATTERN.test(trimmed)) {\n return failure('INVALID_CHARACTER', 'PIX phone key contains invalid characters');\n }\n\n if (!trimmed.startsWith('+55')) {\n return failure('UNSUPPORTED_FORMAT', 'PIX phone key must use Brazilian country code +55');\n }\n\n if (!PIX_PHONE_BR_MOBILE_PATTERN.test(trimmed)) {\n return failure('UNSUPPORTED_FORMAT', 'PIX phone key must match Brazilian mobile format +55DD9XXXXXXXX');\n }\n\n return {\n ok: true,\n value: brandPixKey(trimmed),\n keyType: 'phone',\n format: 'phone',\n };\n}\n","/**\n * PIX key display masks — delegates to parent validators where applicable (BR-PIX-001…005).\n * @see docs/use-cases/UC-003-format-document.md\n */\nimport { applyCnpjMask } from '../cnpj/mask.js';\nimport { applyCpfMask } from '../cpf/mask.js';\n\nexport function applyPixCpfKeyMask(canonical: string): string {\n return applyCpfMask(canonical);\n}\n\nexport function applyPixCnpjKeyMask(canonical: string): string {\n return applyCnpjMask(canonical);\n}\n\n/** Brazilian mobile E.164 → +55 (DD) 9XXXX-XXXX display. */\nexport function applyPixPhoneKeyMask(e164: string): string {\n const match = /^\\+55(\\d{2})(9\\d{4})(\\d{4})$/.exec(e164);\n if (!match) {\n throw new Error('PIX phone key must be a validated Brazilian mobile E.164 number');\n }\n return `+55 (${match[1]}) ${match[2]}-${match[3]}`;\n}\n\nexport function applyPixEmailKeyMask(email: string): string {\n return email.toLowerCase().trim();\n}\n\nexport function applyPixEvpKeyMask(uuid: string): string {\n return uuid.toLowerCase();\n}\n","/**\n * PIX key validation — five Bacen types (CPF, CNPJ, email, phone, EVP).\n * @see docs/use-cases/UC-005-validate-pix-key.md\n */\nimport type { PixKeyType, PixValidationResult } from '../../types/validation-result.js';\nimport { validatePixCnpjKey } from './cnpj.js';\nimport { validatePixCpfKey } from './cpf.js';\nimport { detectPixKeyType } from './detect.js';\nimport { validatePixEmailKey } from './email.js';\nimport { validatePixEvpKey } from './evp.js';\nimport { validatePixPhoneKey } from './phone.js';\n\nexport {\n PIX_DICT_API_SOURCE_URL,\n PIX_GOLDEN_CNPJ_ALPHANUMERIC,\n PIX_GOLDEN_CNPJ_NUMERIC,\n PIX_GOLDEN_CPF,\n PIX_GOLDEN_EMAIL,\n PIX_GOLDEN_EMAIL_SECONDARY,\n PIX_GOLDEN_EVP,\n PIX_GOLDEN_PHONE,\n PIX_GOLDEN_PHONE_SECONDARY,\n PIX_OFFICIAL_SOURCE_URL,\n} from './constants.js';\nexport { detectPixKeyType, type DetectedPixKeyType } from './detect.js';\nexport { validatePixCpfKey } from './cpf.js';\nexport { validatePixCnpjKey } from './cnpj.js';\nexport { validatePixEmailKey } from './email.js';\nexport { validatePixPhoneKey } from './phone.js';\nexport { validatePixEvpKey } from './evp.js';\nexport {\n applyPixCnpjKeyMask,\n applyPixCpfKeyMask,\n applyPixEmailKeyMask,\n applyPixEvpKeyMask,\n applyPixPhoneKeyMask,\n} from './mask.js';\n\nexport type ValidatePixKeyOptions = {\n type?: PixKeyType;\n};\n\ntype FailedResult = Extract<PixValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string, keyType?: PixKeyType): FailedResult {\n return { ok: false, code, message, ...(keyType ? { keyType } : {}) };\n}\n\nfunction validateByType(input: string, keyType: PixKeyType): PixValidationResult {\n switch (keyType) {\n case 'cpf':\n return validatePixCpfKey(input);\n case 'cnpj':\n return validatePixCnpjKey(input);\n case 'email':\n return validatePixEmailKey(input);\n case 'phone':\n return validatePixPhoneKey(input);\n case 'evp':\n return validatePixEvpKey(input);\n default: {\n const _exhaustive: never = keyType;\n return failure('UNSUPPORTED_FORMAT', `Unknown PIX key type: ${_exhaustive}`);\n }\n }\n}\n\nexport function isValidPixKey(input: string, options?: ValidatePixKeyOptions): boolean {\n return validatePixKey(input, options).ok;\n}\n\nexport function validatePixKey(input: string, options?: ValidatePixKeyOptions): PixValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return failure('EMPTY_INPUT', 'PIX key input is empty');\n }\n\n const detected = detectPixKeyType(trimmed);\n\n if (options?.type !== undefined) {\n if (detected !== 'unknown' && detected !== options.type) {\n return failure(\n 'UNSUPPORTED_FORMAT',\n `PIX key detected as ${detected} but forced type is ${options.type}`,\n options.type,\n );\n }\n return validateByType(trimmed, options.type);\n }\n\n if (detected === 'unknown') {\n return failure('UNSUPPORTED_FORMAT', 'PIX key type could not be determined');\n }\n\n return validateByType(trimmed, detected);\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { validateTituloEleitor, TITULO_ELEITOR_NUMERIC_PATTERN_12, TITULO_ELEITOR_NUMERIC_PATTERN_13, TITULO_ELEITOR_LENGTH, TITULO_ELEITOR_LENGTH_EXTENDED } from './chunk-MSYTS5K7.js';
1
+ import { validateTituloEleitor, TITULO_ELEITOR_NUMERIC_PATTERN_12, TITULO_ELEITOR_NUMERIC_PATTERN_13, TITULO_ELEITOR_LENGTH, TITULO_ELEITOR_LENGTH_EXTENDED } from './chunk-6WBUKUHD.js';
2
2
 
3
3
  // src/core/titulo-eleitor/mask.ts
4
4
  function applyTituloEleitorMask(canonical) {
@@ -23,5 +23,5 @@ function formatTituloEleitor(input) {
23
23
  }
24
24
 
25
25
  export { formatTituloEleitor };
26
- //# sourceMappingURL=chunk-4HQ4J2J5.js.map
27
- //# sourceMappingURL=chunk-4HQ4J2J5.js.map
26
+ //# sourceMappingURL=chunk-A255RZZ7.js.map
27
+ //# sourceMappingURL=chunk-A255RZZ7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/titulo-eleitor/mask.ts","../src/format/titulo-eleitor.ts"],"names":[],"mappings":";;;AAWO,SAAS,uBAAuB,SAAA,EAA2B;AAChE,EAAA,IAAI,iCAAA,CAAkC,IAAA,CAAK,SAAS,CAAA,EAAG;AACrD,IAAA,OAAO,GAAG,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA,EAChF;AACA,EAAA,IAAI,iCAAA,CAAkC,IAAA,CAAK,SAAS,CAAA,EAAG;AACrD,IAAA,OAAO,GAAG,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA,EAChF;AACA,EAAA,MAAM,IAAI,KAAA;AAAA,IACR,CAAA,uCAAA,EAAuC,qBAAqB,CAAA,IAAA,EAAO,8BAA8B,CAAA,iBAAA;AAAA,GACnG;AACF;;;ACjBO,SAAS,oBAAoB,KAAA,EAA6B;AAC/D,EAAA,MAAM,MAAA,GAAS,sBAAsB,KAAK,CAAA;AAC1C,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,sBAAA,CAAuB,MAAA,CAAO,KAAK,CAAA,EAAE;AACrE","file":"chunk-4HQ4J2J5.js","sourcesContent":["import {\n TITULO_ELEITOR_LENGTH,\n TITULO_ELEITOR_LENGTH_EXTENDED,\n TITULO_ELEITOR_NUMERIC_PATTERN_12,\n TITULO_ELEITOR_NUMERIC_PATTERN_13,\n} from './constants.js';\n\n/**\n * Display mask — `XXXX XXXX XXXX` (BR-TITULO-005).\n * @see https://pt.wikipedia.org/wiki/T%C3%ADtulo_eleitoral#C%C3%A1lculo_do_d%C3%ADgito_verificador\n */\nexport function applyTituloEleitorMask(canonical: string): string {\n if (TITULO_ELEITOR_NUMERIC_PATTERN_12.test(canonical)) {\n return `${canonical.slice(0, 4)} ${canonical.slice(4, 8)} ${canonical.slice(8)}`;\n }\n if (TITULO_ELEITOR_NUMERIC_PATTERN_13.test(canonical)) {\n return `${canonical.slice(0, 5)} ${canonical.slice(5, 9)} ${canonical.slice(9)}`;\n }\n throw new Error(\n `Título de Eleitor must have exactly ${TITULO_ELEITOR_LENGTH} or ${TITULO_ELEITOR_LENGTH_EXTENDED} digits to format`,\n );\n}\n","import { applyTituloEleitorMask } from '../core/titulo-eleitor/mask.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatTituloEleitor(input: string): FormatResult {\n const result = validateTituloEleitor(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyTituloEleitorMask(result.value) };\n}\n"]}
1
+ {"version":3,"sources":["../src/core/titulo-eleitor/mask.ts","../src/format/titulo-eleitor.ts"],"names":[],"mappings":";;;AAWO,SAAS,uBAAuB,SAAA,EAA2B;AAChE,EAAA,IAAI,iCAAA,CAAkC,IAAA,CAAK,SAAS,CAAA,EAAG;AACrD,IAAA,OAAO,GAAG,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA,EAChF;AACA,EAAA,IAAI,iCAAA,CAAkC,IAAA,CAAK,SAAS,CAAA,EAAG;AACrD,IAAA,OAAO,GAAG,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA,EAChF;AACA,EAAA,MAAM,IAAI,KAAA;AAAA,IACR,CAAA,uCAAA,EAAuC,qBAAqB,CAAA,IAAA,EAAO,8BAA8B,CAAA,iBAAA;AAAA,GACnG;AACF;;;ACjBO,SAAS,oBAAoB,KAAA,EAA6B;AAC/D,EAAA,MAAM,MAAA,GAAS,sBAAsB,KAAK,CAAA;AAC1C,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,sBAAA,CAAuB,MAAA,CAAO,KAAK,CAAA,EAAE;AACrE","file":"chunk-A255RZZ7.js","sourcesContent":["import {\n TITULO_ELEITOR_LENGTH,\n TITULO_ELEITOR_LENGTH_EXTENDED,\n TITULO_ELEITOR_NUMERIC_PATTERN_12,\n TITULO_ELEITOR_NUMERIC_PATTERN_13,\n} from './constants.js';\n\n/**\n * Display mask — `XXXX XXXX XXXX` (BR-TITULO-005).\n * @see https://pt.wikipedia.org/wiki/T%C3%ADtulo_eleitoral#C%C3%A1lculo_do_d%C3%ADgito_verificador\n */\nexport function applyTituloEleitorMask(canonical: string): string {\n if (TITULO_ELEITOR_NUMERIC_PATTERN_12.test(canonical)) {\n return `${canonical.slice(0, 4)} ${canonical.slice(4, 8)} ${canonical.slice(8)}`;\n }\n if (TITULO_ELEITOR_NUMERIC_PATTERN_13.test(canonical)) {\n return `${canonical.slice(0, 5)} ${canonical.slice(5, 9)} ${canonical.slice(9)}`;\n }\n throw new Error(\n `Título de Eleitor must have exactly ${TITULO_ELEITOR_LENGTH} or ${TITULO_ELEITOR_LENGTH_EXTENDED} digits to format`,\n );\n}\n","import { applyTituloEleitorMask } from '../core/titulo-eleitor/mask.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatTituloEleitor(input: string): FormatResult {\n const result = validateTituloEleitor(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyTituloEleitorMask(result.value) };\n}\n"]}
@@ -0,0 +1,31 @@
1
+ // src/esocial/data/metadata.json
2
+ var metadata_default = {
3
+ id: "esocial",
4
+ nome: "eSocial S-1.3 \u2014 Tabela 01 (Categorias) + Tabela 03 (Rubricas)",
5
+ fonte: "eSocial S-1.3 \u2014 Tabelas 01 e 03",
6
+ endpoints: [
7
+ "https://www.gov.br/esocial/pt-br/documentacao-tecnica/leiautes-esocial-versao-s-1-3-nt-06-2026/tabelas.html"
8
+ ],
9
+ capturadoEm: "2026-06-27",
10
+ atualizadoEm: "2026-06-27T15:22:50.157Z",
11
+ contagens: {
12
+ categorias: 47,
13
+ rubricas: 208
14
+ },
15
+ alteracoes: {
16
+ adicionados: 208,
17
+ removidos: 0,
18
+ alterados: 0,
19
+ comparadoCom: "2026-06-25"
20
+ },
21
+ verificacao: {
22
+ agendamento: "manual",
23
+ workflow: "data-refresh-bot.yml",
24
+ ultimaExecucao: "2026-06-27T15:22:50.157Z"
25
+ },
26
+ documentacao: "docs/OFFICIAL-SOURCES.md#esocial"
27
+ };
28
+
29
+ export { metadata_default };
30
+ //# sourceMappingURL=chunk-AOBSYTR2.js.map
31
+ //# sourceMappingURL=chunk-AOBSYTR2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/esocial/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,SAAA;AAAA,EACN,IAAA,EAAQ,oEAAA;AAAA,EACR,KAAA,EAAS,sCAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,UAAA,EAAc,EAAA;AAAA,IACd,QAAA,EAAY;AAAA,GACd;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,GAAA;AAAA,IACf,SAAA,EAAa,CAAA;AAAA,IACb,SAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAgB;AAAA,GAClB;AAAA,EACA,WAAA,EAAe;AAAA,IACb,WAAA,EAAe,QAAA;AAAA,IACf,QAAA,EAAY,sBAAA;AAAA,IACZ,cAAA,EAAkB;AAAA,GACpB;AAAA,EACA,YAAA,EAAgB;AAClB","file":"chunk-AOBSYTR2.js","sourcesContent":["{\n \"id\": \"esocial\",\n \"nome\": \"eSocial S-1.3 — Tabela 01 (Categorias) + Tabela 03 (Rubricas)\",\n \"fonte\": \"eSocial S-1.3 — Tabelas 01 e 03\",\n \"endpoints\": [\n \"https://www.gov.br/esocial/pt-br/documentacao-tecnica/leiautes-esocial-versao-s-1-3-nt-06-2026/tabelas.html\"\n ],\n \"capturadoEm\": \"2026-06-27\",\n \"atualizadoEm\": \"2026-06-27T15:22:50.157Z\",\n \"contagens\": {\n \"categorias\": 47,\n \"rubricas\": 208\n },\n \"alteracoes\": {\n \"adicionados\": 208,\n \"removidos\": 0,\n \"alterados\": 0,\n \"comparadoCom\": \"2026-06-25\"\n },\n \"verificacao\": {\n \"agendamento\": \"manual\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-27T15:22:50.157Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#esocial\"\n}\n"]}
@@ -7,15 +7,15 @@ var metadata_default = {
7
7
  "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoMoedaPeriodo(moeda=@moeda,dataInicial=@dataInicial,dataFinalCotacao=@dataFinalCotacao)",
8
8
  "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/swagger-ui3"
9
9
  ],
10
- capturadoEm: "2026-06-26",
11
- atualizadoEm: "2026-06-26T13:08:11.249Z",
10
+ capturadoEm: "2026-06-27",
11
+ atualizadoEm: "2026-06-27T15:39:57.807Z",
12
12
  contagens: {
13
- cotacoes: 40,
13
+ cotacoes: 860,
14
14
  moedas: 10,
15
- diasUteis: 4
15
+ diasUteis: 86
16
16
  },
17
17
  alteracoes: {
18
- adicionados: 0,
18
+ adicionados: 820,
19
19
  removidos: 0,
20
20
  alterados: 0,
21
21
  comparadoCom: "2026-06-26"
@@ -23,11 +23,12 @@ var metadata_default = {
23
23
  verificacao: {
24
24
  agendamento: "diario",
25
25
  workflow: "data-refresh-bot.yml",
26
- ultimaExecucao: "2026-06-26T13:08:11.249Z"
26
+ ultimaExecucao: "2026-06-27T15:39:57.807Z"
27
27
  },
28
- documentacao: "docs/OFFICIAL-SOURCES.md#ptax-cotacoes"
28
+ documentacao: "docs/OFFICIAL-SOURCES.md#ptax-cotacoes",
29
+ janelaDiasUteis: 90
29
30
  };
30
31
 
31
32
  export { metadata_default };
32
- //# sourceMappingURL=chunk-JNAZI3HU.js.map
33
- //# sourceMappingURL=chunk-JNAZI3HU.js.map
33
+ //# sourceMappingURL=chunk-AZAZRJZC.js.map
34
+ //# sourceMappingURL=chunk-AZAZRJZC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ptax/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAQ,uBAAA;AAAA,EACR,KAAA,EAAS,sDAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX,6JAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,QAAA,EAAY,GAAA;AAAA,IACZ,MAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAa;AAAA,GACf;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,GAAA;AAAA,IACf,SAAA,EAAa,CAAA;AAAA,IACb,SAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAgB;AAAA,GAClB;AAAA,EACA,WAAA,EAAe;AAAA,IACb,WAAA,EAAe,QAAA;AAAA,IACf,QAAA,EAAY,sBAAA;AAAA,IACZ,cAAA,EAAkB;AAAA,GACpB;AAAA,EACA,YAAA,EAAgB,wCAAA;AAAA,EAChB,eAAA,EAAmB;AACrB","file":"chunk-AZAZRJZC.js","sourcesContent":["{\n \"id\": \"ptax\",\n \"nome\": \"Bacen PTAX Fechamento\",\n \"fonte\": \"Banco Central Olinda PTAX API — Fechamento PTAX\",\n \"endpoints\": [\n \"https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoMoedaPeriodo(moeda=@moeda,dataInicial=@dataInicial,dataFinalCotacao=@dataFinalCotacao)\",\n \"https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/swagger-ui3\"\n ],\n \"capturadoEm\": \"2026-06-27\",\n \"atualizadoEm\": \"2026-06-27T15:39:57.807Z\",\n \"contagens\": {\n \"cotacoes\": 860,\n \"moedas\": 10,\n \"diasUteis\": 86\n },\n \"alteracoes\": {\n \"adicionados\": 820,\n \"removidos\": 0,\n \"alterados\": 0,\n \"comparadoCom\": \"2026-06-26\"\n },\n \"verificacao\": {\n \"agendamento\": \"diario\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-27T15:39:57.807Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#ptax-cotacoes\",\n \"janelaDiasUteis\": 90\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { validateCnh, CNH_NUMERIC_PATTERN, CNH_LENGTH } from './chunk-DL4TSGE5.js';
1
+ import { validateCnh, CNH_NUMERIC_PATTERN, CNH_LENGTH } from './chunk-JZOS2MO7.js';
2
2
 
3
3
  // src/core/cnh/mask.ts
4
4
  function applyCnhCanonicalFormat(canonical) {
@@ -18,5 +18,5 @@ function formatCnh(input) {
18
18
  }
19
19
 
20
20
  export { formatCnh };
21
- //# sourceMappingURL=chunk-3FDHWX2H.js.map
22
- //# sourceMappingURL=chunk-3FDHWX2H.js.map
21
+ //# sourceMappingURL=chunk-BTRWDUZF.js.map
22
+ //# sourceMappingURL=chunk-BTRWDUZF.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/cnh/mask.ts","../src/format/cnh.ts"],"names":[],"mappings":";;;AAQO,SAAS,wBAAwB,SAAA,EAA2B;AACjE,EAAA,IAAI,CAAC,mBAAA,CAAoB,IAAA,CAAK,SAAS,CAAA,EAAG;AACxC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,UAAU,CAAA,iBAAA,CAAmB,CAAA;AAAA,EACxE;AACA,EAAA,OAAO,SAAA;AACT;;;ACTO,SAAS,UAAU,KAAA,EAA6B;AACrD,EAAA,MAAM,MAAA,GAAS,YAAY,KAAK,CAAA;AAChC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,uBAAA,CAAwB,MAAA,CAAO,KAAK,CAAA,EAAE;AACtE","file":"chunk-3FDHWX2H.js","sourcesContent":["import { CNH_LENGTH, CNH_NUMERIC_PATTERN } from './constants.js';\n\n/**\n * Official system format — 11 contiguous digits (BR-CNH-005).\n * Unlike CPF, CONTRAN/SENATRAN systems do not use dot/dash decoration.\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf\n * @see https://www.gov.br/pt-br/servicos/validar-cnh\n */\nexport function applyCnhCanonicalFormat(canonical: string): string {\n if (!CNH_NUMERIC_PATTERN.test(canonical)) {\n throw new Error(`CNH must have exactly ${CNH_LENGTH} digits to format`);\n }\n return canonical;\n}\n","import { applyCnhCanonicalFormat } from '../core/cnh/mask.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatCnh(input: string): FormatResult {\n const result = validateCnh(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyCnhCanonicalFormat(result.value) };\n}\n"]}
1
+ {"version":3,"sources":["../src/core/cnh/mask.ts","../src/format/cnh.ts"],"names":[],"mappings":";;;AAQO,SAAS,wBAAwB,SAAA,EAA2B;AACjE,EAAA,IAAI,CAAC,mBAAA,CAAoB,IAAA,CAAK,SAAS,CAAA,EAAG;AACxC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,UAAU,CAAA,iBAAA,CAAmB,CAAA;AAAA,EACxE;AACA,EAAA,OAAO,SAAA;AACT;;;ACTO,SAAS,UAAU,KAAA,EAA6B;AACrD,EAAA,MAAM,MAAA,GAAS,YAAY,KAAK,CAAA;AAChC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,uBAAA,CAAwB,MAAA,CAAO,KAAK,CAAA,EAAE;AACtE","file":"chunk-BTRWDUZF.js","sourcesContent":["import { CNH_LENGTH, CNH_NUMERIC_PATTERN } from './constants.js';\n\n/**\n * Official system format — 11 contiguous digits (BR-CNH-005).\n * Unlike CPF, CONTRAN/SENATRAN systems do not use dot/dash decoration.\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf\n * @see https://www.gov.br/pt-br/servicos/validar-cnh\n */\nexport function applyCnhCanonicalFormat(canonical: string): string {\n if (!CNH_NUMERIC_PATTERN.test(canonical)) {\n throw new Error(`CNH must have exactly ${CNH_LENGTH} digits to format`);\n }\n return canonical;\n}\n","import { applyCnhCanonicalFormat } from '../core/cnh/mask.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatCnh(input: string): FormatResult {\n const result = validateCnh(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyCnhCanonicalFormat(result.value) };\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { faixa_metadata_default } from './chunk-RY2BSDOR.js';
2
- import { stripCep } from './chunk-YYHS5WQN.js';
2
+ import { stripCep } from './chunk-6BWOYNQD.js';
3
3
  import { brandCep } from './chunk-BVMY4IWB.js';
4
4
 
5
5
  // src/core/cep/constants.ts
@@ -147969,5 +147969,5 @@ function validateCep(input) {
147969
147969
  }
147970
147970
 
147971
147971
  export { CEP_FAIXA_CNEFE_BASE_URL, CEP_FAIXA_DATA_VERSION, CEP_FAIXA_GOLDEN_PREFIX_RJ, CEP_FAIXA_GOLDEN_PREFIX_SP, CEP_FAIXA_MAX_PREFIXES, CEP_FAIXA_MIN_PREFIXES, CEP_GOLDEN_PRIMARY, CEP_GOLDEN_PRIMARY_MASKED, CEP_GOLDEN_SECONDARY, CEP_MASK_PATTERN, CEP_OFFICIAL_SOURCE_URL, getCepFaixaInfo, getCepFaixas, isValidCep, validateCep };
147972
- //# sourceMappingURL=chunk-55IZCKNL.js.map
147973
- //# sourceMappingURL=chunk-55IZCKNL.js.map
147972
+ //# sourceMappingURL=chunk-C4E2AE2A.js.map
147973
+ //# sourceMappingURL=chunk-C4E2AE2A.js.map