@br-validators/core 1.9.0 → 1.10.0-data.2

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 (200) hide show
  1. package/README.md +57 -7
  2. package/dist/aeroportos.js +1 -1
  3. package/dist/anp-combustiveis.js +13523 -13795
  4. package/dist/anp-combustiveis.js.map +1 -1
  5. package/dist/bancos.js +3 -3
  6. package/dist/bancos.js.map +1 -1
  7. package/dist/batch.d.ts +24 -3
  8. package/dist/batch.js +16 -15
  9. package/dist/brcode.js +6 -6
  10. package/dist/cbo.js +1 -1
  11. package/dist/cep.js +6 -3
  12. package/dist/{chunk-S4WEXFHC.js → chunk-2COBLRJZ.js} +3 -3
  13. package/dist/{chunk-S4WEXFHC.js.map → chunk-2COBLRJZ.js.map} +1 -1
  14. package/dist/{chunk-W524B2G5.js → chunk-2ONUMGUO.js} +6 -6
  15. package/dist/{chunk-W524B2G5.js.map → chunk-2ONUMGUO.js.map} +1 -1
  16. package/dist/{chunk-F6LVFAJT.js → chunk-4NS47CJG.js} +3 -3
  17. package/dist/{chunk-F6LVFAJT.js.map → chunk-4NS47CJG.js.map} +1 -1
  18. package/dist/{chunk-GREFQOOJ.js → chunk-56LI2WFN.js} +6 -6
  19. package/dist/{chunk-GREFQOOJ.js.map → chunk-56LI2WFN.js.map} +1 -1
  20. package/dist/chunk-5V2TNYC7.js +3 -0
  21. package/dist/{chunk-KLPONHBL.js.map → chunk-5V2TNYC7.js.map} +1 -1
  22. package/dist/{chunk-62P6SKG3.js → chunk-5V7RWZMP.js} +23 -21
  23. package/dist/chunk-5V7RWZMP.js.map +1 -0
  24. package/dist/{chunk-YYHS5WQN.js → chunk-6BWOYNQD.js} +2 -2
  25. package/dist/{chunk-YYHS5WQN.js.map → chunk-6BWOYNQD.js.map} +1 -1
  26. package/dist/{chunk-DQPSNERX.js → chunk-6CGSM6BR.js} +12 -11
  27. package/dist/chunk-6CGSM6BR.js.map +1 -0
  28. package/dist/{chunk-5M4S6ZMM.js → chunk-6JPPWIE6.js} +6 -6
  29. package/dist/{chunk-5M4S6ZMM.js.map → chunk-6JPPWIE6.js.map} +1 -1
  30. package/dist/chunk-6LCZGDCZ.js +27862 -0
  31. package/dist/chunk-6LCZGDCZ.js.map +1 -0
  32. package/dist/{chunk-MSYTS5K7.js → chunk-6WBUKUHD.js} +3 -3
  33. package/dist/{chunk-MSYTS5K7.js.map → chunk-6WBUKUHD.js.map} +1 -1
  34. package/dist/{chunk-LBR6N2CQ.js → chunk-73SUS6JB.js} +6 -6
  35. package/dist/{chunk-LBR6N2CQ.js.map → chunk-73SUS6JB.js.map} +1 -1
  36. package/dist/{chunk-DS6MOO5K.js → chunk-7XVCTDJE.js} +6 -65
  37. package/dist/chunk-7XVCTDJE.js.map +1 -0
  38. package/dist/{chunk-4HQ4J2J5.js → chunk-A255RZZ7.js} +3 -3
  39. package/dist/{chunk-4HQ4J2J5.js.map → chunk-A255RZZ7.js.map} +1 -1
  40. package/dist/chunk-AOBSYTR2.js +31 -0
  41. package/dist/chunk-AOBSYTR2.js.map +1 -0
  42. package/dist/{chunk-3FDHWX2H.js → chunk-BTRWDUZF.js} +3 -3
  43. package/dist/{chunk-3FDHWX2H.js.map → chunk-BTRWDUZF.js.map} +1 -1
  44. package/dist/{chunk-55IZCKNL.js → chunk-C4E2AE2A.js} +3 -3
  45. package/dist/{chunk-55IZCKNL.js.map → chunk-C4E2AE2A.js.map} +1 -1
  46. package/dist/{chunk-4ORSIPZU.js → chunk-CHCND76E.js} +6 -6
  47. package/dist/{chunk-4ORSIPZU.js.map → chunk-CHCND76E.js.map} +1 -1
  48. package/dist/{chunk-W5LOXC7J.js → chunk-DQQNXXGO.js} +12 -3
  49. package/dist/chunk-DQQNXXGO.js.map +1 -0
  50. package/dist/{chunk-56ZN3TBH.js → chunk-DXKHCIMV.js} +3 -3
  51. package/dist/{chunk-56ZN3TBH.js.map → chunk-DXKHCIMV.js.map} +1 -1
  52. package/dist/{chunk-MOND6K5Z.js → chunk-E533RFGN.js} +6 -6
  53. package/dist/{chunk-MOND6K5Z.js.map → chunk-E533RFGN.js.map} +1 -1
  54. package/dist/{chunk-GXCW6FM7.js → chunk-EWTOIHM7.js} +6 -6
  55. package/dist/{chunk-GXCW6FM7.js.map → chunk-EWTOIHM7.js.map} +1 -1
  56. package/dist/chunk-FA5ZM5UA.js +63 -0
  57. package/dist/chunk-FA5ZM5UA.js.map +1 -0
  58. package/dist/{chunk-N2MDJI4B.js → chunk-FEPV2XB5.js} +3 -3
  59. package/dist/{chunk-N2MDJI4B.js.map → chunk-FEPV2XB5.js.map} +1 -1
  60. package/dist/{chunk-7HEMXLDS.js → chunk-GQRHLW5W.js} +3 -4
  61. package/dist/chunk-GQRHLW5W.js.map +1 -0
  62. package/dist/{chunk-WOIO7FLJ.js → chunk-H725FTFS.js} +6 -6
  63. package/dist/{chunk-WOIO7FLJ.js.map → chunk-H725FTFS.js.map} +1 -1
  64. package/dist/{chunk-ZL5RDZJM.js → chunk-HEPUV3XR.js} +3 -4
  65. package/dist/chunk-HEPUV3XR.js.map +1 -0
  66. package/dist/{chunk-UBIQFNIP.js → chunk-HIY6R6UA.js} +6 -6
  67. package/dist/{chunk-UBIQFNIP.js.map → chunk-HIY6R6UA.js.map} +1 -1
  68. package/dist/{chunk-FIZWWQ64.js → chunk-IZ5ZOZKI.js} +6 -6
  69. package/dist/{chunk-FIZWWQ64.js.map → chunk-IZ5ZOZKI.js.map} +1 -1
  70. package/dist/{chunk-56A6XUJP.js → chunk-JCVDLFPG.js} +6 -6
  71. package/dist/{chunk-56A6XUJP.js.map → chunk-JCVDLFPG.js.map} +1 -1
  72. package/dist/chunk-JUQMINSZ.js +52 -0
  73. package/dist/chunk-JUQMINSZ.js.map +1 -0
  74. package/dist/{chunk-DL4TSGE5.js → chunk-JZOS2MO7.js} +3 -3
  75. package/dist/{chunk-DL4TSGE5.js.map → chunk-JZOS2MO7.js.map} +1 -1
  76. package/dist/{chunk-2BNGYQFQ.js → chunk-KCRWHMDY.js} +3 -3
  77. package/dist/{chunk-2BNGYQFQ.js.map → chunk-KCRWHMDY.js.map} +1 -1
  78. package/dist/{chunk-UNBIJPJU.js → chunk-L3WG36Y4.js} +3 -3
  79. package/dist/{chunk-UNBIJPJU.js.map → chunk-L3WG36Y4.js.map} +1 -1
  80. package/dist/{chunk-S6ZNVXSM.js → chunk-LFZAE7Y2.js} +9 -9
  81. package/dist/{chunk-S6ZNVXSM.js.map → chunk-LFZAE7Y2.js.map} +1 -1
  82. package/dist/{chunk-NQIKXTMI.js → chunk-LKDZEPWZ.js} +3 -3
  83. package/dist/{chunk-NQIKXTMI.js.map → chunk-LKDZEPWZ.js.map} +1 -1
  84. package/dist/chunk-LLJSXMO2.js +32 -0
  85. package/dist/chunk-LLJSXMO2.js.map +1 -0
  86. package/dist/{chunk-SRVFQ34Q.js → chunk-LSMFX4JD.js} +6 -6
  87. package/dist/{chunk-SRVFQ34Q.js.map → chunk-LSMFX4JD.js.map} +1 -1
  88. package/dist/{chunk-2RZXK6C3.js → chunk-MGFDTECS.js} +13 -32
  89. package/dist/chunk-MGFDTECS.js.map +1 -0
  90. package/dist/{chunk-CIOSYWV4.js → chunk-MWDNHKK3.js} +3 -3
  91. package/dist/{chunk-CIOSYWV4.js.map → chunk-MWDNHKK3.js.map} +1 -1
  92. package/dist/{chunk-6F7G6Z5B.js → chunk-NVQX4ODB.js} +6 -6
  93. package/dist/{chunk-6F7G6Z5B.js.map → chunk-NVQX4ODB.js.map} +1 -1
  94. package/dist/{chunk-KSDAKRG5.js → chunk-OGVBMB7Z.js} +16 -11
  95. package/dist/chunk-OGVBMB7Z.js.map +1 -0
  96. package/dist/{chunk-5IYHOWQU.js → chunk-OTKEKB3W.js} +99 -13
  97. package/dist/chunk-OTKEKB3W.js.map +1 -0
  98. package/dist/{chunk-HZ4UGWFE.js → chunk-OZHEHUBV.js} +3 -3
  99. package/dist/{chunk-HZ4UGWFE.js.map → chunk-OZHEHUBV.js.map} +1 -1
  100. package/dist/{chunk-JNAZI3HU.js → chunk-PBZMBJEX.js} +12 -11
  101. package/dist/chunk-PBZMBJEX.js.map +1 -0
  102. package/dist/{chunk-SCBXZLZ5.js → chunk-PHXIWJFQ.js} +20 -15
  103. package/dist/{chunk-SCBXZLZ5.js.map → chunk-PHXIWJFQ.js.map} +1 -1
  104. package/dist/{chunk-KVJL4MTV.js → chunk-PRSHGHAS.js} +10 -9
  105. package/dist/chunk-PRSHGHAS.js.map +1 -0
  106. package/dist/{chunk-TMHKYUPU.js → chunk-R3R3OIH7.js} +6 -6
  107. package/dist/{chunk-TMHKYUPU.js.map → chunk-R3R3OIH7.js.map} +1 -1
  108. package/dist/{chunk-RKL64IOG.js → chunk-TO3DSIJY.js} +8 -8
  109. package/dist/{chunk-RKL64IOG.js.map → chunk-TO3DSIJY.js.map} +1 -1
  110. package/dist/{chunk-BDYNBRT7.js → chunk-UG2YICWH.js} +3 -3
  111. package/dist/{chunk-BDYNBRT7.js.map → chunk-UG2YICWH.js.map} +1 -1
  112. package/dist/{chunk-X5TJG22D.js → chunk-VHG4CIYB.js} +6 -6
  113. package/dist/{chunk-X5TJG22D.js.map → chunk-VHG4CIYB.js.map} +1 -1
  114. package/dist/{chunk-BLSDFC3C.js → chunk-XYNX7PUL.js} +22 -4
  115. package/dist/chunk-XYNX7PUL.js.map +1 -0
  116. package/dist/{chunk-N6CALNFU.js → chunk-YC4GZZJP.js} +3 -3
  117. package/dist/{chunk-N6CALNFU.js.map → chunk-YC4GZZJP.js.map} +1 -1
  118. package/dist/{chunk-MOMQLTSD.js → chunk-YFLJB247.js} +11 -11
  119. package/dist/{chunk-MOMQLTSD.js.map → chunk-YFLJB247.js.map} +1 -1
  120. package/dist/{chunk-IBXICIOY.js → chunk-YGFTNDAQ.js} +6 -6
  121. package/dist/{chunk-IBXICIOY.js.map → chunk-YGFTNDAQ.js.map} +1 -1
  122. package/dist/chunk-YQN6RNJN.js +30 -0
  123. package/dist/chunk-YQN6RNJN.js.map +1 -0
  124. package/dist/{chunk-GFRG6ZPY.js → chunk-ZKPOHCVZ.js} +6 -6
  125. package/dist/{chunk-GFRG6ZPY.js.map → chunk-ZKPOHCVZ.js.map} +1 -1
  126. package/dist/cnaes.js +1 -1
  127. package/dist/cnh.js +6 -3
  128. package/dist/cnpj-motivos.js +1 -1
  129. package/dist/cnpj.js +3 -3
  130. package/dist/compare.d.ts +2 -2
  131. package/dist/compare.js +18 -17
  132. package/dist/cpf.js +2 -3
  133. package/dist/csosn.d.ts +54 -0
  134. package/dist/csosn.js +96 -0
  135. package/dist/csosn.js.map +1 -0
  136. package/dist/data-catalog.js +43 -41
  137. package/dist/data-catalog.js.map +1 -1
  138. package/dist/detect.js +15 -14
  139. package/dist/diff.d.ts +2 -2
  140. package/dist/diff.js +18 -17
  141. package/dist/esocial.d.ts +29 -1
  142. package/dist/esocial.js +1720 -2
  143. package/dist/esocial.js.map +1 -1
  144. package/dist/generate.js +25 -24
  145. package/dist/ibge.js +2 -27860
  146. package/dist/ibge.js.map +1 -1
  147. package/dist/incoterms.js +1 -1
  148. package/dist/{index-CttohJuk.d.ts → index-CmpOAd8U.d.ts} +1 -1
  149. package/dist/index.d.ts +4 -4
  150. package/dist/index.js +41 -40
  151. package/dist/index.js.map +1 -1
  152. package/dist/iss-municipal.d.ts +71 -3
  153. package/dist/iss-municipal.js +45366 -235
  154. package/dist/iss-municipal.js.map +1 -1
  155. package/dist/mask.js +24 -23
  156. package/dist/moedas.js +1 -1
  157. package/dist/natureza-juridica.js +1 -1
  158. package/dist/nbs.js +1 -1
  159. package/dist/ncm.js +1 -1
  160. package/dist/paises-bacen.js +1 -1
  161. package/dist/{pix-B8_PfK2D.d.ts → pix-DhAb6Iho.d.ts} +3 -1
  162. package/dist/pix.d.ts +1 -1
  163. package/dist/pix.js +8 -7
  164. package/dist/placa.js +6 -3
  165. package/dist/pncp-reference.js +1 -1
  166. package/dist/portos.js +1 -1
  167. package/dist/ptax.d.ts +12 -4
  168. package/dist/ptax.js +8367 -252
  169. package/dist/ptax.js.map +1 -1
  170. package/dist/renavam.js +6 -3
  171. package/dist/sanitize.d.ts +1 -1
  172. package/dist/sanitize.js +16 -12
  173. package/dist/selic.js +17 -17
  174. package/dist/selic.js.map +1 -1
  175. package/dist/telefone.js +3 -3
  176. package/dist/titulo-eleitor.js +6 -3
  177. package/dist/transparencia-snapshots.js +2 -2
  178. package/dist/transparencia-snapshots.js.map +1 -1
  179. package/dist/tse-municipios.js +1 -1
  180. package/dist/{types-CTLx5zMu.d.ts → types-DLuN-sEJ.d.ts} +1 -1
  181. package/package.json +5 -1
  182. package/dist/chunk-2RZXK6C3.js.map +0 -1
  183. package/dist/chunk-5IYHOWQU.js.map +0 -1
  184. package/dist/chunk-62P6SKG3.js.map +0 -1
  185. package/dist/chunk-7HEMXLDS.js.map +0 -1
  186. package/dist/chunk-BLSDFC3C.js.map +0 -1
  187. package/dist/chunk-DQPSNERX.js.map +0 -1
  188. package/dist/chunk-DS6MOO5K.js.map +0 -1
  189. package/dist/chunk-JNAZI3HU.js.map +0 -1
  190. package/dist/chunk-KLPONHBL.js +0 -3
  191. package/dist/chunk-KSDAKRG5.js.map +0 -1
  192. package/dist/chunk-KVJL4MTV.js.map +0 -1
  193. package/dist/chunk-RUQDVHR7.js +0 -14
  194. package/dist/chunk-RUQDVHR7.js.map +0 -1
  195. package/dist/chunk-VBFKN3NR.js +0 -14
  196. package/dist/chunk-VBFKN3NR.js.map +0 -1
  197. package/dist/chunk-W5LOXC7J.js.map +0 -1
  198. package/dist/chunk-YUAMWVIU.js +0 -30
  199. package/dist/chunk-YUAMWVIU.js.map +0 -1
  200. package/dist/chunk-ZL5RDZJM.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { stripCnh } from './chunk-YYHS5WQN.js';
1
+ import { stripCnh } from './chunk-6BWOYNQD.js';
2
2
  import { weightedSum } from './chunk-OTZHMJYE.js';
3
3
  import { brandCnh } from './chunk-BVMY4IWB.js';
4
4
 
@@ -100,5 +100,5 @@ function validateCnh(input) {
100
100
  }
101
101
 
102
102
  export { CNH_BASE_LENGTH, CNH_DV1_WEIGHTS, CNH_DV2_WEIGHTS, CNH_GOLDEN_DISCOUNT_CASE, CNH_GOLDEN_PRIMARY, CNH_GOLDEN_PRIMARY_DECORATED_INPUT, CNH_GOLDEN_SECONDARY, CNH_LENGTH, CNH_NUMERIC_PATTERN, CNH_OFFICIAL_SOURCE_URL, CNH_SENATRAN_VALIDAR_URL, computeCnhCheckDigits, isValidCnh, validateCnh };
103
- //# sourceMappingURL=chunk-DL4TSGE5.js.map
104
- //# sourceMappingURL=chunk-DL4TSGE5.js.map
103
+ //# sourceMappingURL=chunk-JZOS2MO7.js.map
104
+ //# sourceMappingURL=chunk-JZOS2MO7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/cnh/constants.ts","../src/core/cnh/check-digits.ts","../src/core/cnh/index.ts"],"names":[],"mappings":"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","file":"chunk-DL4TSGE5.js","sourcesContent":["/**\n * CNH constants — Registro Nacional modulo 11 (CONTRAN / SENATRAN).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/Resolucao8862021.pdf\n * @see https://www.gov.br/pt-br/servicos/validar-cnh\n * @see https://siga0984.wordpress.com/2019/05/01/algoritmos-validacao-de-cnh/ — algorithm cross-check (AdvPL)\n * @see https://www.geravalida.com.br/validador-cnh — implementation cross-check\n * @see https://geradorbr.com/validador-de-cnh/ — implementation cross-check\n */\nexport const CNH_DV1_WEIGHTS = [9, 8, 7, 6, 5, 4, 3, 2, 1] as const;\nexport const CNH_DV2_WEIGHTS = [1, 2, 3, 4, 5, 6, 7, 8, 9] as const;\nexport const CNH_LENGTH = 11;\nexport const CNH_BASE_LENGTH = 9;\nexport const CNH_NUMERIC_PATTERN = /^\\d{11}$/;\n\n/** Golden primary — DV walkthrough: base `624729276` → DV `37`. */\nexport const CNH_GOLDEN_PRIMARY = '62472927637';\nexport const CNH_GOLDEN_SECONDARY = '69044271146';\nexport const CNH_GOLDEN_DISCOUNT_CASE = '00000001801';\n\n/** Non-official CPF-style decoration — accepted on input via strip, never emitted by format. */\nexport const CNH_GOLDEN_PRIMARY_DECORATED_INPUT = '624.729.276-37';\n\nexport const CNH_OFFICIAL_SOURCE_URL =\n 'https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf';\n\n/** SENATRAN online validation — requires plain 11-digit registration number. */\nexport const CNH_SENATRAN_VALIDAR_URL = 'https://www.gov.br/pt-br/servicos/validar-cnh';\n","/**\n * CNH check digits — modulo 11 with inter-DV discount (desconto).\n * DV1 and DV2 weighted sums are computed in parallel on the same 9 base digits.\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf\n * @see https://siga0984.wordpress.com/2019/05/01/algoritmos-validacao-de-cnh/ — algorithm cross-check (AdvPL)\n */\nimport { weightedSum } from '../cnpj/modulo11.js';\nimport { CNH_DV1_WEIGHTS, CNH_DV2_WEIGHTS } 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\nexport function computeCnhFirstCheckDigit(base: string): { dv: number; discount: number } {\n const remainder = weightedSum(digitValues(base), CNH_DV1_WEIGHTS) % 11;\n if (remainder >= 10) {\n return { dv: 0, discount: 2 };\n }\n return { dv: remainder, discount: 0 };\n}\n\nexport function computeCnhSecondCheckDigit(base: string, discount: number): number {\n let dv = weightedSum(digitValues(base), CNH_DV2_WEIGHTS) % 11;\n if (discount === 2) {\n if (dv - 2 < 0) {\n dv += 9;\n } else {\n dv -= 2;\n }\n }\n if (dv > 9) {\n dv = 0;\n }\n return dv;\n}\n\nexport function computeCnhCheckDigits(base: string): string {\n const { dv: dv1, discount } = computeCnhFirstCheckDigit(base);\n const dv2 = computeCnhSecondCheckDigit(base, discount);\n return `${String(dv1)}${String(dv2)}`;\n}\n","/**\n * CNH validation — Registro Nacional modulo 11 with inter-DV discount.\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf\n * @see https://www.gov.br/infraestrutura/pt-br/assuntos/transito/senatran\n */\nimport { stripCnh } from '../../strip/index.js';\nimport type { Cnh, ValidationResult } from '../../types/validation-result.js';\nimport { brandCnh } from '../../types/validation-result.js';\nimport { computeCnhCheckDigits } from './check-digits.js';\nimport { CNH_BASE_LENGTH, CNH_LENGTH } from './constants.js';\n\nexport {\n CNH_BASE_LENGTH,\n CNH_DV1_WEIGHTS,\n CNH_DV2_WEIGHTS,\n CNH_GOLDEN_DISCOUNT_CASE,\n CNH_GOLDEN_PRIMARY,\n CNH_GOLDEN_PRIMARY_DECORATED_INPUT,\n CNH_GOLDEN_SECONDARY,\n CNH_LENGTH,\n CNH_NUMERIC_PATTERN,\n CNH_OFFICIAL_SOURCE_URL,\n CNH_SENATRAN_VALIDAR_URL,\n} from './constants.js';\n\ntype FailedResult = Extract<ValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message };\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 isValidCnhChecksum(stripped: string): boolean {\n const base = stripped.slice(0, CNH_BASE_LENGTH);\n const expected = computeCnhCheckDigits(base);\n return stripped.slice(CNH_BASE_LENGTH) === expected;\n}\n\nfunction validateStructure(input: string, stripped: string): FailedResult | null {\n if (stripped.length === 0) {\n return failure('EMPTY_INPUT', 'CNH input is empty');\n }\n\n const withoutMask = input.replace(/[.\\s-]/g, '');\n if (/[^0-9]/.test(withoutMask)) {\n return failure('INVALID_CHARACTER', 'CNH contains invalid characters');\n }\n\n if (stripped.length !== CNH_LENGTH) {\n return failure('INVALID_LENGTH', `CNH must have ${CNH_LENGTH} digits after normalization`);\n }\n\n if (hasRepeatedDigits(stripped)) {\n return failure('KNOWN_INVALID_PATTERN', 'CNH with all identical digits is invalid');\n }\n\n return null;\n}\n\nexport function isValidCnh(input: string): boolean {\n return validateCnh(input).ok;\n}\n\nexport function validateCnh(input: string): ValidationResult<Cnh> {\n const stripped = stripCnh(input);\n const structural = validateStructure(input, stripped);\n if (structural) {\n return structural;\n }\n\n if (isValidCnhChecksum(stripped)) {\n return { ok: true, value: brandCnh(stripped), format: 'numeric' };\n }\n\n return failure('INVALID_CHECK_DIGIT', 'CNH check digits are invalid');\n}\n"]}
1
+ {"version":3,"sources":["../src/core/cnh/constants.ts","../src/core/cnh/check-digits.ts","../src/core/cnh/index.ts"],"names":[],"mappings":"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","file":"chunk-JZOS2MO7.js","sourcesContent":["/**\n * CNH constants — Registro Nacional modulo 11 (CONTRAN / SENATRAN).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/Resolucao8862021.pdf\n * @see https://www.gov.br/pt-br/servicos/validar-cnh\n * @see https://siga0984.wordpress.com/2019/05/01/algoritmos-validacao-de-cnh/ — algorithm cross-check (AdvPL)\n * @see https://www.geravalida.com.br/validador-cnh — implementation cross-check\n * @see https://geradorbr.com/validador-de-cnh/ — implementation cross-check\n */\nexport const CNH_DV1_WEIGHTS = [9, 8, 7, 6, 5, 4, 3, 2, 1] as const;\nexport const CNH_DV2_WEIGHTS = [1, 2, 3, 4, 5, 6, 7, 8, 9] as const;\nexport const CNH_LENGTH = 11;\nexport const CNH_BASE_LENGTH = 9;\nexport const CNH_NUMERIC_PATTERN = /^\\d{11}$/;\n\n/** Golden primary — DV walkthrough: base `624729276` → DV `37`. */\nexport const CNH_GOLDEN_PRIMARY = '62472927637';\nexport const CNH_GOLDEN_SECONDARY = '69044271146';\nexport const CNH_GOLDEN_DISCOUNT_CASE = '00000001801';\n\n/** Non-official CPF-style decoration — accepted on input via strip, never emitted by format. */\nexport const CNH_GOLDEN_PRIMARY_DECORATED_INPUT = '624.729.276-37';\n\nexport const CNH_OFFICIAL_SOURCE_URL =\n 'https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf';\n\n/** SENATRAN online validation — requires plain 11-digit registration number. */\nexport const CNH_SENATRAN_VALIDAR_URL = 'https://www.gov.br/pt-br/servicos/validar-cnh';\n","/**\n * CNH check digits — modulo 11 with inter-DV discount (desconto).\n * DV1 and DV2 weighted sums are computed in parallel on the same 9 base digits.\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf\n * @see https://siga0984.wordpress.com/2019/05/01/algoritmos-validacao-de-cnh/ — algorithm cross-check (AdvPL)\n */\nimport { weightedSum } from '../cnpj/modulo11.js';\nimport { CNH_DV1_WEIGHTS, CNH_DV2_WEIGHTS } 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\nexport function computeCnhFirstCheckDigit(base: string): { dv: number; discount: number } {\n const remainder = weightedSum(digitValues(base), CNH_DV1_WEIGHTS) % 11;\n if (remainder >= 10) {\n return { dv: 0, discount: 2 };\n }\n return { dv: remainder, discount: 0 };\n}\n\nexport function computeCnhSecondCheckDigit(base: string, discount: number): number {\n let dv = weightedSum(digitValues(base), CNH_DV2_WEIGHTS) % 11;\n if (discount === 2) {\n if (dv - 2 < 0) {\n dv += 9;\n } else {\n dv -= 2;\n }\n }\n if (dv > 9) {\n dv = 0;\n }\n return dv;\n}\n\nexport function computeCnhCheckDigits(base: string): string {\n const { dv: dv1, discount } = computeCnhFirstCheckDigit(base);\n const dv2 = computeCnhSecondCheckDigit(base, discount);\n return `${String(dv1)}${String(dv2)}`;\n}\n","/**\n * CNH validation — Registro Nacional modulo 11 with inter-DV discount.\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf\n * @see https://www.gov.br/infraestrutura/pt-br/assuntos/transito/senatran\n */\nimport { stripCnh } from '../../strip/index.js';\nimport type { Cnh, ValidationResult } from '../../types/validation-result.js';\nimport { brandCnh } from '../../types/validation-result.js';\nimport { computeCnhCheckDigits } from './check-digits.js';\nimport { CNH_BASE_LENGTH, CNH_LENGTH } from './constants.js';\n\nexport {\n CNH_BASE_LENGTH,\n CNH_DV1_WEIGHTS,\n CNH_DV2_WEIGHTS,\n CNH_GOLDEN_DISCOUNT_CASE,\n CNH_GOLDEN_PRIMARY,\n CNH_GOLDEN_PRIMARY_DECORATED_INPUT,\n CNH_GOLDEN_SECONDARY,\n CNH_LENGTH,\n CNH_NUMERIC_PATTERN,\n CNH_OFFICIAL_SOURCE_URL,\n CNH_SENATRAN_VALIDAR_URL,\n} from './constants.js';\n\ntype FailedResult = Extract<ValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message };\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 isValidCnhChecksum(stripped: string): boolean {\n const base = stripped.slice(0, CNH_BASE_LENGTH);\n const expected = computeCnhCheckDigits(base);\n return stripped.slice(CNH_BASE_LENGTH) === expected;\n}\n\nfunction validateStructure(input: string, stripped: string): FailedResult | null {\n if (stripped.length === 0) {\n return failure('EMPTY_INPUT', 'CNH input is empty');\n }\n\n const withoutMask = input.replace(/[.\\s-]/g, '');\n if (/[^0-9]/.test(withoutMask)) {\n return failure('INVALID_CHARACTER', 'CNH contains invalid characters');\n }\n\n if (stripped.length !== CNH_LENGTH) {\n return failure('INVALID_LENGTH', `CNH must have ${CNH_LENGTH} digits after normalization`);\n }\n\n if (hasRepeatedDigits(stripped)) {\n return failure('KNOWN_INVALID_PATTERN', 'CNH with all identical digits is invalid');\n }\n\n return null;\n}\n\nexport function isValidCnh(input: string): boolean {\n return validateCnh(input).ok;\n}\n\nexport function validateCnh(input: string): ValidationResult<Cnh> {\n const stripped = stripCnh(input);\n const structural = validateStructure(input, stripped);\n if (structural) {\n return structural;\n }\n\n if (isValidCnhChecksum(stripped)) {\n return { ok: true, value: brandCnh(stripped), format: 'numeric' };\n }\n\n return failure('INVALID_CHECK_DIGIT', 'CNH check digits are invalid');\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { validatePlaca } from './chunk-BDYNBRT7.js';
1
+ import { validatePlaca } from './chunk-UG2YICWH.js';
2
2
 
3
3
  // src/format/placa.ts
4
4
  function formatPlaca(input) {
@@ -10,5 +10,5 @@ function formatPlaca(input) {
10
10
  }
11
11
 
12
12
  export { formatPlaca };
13
- //# sourceMappingURL=chunk-2BNGYQFQ.js.map
14
- //# sourceMappingURL=chunk-2BNGYQFQ.js.map
13
+ //# sourceMappingURL=chunk-KCRWHMDY.js.map
14
+ //# sourceMappingURL=chunk-KCRWHMDY.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/format/placa.ts"],"names":[],"mappings":";;;AAGO,SAAS,YAAY,KAAA,EAA6B;AACvD,EAAA,MAAM,MAAA,GAAS,cAAc,KAAK,CAAA;AAClC,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,SAAA,EAAW,OAAO,KAAA,EAAM;AAC7C","file":"chunk-2BNGYQFQ.js","sourcesContent":["import { validatePlaca } from '../core/placa/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatPlaca(input: string): FormatResult {\n const result = validatePlaca(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: result.value };\n}\n"]}
1
+ {"version":3,"sources":["../src/format/placa.ts"],"names":[],"mappings":";;;AAGO,SAAS,YAAY,KAAA,EAA6B;AACvD,EAAA,MAAM,MAAA,GAAS,cAAc,KAAK,CAAA;AAClC,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,SAAA,EAAW,OAAO,KAAA,EAAM;AAC7C","file":"chunk-KCRWHMDY.js","sourcesContent":["import { validatePlaca } from '../core/placa/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatPlaca(input: string): FormatResult {\n const result = validatePlaca(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: result.value };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { validatePixKey } from './chunk-DS6MOO5K.js';
1
+ import { validatePixKey } from './chunk-7XVCTDJE.js';
2
2
  import { brandBrCodePayload } from './chunk-BVMY4IWB.js';
3
3
 
4
4
  // src/core/brcode/constants.ts
@@ -279,5 +279,5 @@ function validateBrCode(input) {
279
279
  }
280
280
 
281
281
  export { BRCODE_GOLDEN_COMPOSITE, BRCODE_GOLDEN_DYNAMIC_URL, BRCODE_GOLDEN_STATIC_CPF, BRCODE_GOLDEN_STATIC_EMAIL, BRCODE_GOLDEN_STATIC_EVP, BRCODE_OFFICIAL_SOURCE_URL, BRCODE_PIX_INITIATION_MANUAL_URL, buildStaticPixBrCode, computeCrc16Ccitt, findPixMerchantAccount, findTlvField, isValidBrCode, normalizeBrCodePayload, parseBrCode, parseBrCodePayload, parseTlvSequence, validateBrCode, verifyBrCodeCrc };
282
- //# sourceMappingURL=chunk-UNBIJPJU.js.map
283
- //# sourceMappingURL=chunk-UNBIJPJU.js.map
282
+ //# sourceMappingURL=chunk-L3WG36Y4.js.map
283
+ //# sourceMappingURL=chunk-L3WG36Y4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/brcode/constants.ts","../src/core/brcode/crc16.ts","../src/core/brcode/tlv.ts","../src/core/brcode/parse.ts","../src/core/brcode/build-static.ts","../src/core/brcode/index.ts"],"names":[],"mappings":"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","file":"chunk-UNBIJPJU.js","sourcesContent":["/** Bacen Manual BR Code — EMV-QRCPS-MPM TLV + CRC16-CCITT */\nexport const BRCODE_OFFICIAL_SOURCE_URL =\n 'https://www.bcb.gov.br/content/estabilidadefinanceira/spb_docs/ManualBRCode.pdf';\n\nexport const BRCODE_PIX_INITIATION_MANUAL_URL =\n 'https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf';\n\nexport const BRCODE_PAYLOAD_FORMAT_INDICATOR = '01';\n\nexport const BRCODE_PIX_GUI = 'br.gov.bcb.pix';\n\nexport const BRCODE_COUNTRY_CODE = 'BR';\n\nexport const BRCODE_CURRENCY_BRL = '986';\n\nexport const BRCODE_CRC_TAG = '63';\n\nexport const BRCODE_CRC_LENGTH = 4;\n\n/** Manual de Padrões PIX — static QR, EVP key (CRC 1D3D). */\nexport const BRCODE_GOLDEN_STATIC_EVP =\n '00020126580014br.gov.bcb.pix0136123e4567-e12b-12d1-a456-4266554400005204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***63041D3D';\n\n/** Manual de Padrões PIX — dynamic QR with amount (CRC 7309). */\nexport const BRCODE_GOLDEN_DYNAMIC_URL =\n '00020101021226730014br.gov.bcb.pix2551pix.example.com/v2/8b3da2f39a4140d1a91abd93113bd4415204000053039865406123.455802BR5913Fulano de Tal6008BRASILIA62190515RP12345678-201963047309';\n\n/** Manual BR Code — composite payload with PIX + other arranjos (CRC AD38). */\nexport const BRCODE_GOLDEN_COMPOSITE =\n '00020104141234567890123426580014BR.GOV.BCB.PIX0136123e4567-e12b-12d1-a456-42665544000027300012BR.COM.OUTRO011001234567895204000053039865406123.455802BR5917NOME DO RECEBEDOR6008BRASILIA61087007490062190515RP12345678-201980390012BR.COM.OUTRO01190123.ABCD.3456.WXYZ6304AD38';\n\n/** Golden CPF PIX key 12345678909 — CRC computed per manual algorithm. */\nexport const BRCODE_GOLDEN_STATIC_CPF =\n '00020126330014br.gov.bcb.pix0111123456789095204000053039865802BR5917NOME DO RECEBEDOR6009SAO PAULO62070503***6304258E';\n\n/** Golden email pix@bcb.gov.br — CRC computed per manual algorithm. */\nexport const BRCODE_GOLDEN_STATIC_EMAIL =\n '00020126360014br.gov.bcb.pix0114pix@bcb.gov.br5204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***6304A7E9';\n","import { BRCODE_CRC_LENGTH, BRCODE_CRC_TAG } from './constants.js';\n\n/** CRC16-CCITT-FALSE — polynomial 0x1021, initial 0xFFFF (Bacen Manual BR Code). */\nexport function computeCrc16Ccitt(payload: string): string {\n let crc = 0xffff;\n\n for (let i = 0; i < payload.length; i++) {\n crc ^= payload.charCodeAt(i) << 8;\n for (let bit = 0; bit < 8; bit++) {\n if ((crc & 0x8000) !== 0) {\n crc = ((crc << 1) ^ 0x1021) & 0xffff;\n } else {\n crc = (crc << 1) & 0xffff;\n }\n }\n }\n\n return crc.toString(16).toUpperCase().padStart(BRCODE_CRC_LENGTH, '0');\n}\n\nexport function verifyBrCodeCrc(payload: string): { ok: true } | { ok: false; message: string } {\n if (payload.length < BRCODE_CRC_LENGTH + 4) {\n return { ok: false, message: 'BR Code payload is too short for CRC validation' };\n }\n\n const providedCrc = payload.slice(-BRCODE_CRC_LENGTH);\n if (!/^[0-9A-Fa-f]{4}$/.test(providedCrc)) {\n return { ok: false, message: 'BR Code CRC must be 4 hexadecimal characters' };\n }\n\n const body = payload.slice(0, -BRCODE_CRC_LENGTH);\n if (!body.endsWith(`${BRCODE_CRC_TAG}${String(BRCODE_CRC_LENGTH).padStart(2, '0')}`)) {\n return { ok: false, message: 'BR Code payload must end with CRC tag 63 before checksum' };\n }\n\n const expected = computeCrc16Ccitt(body);\n if (providedCrc.toUpperCase() !== expected) {\n return { ok: false, message: 'BR Code CRC16-CCITT checksum is invalid' };\n }\n\n return { ok: true };\n}\n","export type TlvField = {\n id: string;\n value: string;\n};\n\nexport type TlvParseFailure = {\n ok: false;\n message: string;\n};\n\nexport type TlvParseSuccess = {\n ok: true;\n fields: TlvField[];\n};\n\nexport type TlvParseResult = TlvParseSuccess | TlvParseFailure;\n\nfunction tlvFailure(message: string): TlvParseFailure {\n return { ok: false, message };\n}\n\nexport function parseTlvSequence(data: string): TlvParseResult {\n const fields: TlvField[] = [];\n let offset = 0;\n\n while (offset < data.length) {\n if (data.length - offset < 4) {\n return tlvFailure('TLV sequence is incomplete');\n }\n\n const id = data.slice(offset, offset + 2);\n const lengthRaw = data.slice(offset + 2, offset + 4);\n const length = Number.parseInt(lengthRaw, 10);\n\n if (!/^\\d{2}$/.test(lengthRaw) || Number.isNaN(length)) {\n return tlvFailure(`TLV length is not numeric for id ${id}`);\n }\n\n offset += 4;\n\n if (data.length - offset < length) {\n return tlvFailure(`TLV value for id ${id} exceeds payload length`);\n }\n\n const value = data.slice(offset, offset + length);\n offset += length;\n fields.push({ id, value });\n }\n\n return { ok: true, fields };\n}\n\nexport function findTlvField(fields: TlvField[], id: string): string | undefined {\n return fields.find((field) => field.id === id)?.value;\n}\n\nexport function findPixMerchantAccount(\n fields: TlvField[],\n): { value: string; nestedFields: TlvField[] } | undefined {\n for (const field of fields) {\n if (field.id !== '26') {\n continue;\n }\n const nested = parseTlvSequence(field.value);\n if (!nested.ok) {\n continue;\n }\n const gui = findTlvField(nested.fields, '00');\n if (gui?.toLowerCase() === 'br.gov.bcb.pix') {\n return { value: field.value, nestedFields: nested.fields };\n }\n }\n return undefined;\n}\n","import { validatePixKey } from '../pix/index.js';\nimport type { PixKey, PixKeyType, ValidationErrorCode } from '../../types/validation-result.js';\nimport { BRCODE_COUNTRY_CODE, BRCODE_CRC_LENGTH, BRCODE_CRC_TAG, BRCODE_PAYLOAD_FORMAT_INDICATOR } from './constants.js';\nimport { verifyBrCodeCrc } from './crc16.js';\nimport { findPixMerchantAccount, findTlvField, parseTlvSequence, type TlvField } from './tlv.js';\n\nexport type BrCodeParsedFields = {\n merchantName: string;\n merchantCity: string;\n amount?: string;\n txid?: string;\n pixKey?: PixKey;\n pixKeyType?: PixKeyType;\n pixInitiationUrl?: string;\n};\n\nexport type BrCodeParseFailure = {\n ok: false;\n code: ValidationErrorCode;\n message: string;\n};\n\nexport type BrCodeParseSuccess = {\n ok: true;\n payload: string;\n fields: BrCodeParsedFields;\n};\n\nexport type BrCodeParseResult = BrCodeParseSuccess | BrCodeParseFailure;\n\nfunction failure(\n code: BrCodeParseFailure['code'],\n message: string,\n): BrCodeParseFailure {\n return { ok: false, code, message };\n}\n\nexport function normalizeBrCodePayload(input: string): string {\n return input.trim();\n}\n\nfunction extractPixAccount(\n nestedFields: TlvField[],\n): { ok: true; pixKey?: string; pixInitiationUrl?: string } | BrCodeParseFailure {\n const pixKey = findTlvField(nestedFields, '01');\n const pixInitiationUrl = findTlvField(nestedFields, '25');\n\n if (!pixKey && !pixInitiationUrl) {\n return failure('UNSUPPORTED_FORMAT', 'PIX merchant account must include key (01) or initiation URL (25)');\n }\n\n return { ok: true, pixKey, pixInitiationUrl };\n}\n\nfunction extractTxid(tag62: string | undefined): string | undefined {\n if (!tag62) {\n return undefined;\n }\n const nested = parseTlvSequence(tag62);\n if (!nested.ok) {\n return undefined;\n }\n return findTlvField(nested.fields, '05');\n}\n\nfunction parseFields(rootFields: TlvField[]): BrCodeParseSuccess | BrCodeParseFailure {\n const formatIndicator = findTlvField(rootFields, '00');\n if (formatIndicator !== BRCODE_PAYLOAD_FORMAT_INDICATOR) {\n return failure(\n 'UNSUPPORTED_FORMAT',\n `BR Code payload format indicator must be ${BRCODE_PAYLOAD_FORMAT_INDICATOR}`,\n );\n }\n\n const merchantAccount = findPixMerchantAccount(rootFields);\n if (!merchantAccount) {\n return failure('UNSUPPORTED_FORMAT', 'BR Code payload must include PIX merchant account (tag 26)');\n }\n\n const pixAccount = extractPixAccount(merchantAccount.nestedFields);\n if (!pixAccount.ok) {\n return pixAccount;\n }\n\n const countryCode = findTlvField(rootFields, '58');\n if (countryCode !== BRCODE_COUNTRY_CODE) {\n return failure('UNSUPPORTED_FORMAT', `BR Code country code must be ${BRCODE_COUNTRY_CODE}`);\n }\n\n const merchantName = findTlvField(rootFields, '59');\n const merchantCity = findTlvField(rootFields, '60');\n if (!merchantName || !merchantCity) {\n return failure('UNSUPPORTED_FORMAT', 'BR Code payload must include merchant name (59) and city (60)');\n }\n\n const amount = findTlvField(rootFields, '54');\n const txid = extractTxid(findTlvField(rootFields, '62'));\n\n let pixKeyType: PixKeyType | undefined;\n let pixKey: PixKey | undefined;\n\n if (pixAccount.pixKey) {\n const keyResult = validatePixKey(pixAccount.pixKey);\n if (!keyResult.ok) {\n return failure(keyResult.code, keyResult.message);\n }\n pixKey = keyResult.value;\n pixKeyType = keyResult.keyType;\n }\n\n return {\n ok: true,\n payload: '',\n fields: {\n merchantName,\n merchantCity,\n ...(amount ? { amount } : {}),\n ...(txid ? { txid } : {}),\n ...(pixKey ? { pixKey, pixKeyType } : {}),\n ...(pixAccount.pixInitiationUrl ? { pixInitiationUrl: pixAccount.pixInitiationUrl } : {}),\n },\n };\n}\n\nexport function parseBrCodePayload(input: string): BrCodeParseResult {\n const normalized = normalizeBrCodePayload(input);\n\n if (normalized.length === 0) {\n return failure('EMPTY_INPUT', 'BR Code payload is empty');\n }\n\n if (!/^[\\x20-\\x7E]+$/.test(normalized)) {\n return failure('INVALID_CHARACTER', 'BR Code payload contains invalid characters');\n }\n\n const crc = verifyBrCodeCrc(normalized);\n if (!crc.ok) {\n return failure('INVALID_CHECK_DIGIT', crc.message);\n }\n\n const withoutCrc = normalized.slice(0, -BRCODE_CRC_LENGTH);\n const crcTagHeader = `${BRCODE_CRC_TAG}${String(BRCODE_CRC_LENGTH).padStart(2, '0')}`;\n const tlv = parseTlvSequence(withoutCrc.slice(0, -crcTagHeader.length));\n if (!tlv.ok) {\n return failure('UNSUPPORTED_FORMAT', tlv.message);\n }\n\n const parsed = parseFields(tlv.fields);\n if (!parsed.ok) {\n return parsed;\n }\n\n return {\n ok: true,\n payload: normalized,\n fields: parsed.fields,\n };\n}\n","/**\n * Static PIX BR Code builder — EMV TLV + CRC16-CCITT (Bacen Manual BR Code).\n * @see BRCODE_OFFICIAL_SOURCE_URL\n * @see BRCODE_PIX_INITIATION_MANUAL_URL\n */\nimport {\n BRCODE_COUNTRY_CODE,\n BRCODE_CURRENCY_BRL,\n BRCODE_PAYLOAD_FORMAT_INDICATOR,\n BRCODE_PIX_GUI,\n} from './constants.js';\nimport { computeCrc16Ccitt } from './crc16.js';\n\nexport type StaticPixBrCodeInput = {\n pixKey: string;\n merchantName: string;\n merchantCity: string;\n /** Omit for permanent static QR (payer sets amount). Decimal with up to 2 fraction digits. */\n amount?: string;\n /** Defaults to `***` per Manual de Padrões PIX static QR. */\n txid?: string;\n};\n\nfunction encodeTlv(tag: string, value: string): string {\n return `${tag}${value.length.toString().padStart(2, '0')}${value}`;\n}\n\nfunction normalizeAmount(raw: string): string | undefined {\n const trimmed = raw.trim();\n if (trimmed.length === 0) {\n return undefined;\n }\n const normalized = trimmed.replace(',', '.');\n if (!/^\\d+(\\.\\d{1,2})?$/.test(normalized)) {\n return undefined;\n }\n return normalized;\n}\n\n/** Build static PIX BR Code EMV payload. Validate output with `validateBrCode`. */\nexport function buildStaticPixBrCode(input: StaticPixBrCodeInput): string {\n const key = input.pixKey.trim();\n const merchantName = input.merchantName.trim().slice(0, 25);\n const merchantCity = input.merchantCity.trim().slice(0, 15).toUpperCase();\n const txid = (input.txid?.trim() || '***').slice(0, 25);\n const amount = input.amount ? normalizeAmount(input.amount) : undefined;\n\n const pixGui = encodeTlv('00', BRCODE_PIX_GUI);\n const pixKeyField = encodeTlv('01', key);\n const merchantAccount = encodeTlv('26', `${pixGui}${pixKeyField}`);\n\n let payload = '';\n payload += encodeTlv('00', BRCODE_PAYLOAD_FORMAT_INDICATOR);\n payload += merchantAccount;\n payload += encodeTlv('52', '0000');\n payload += encodeTlv('53', BRCODE_CURRENCY_BRL);\n if (amount) {\n payload += encodeTlv('54', amount);\n }\n payload += encodeTlv('58', BRCODE_COUNTRY_CODE);\n payload += encodeTlv('59', merchantName);\n payload += encodeTlv('60', merchantCity);\n payload += encodeTlv('62', encodeTlv('05', txid));\n payload += '6304';\n\n return payload + computeCrc16Ccitt(payload);\n}\n","/**\n * BR Code (PIX QR) payload parsing — EMV TLV + CRC16-CCITT.\n * @see https://www.bcb.gov.br/content/estabilidadefinanceira/spb_docs/ManualBRCode.pdf\n */\nimport type { BrCodeValidationResult } from '../../types/validation-result.js';\nimport { brandBrCodePayload } from '../../types/validation-result.js';\nimport { parseBrCodePayload } from './parse.js';\n\nexport {\n BRCODE_COUNTRY_CODE,\n BRCODE_CURRENCY_BRL,\n BRCODE_GOLDEN_COMPOSITE,\n BRCODE_GOLDEN_DYNAMIC_URL,\n BRCODE_GOLDEN_STATIC_CPF,\n BRCODE_GOLDEN_STATIC_EMAIL,\n BRCODE_GOLDEN_STATIC_EVP,\n BRCODE_OFFICIAL_SOURCE_URL,\n BRCODE_PAYLOAD_FORMAT_INDICATOR,\n BRCODE_PIX_GUI,\n BRCODE_PIX_INITIATION_MANUAL_URL,\n} from './constants.js';\nexport { computeCrc16Ccitt, verifyBrCodeCrc } from './crc16.js';\nexport { buildStaticPixBrCode } from './build-static.js';\nexport type { StaticPixBrCodeInput } from './build-static.js';\nexport { normalizeBrCodePayload, parseBrCodePayload } from './parse.js';\nexport { findPixMerchantAccount, findTlvField, parseTlvSequence } from './tlv.js';\nexport type { TlvField, TlvParseResult } from './tlv.js';\nexport type { BrCodeParseResult, BrCodeParsedFields } from './parse.js';\n\nexport function isValidBrCode(input: string): boolean {\n return validateBrCode(input).ok;\n}\n\nexport function parseBrCode(input: string): BrCodeValidationResult {\n const parsed = parseBrCodePayload(input);\n if (!parsed.ok) {\n return { ok: false, code: parsed.code, message: parsed.message };\n }\n\n const { fields, payload } = parsed;\n\n return {\n ok: true,\n value: brandBrCodePayload(payload),\n format: 'brcode',\n merchantName: fields.merchantName,\n merchantCity: fields.merchantCity,\n ...(fields.amount ? { amount: fields.amount } : {}),\n ...(fields.txid ? { txid: fields.txid } : {}),\n ...(fields.pixKey && fields.pixKeyType\n ? { pixKey: fields.pixKey, pixKeyType: fields.pixKeyType }\n : {}),\n ...(fields.pixInitiationUrl ? { pixInitiationUrl: fields.pixInitiationUrl } : {}),\n };\n}\n\nexport function validateBrCode(input: string): BrCodeValidationResult {\n const parsed = parseBrCode(input);\n if (!parsed.ok) {\n return parsed;\n }\n\n if (!parsed.pixKey || !parsed.pixKeyType) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'BR Code validation requires a static PIX key (merchant account subfield 01)',\n };\n }\n\n return parsed;\n}\n"]}
1
+ {"version":3,"sources":["../src/core/brcode/constants.ts","../src/core/brcode/crc16.ts","../src/core/brcode/tlv.ts","../src/core/brcode/parse.ts","../src/core/brcode/build-static.ts","../src/core/brcode/index.ts"],"names":[],"mappings":"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","file":"chunk-L3WG36Y4.js","sourcesContent":["/** Bacen Manual BR Code — EMV-QRCPS-MPM TLV + CRC16-CCITT */\nexport const BRCODE_OFFICIAL_SOURCE_URL =\n 'https://www.bcb.gov.br/content/estabilidadefinanceira/spb_docs/ManualBRCode.pdf';\n\nexport const BRCODE_PIX_INITIATION_MANUAL_URL =\n 'https://www.bcb.gov.br/content/estabilidadefinanceira/pix/Regulamento_Pix/II_ManualdePadroesparaIniciacaodoPix.pdf';\n\nexport const BRCODE_PAYLOAD_FORMAT_INDICATOR = '01';\n\nexport const BRCODE_PIX_GUI = 'br.gov.bcb.pix';\n\nexport const BRCODE_COUNTRY_CODE = 'BR';\n\nexport const BRCODE_CURRENCY_BRL = '986';\n\nexport const BRCODE_CRC_TAG = '63';\n\nexport const BRCODE_CRC_LENGTH = 4;\n\n/** Manual de Padrões PIX — static QR, EVP key (CRC 1D3D). */\nexport const BRCODE_GOLDEN_STATIC_EVP =\n '00020126580014br.gov.bcb.pix0136123e4567-e12b-12d1-a456-4266554400005204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***63041D3D';\n\n/** Manual de Padrões PIX — dynamic QR with amount (CRC 7309). */\nexport const BRCODE_GOLDEN_DYNAMIC_URL =\n '00020101021226730014br.gov.bcb.pix2551pix.example.com/v2/8b3da2f39a4140d1a91abd93113bd4415204000053039865406123.455802BR5913Fulano de Tal6008BRASILIA62190515RP12345678-201963047309';\n\n/** Manual BR Code — composite payload with PIX + other arranjos (CRC AD38). */\nexport const BRCODE_GOLDEN_COMPOSITE =\n '00020104141234567890123426580014BR.GOV.BCB.PIX0136123e4567-e12b-12d1-a456-42665544000027300012BR.COM.OUTRO011001234567895204000053039865406123.455802BR5917NOME DO RECEBEDOR6008BRASILIA61087007490062190515RP12345678-201980390012BR.COM.OUTRO01190123.ABCD.3456.WXYZ6304AD38';\n\n/** Golden CPF PIX key 12345678909 — CRC computed per manual algorithm. */\nexport const BRCODE_GOLDEN_STATIC_CPF =\n '00020126330014br.gov.bcb.pix0111123456789095204000053039865802BR5917NOME DO RECEBEDOR6009SAO PAULO62070503***6304258E';\n\n/** Golden email pix@bcb.gov.br — CRC computed per manual algorithm. */\nexport const BRCODE_GOLDEN_STATIC_EMAIL =\n '00020126360014br.gov.bcb.pix0114pix@bcb.gov.br5204000053039865802BR5913Fulano de Tal6008BRASILIA62070503***6304A7E9';\n","import { BRCODE_CRC_LENGTH, BRCODE_CRC_TAG } from './constants.js';\n\n/** CRC16-CCITT-FALSE — polynomial 0x1021, initial 0xFFFF (Bacen Manual BR Code). */\nexport function computeCrc16Ccitt(payload: string): string {\n let crc = 0xffff;\n\n for (let i = 0; i < payload.length; i++) {\n crc ^= payload.charCodeAt(i) << 8;\n for (let bit = 0; bit < 8; bit++) {\n if ((crc & 0x8000) !== 0) {\n crc = ((crc << 1) ^ 0x1021) & 0xffff;\n } else {\n crc = (crc << 1) & 0xffff;\n }\n }\n }\n\n return crc.toString(16).toUpperCase().padStart(BRCODE_CRC_LENGTH, '0');\n}\n\nexport function verifyBrCodeCrc(payload: string): { ok: true } | { ok: false; message: string } {\n if (payload.length < BRCODE_CRC_LENGTH + 4) {\n return { ok: false, message: 'BR Code payload is too short for CRC validation' };\n }\n\n const providedCrc = payload.slice(-BRCODE_CRC_LENGTH);\n if (!/^[0-9A-Fa-f]{4}$/.test(providedCrc)) {\n return { ok: false, message: 'BR Code CRC must be 4 hexadecimal characters' };\n }\n\n const body = payload.slice(0, -BRCODE_CRC_LENGTH);\n if (!body.endsWith(`${BRCODE_CRC_TAG}${String(BRCODE_CRC_LENGTH).padStart(2, '0')}`)) {\n return { ok: false, message: 'BR Code payload must end with CRC tag 63 before checksum' };\n }\n\n const expected = computeCrc16Ccitt(body);\n if (providedCrc.toUpperCase() !== expected) {\n return { ok: false, message: 'BR Code CRC16-CCITT checksum is invalid' };\n }\n\n return { ok: true };\n}\n","export type TlvField = {\n id: string;\n value: string;\n};\n\nexport type TlvParseFailure = {\n ok: false;\n message: string;\n};\n\nexport type TlvParseSuccess = {\n ok: true;\n fields: TlvField[];\n};\n\nexport type TlvParseResult = TlvParseSuccess | TlvParseFailure;\n\nfunction tlvFailure(message: string): TlvParseFailure {\n return { ok: false, message };\n}\n\nexport function parseTlvSequence(data: string): TlvParseResult {\n const fields: TlvField[] = [];\n let offset = 0;\n\n while (offset < data.length) {\n if (data.length - offset < 4) {\n return tlvFailure('TLV sequence is incomplete');\n }\n\n const id = data.slice(offset, offset + 2);\n const lengthRaw = data.slice(offset + 2, offset + 4);\n const length = Number.parseInt(lengthRaw, 10);\n\n if (!/^\\d{2}$/.test(lengthRaw) || Number.isNaN(length)) {\n return tlvFailure(`TLV length is not numeric for id ${id}`);\n }\n\n offset += 4;\n\n if (data.length - offset < length) {\n return tlvFailure(`TLV value for id ${id} exceeds payload length`);\n }\n\n const value = data.slice(offset, offset + length);\n offset += length;\n fields.push({ id, value });\n }\n\n return { ok: true, fields };\n}\n\nexport function findTlvField(fields: TlvField[], id: string): string | undefined {\n return fields.find((field) => field.id === id)?.value;\n}\n\nexport function findPixMerchantAccount(\n fields: TlvField[],\n): { value: string; nestedFields: TlvField[] } | undefined {\n for (const field of fields) {\n if (field.id !== '26') {\n continue;\n }\n const nested = parseTlvSequence(field.value);\n if (!nested.ok) {\n continue;\n }\n const gui = findTlvField(nested.fields, '00');\n if (gui?.toLowerCase() === 'br.gov.bcb.pix') {\n return { value: field.value, nestedFields: nested.fields };\n }\n }\n return undefined;\n}\n","import { validatePixKey } from '../pix/index.js';\nimport type { PixKey, PixKeyType, ValidationErrorCode } from '../../types/validation-result.js';\nimport { BRCODE_COUNTRY_CODE, BRCODE_CRC_LENGTH, BRCODE_CRC_TAG, BRCODE_PAYLOAD_FORMAT_INDICATOR } from './constants.js';\nimport { verifyBrCodeCrc } from './crc16.js';\nimport { findPixMerchantAccount, findTlvField, parseTlvSequence, type TlvField } from './tlv.js';\n\nexport type BrCodeParsedFields = {\n merchantName: string;\n merchantCity: string;\n amount?: string;\n txid?: string;\n pixKey?: PixKey;\n pixKeyType?: PixKeyType;\n pixInitiationUrl?: string;\n};\n\nexport type BrCodeParseFailure = {\n ok: false;\n code: ValidationErrorCode;\n message: string;\n};\n\nexport type BrCodeParseSuccess = {\n ok: true;\n payload: string;\n fields: BrCodeParsedFields;\n};\n\nexport type BrCodeParseResult = BrCodeParseSuccess | BrCodeParseFailure;\n\nfunction failure(\n code: BrCodeParseFailure['code'],\n message: string,\n): BrCodeParseFailure {\n return { ok: false, code, message };\n}\n\nexport function normalizeBrCodePayload(input: string): string {\n return input.trim();\n}\n\nfunction extractPixAccount(\n nestedFields: TlvField[],\n): { ok: true; pixKey?: string; pixInitiationUrl?: string } | BrCodeParseFailure {\n const pixKey = findTlvField(nestedFields, '01');\n const pixInitiationUrl = findTlvField(nestedFields, '25');\n\n if (!pixKey && !pixInitiationUrl) {\n return failure('UNSUPPORTED_FORMAT', 'PIX merchant account must include key (01) or initiation URL (25)');\n }\n\n return { ok: true, pixKey, pixInitiationUrl };\n}\n\nfunction extractTxid(tag62: string | undefined): string | undefined {\n if (!tag62) {\n return undefined;\n }\n const nested = parseTlvSequence(tag62);\n if (!nested.ok) {\n return undefined;\n }\n return findTlvField(nested.fields, '05');\n}\n\nfunction parseFields(rootFields: TlvField[]): BrCodeParseSuccess | BrCodeParseFailure {\n const formatIndicator = findTlvField(rootFields, '00');\n if (formatIndicator !== BRCODE_PAYLOAD_FORMAT_INDICATOR) {\n return failure(\n 'UNSUPPORTED_FORMAT',\n `BR Code payload format indicator must be ${BRCODE_PAYLOAD_FORMAT_INDICATOR}`,\n );\n }\n\n const merchantAccount = findPixMerchantAccount(rootFields);\n if (!merchantAccount) {\n return failure('UNSUPPORTED_FORMAT', 'BR Code payload must include PIX merchant account (tag 26)');\n }\n\n const pixAccount = extractPixAccount(merchantAccount.nestedFields);\n if (!pixAccount.ok) {\n return pixAccount;\n }\n\n const countryCode = findTlvField(rootFields, '58');\n if (countryCode !== BRCODE_COUNTRY_CODE) {\n return failure('UNSUPPORTED_FORMAT', `BR Code country code must be ${BRCODE_COUNTRY_CODE}`);\n }\n\n const merchantName = findTlvField(rootFields, '59');\n const merchantCity = findTlvField(rootFields, '60');\n if (!merchantName || !merchantCity) {\n return failure('UNSUPPORTED_FORMAT', 'BR Code payload must include merchant name (59) and city (60)');\n }\n\n const amount = findTlvField(rootFields, '54');\n const txid = extractTxid(findTlvField(rootFields, '62'));\n\n let pixKeyType: PixKeyType | undefined;\n let pixKey: PixKey | undefined;\n\n if (pixAccount.pixKey) {\n const keyResult = validatePixKey(pixAccount.pixKey);\n if (!keyResult.ok) {\n return failure(keyResult.code, keyResult.message);\n }\n pixKey = keyResult.value;\n pixKeyType = keyResult.keyType;\n }\n\n return {\n ok: true,\n payload: '',\n fields: {\n merchantName,\n merchantCity,\n ...(amount ? { amount } : {}),\n ...(txid ? { txid } : {}),\n ...(pixKey ? { pixKey, pixKeyType } : {}),\n ...(pixAccount.pixInitiationUrl ? { pixInitiationUrl: pixAccount.pixInitiationUrl } : {}),\n },\n };\n}\n\nexport function parseBrCodePayload(input: string): BrCodeParseResult {\n const normalized = normalizeBrCodePayload(input);\n\n if (normalized.length === 0) {\n return failure('EMPTY_INPUT', 'BR Code payload is empty');\n }\n\n if (!/^[\\x20-\\x7E]+$/.test(normalized)) {\n return failure('INVALID_CHARACTER', 'BR Code payload contains invalid characters');\n }\n\n const crc = verifyBrCodeCrc(normalized);\n if (!crc.ok) {\n return failure('INVALID_CHECK_DIGIT', crc.message);\n }\n\n const withoutCrc = normalized.slice(0, -BRCODE_CRC_LENGTH);\n const crcTagHeader = `${BRCODE_CRC_TAG}${String(BRCODE_CRC_LENGTH).padStart(2, '0')}`;\n const tlv = parseTlvSequence(withoutCrc.slice(0, -crcTagHeader.length));\n if (!tlv.ok) {\n return failure('UNSUPPORTED_FORMAT', tlv.message);\n }\n\n const parsed = parseFields(tlv.fields);\n if (!parsed.ok) {\n return parsed;\n }\n\n return {\n ok: true,\n payload: normalized,\n fields: parsed.fields,\n };\n}\n","/**\n * Static PIX BR Code builder — EMV TLV + CRC16-CCITT (Bacen Manual BR Code).\n * @see BRCODE_OFFICIAL_SOURCE_URL\n * @see BRCODE_PIX_INITIATION_MANUAL_URL\n */\nimport {\n BRCODE_COUNTRY_CODE,\n BRCODE_CURRENCY_BRL,\n BRCODE_PAYLOAD_FORMAT_INDICATOR,\n BRCODE_PIX_GUI,\n} from './constants.js';\nimport { computeCrc16Ccitt } from './crc16.js';\n\nexport type StaticPixBrCodeInput = {\n pixKey: string;\n merchantName: string;\n merchantCity: string;\n /** Omit for permanent static QR (payer sets amount). Decimal with up to 2 fraction digits. */\n amount?: string;\n /** Defaults to `***` per Manual de Padrões PIX static QR. */\n txid?: string;\n};\n\nfunction encodeTlv(tag: string, value: string): string {\n return `${tag}${value.length.toString().padStart(2, '0')}${value}`;\n}\n\nfunction normalizeAmount(raw: string): string | undefined {\n const trimmed = raw.trim();\n if (trimmed.length === 0) {\n return undefined;\n }\n const normalized = trimmed.replace(',', '.');\n if (!/^\\d+(\\.\\d{1,2})?$/.test(normalized)) {\n return undefined;\n }\n return normalized;\n}\n\n/** Build static PIX BR Code EMV payload. Validate output with `validateBrCode`. */\nexport function buildStaticPixBrCode(input: StaticPixBrCodeInput): string {\n const key = input.pixKey.trim();\n const merchantName = input.merchantName.trim().slice(0, 25);\n const merchantCity = input.merchantCity.trim().slice(0, 15).toUpperCase();\n const txid = (input.txid?.trim() || '***').slice(0, 25);\n const amount = input.amount ? normalizeAmount(input.amount) : undefined;\n\n const pixGui = encodeTlv('00', BRCODE_PIX_GUI);\n const pixKeyField = encodeTlv('01', key);\n const merchantAccount = encodeTlv('26', `${pixGui}${pixKeyField}`);\n\n let payload = '';\n payload += encodeTlv('00', BRCODE_PAYLOAD_FORMAT_INDICATOR);\n payload += merchantAccount;\n payload += encodeTlv('52', '0000');\n payload += encodeTlv('53', BRCODE_CURRENCY_BRL);\n if (amount) {\n payload += encodeTlv('54', amount);\n }\n payload += encodeTlv('58', BRCODE_COUNTRY_CODE);\n payload += encodeTlv('59', merchantName);\n payload += encodeTlv('60', merchantCity);\n payload += encodeTlv('62', encodeTlv('05', txid));\n payload += '6304';\n\n return payload + computeCrc16Ccitt(payload);\n}\n","/**\n * BR Code (PIX QR) payload parsing — EMV TLV + CRC16-CCITT.\n * @see https://www.bcb.gov.br/content/estabilidadefinanceira/spb_docs/ManualBRCode.pdf\n */\nimport type { BrCodeValidationResult } from '../../types/validation-result.js';\nimport { brandBrCodePayload } from '../../types/validation-result.js';\nimport { parseBrCodePayload } from './parse.js';\n\nexport {\n BRCODE_COUNTRY_CODE,\n BRCODE_CURRENCY_BRL,\n BRCODE_GOLDEN_COMPOSITE,\n BRCODE_GOLDEN_DYNAMIC_URL,\n BRCODE_GOLDEN_STATIC_CPF,\n BRCODE_GOLDEN_STATIC_EMAIL,\n BRCODE_GOLDEN_STATIC_EVP,\n BRCODE_OFFICIAL_SOURCE_URL,\n BRCODE_PAYLOAD_FORMAT_INDICATOR,\n BRCODE_PIX_GUI,\n BRCODE_PIX_INITIATION_MANUAL_URL,\n} from './constants.js';\nexport { computeCrc16Ccitt, verifyBrCodeCrc } from './crc16.js';\nexport { buildStaticPixBrCode } from './build-static.js';\nexport type { StaticPixBrCodeInput } from './build-static.js';\nexport { normalizeBrCodePayload, parseBrCodePayload } from './parse.js';\nexport { findPixMerchantAccount, findTlvField, parseTlvSequence } from './tlv.js';\nexport type { TlvField, TlvParseResult } from './tlv.js';\nexport type { BrCodeParseResult, BrCodeParsedFields } from './parse.js';\n\nexport function isValidBrCode(input: string): boolean {\n return validateBrCode(input).ok;\n}\n\nexport function parseBrCode(input: string): BrCodeValidationResult {\n const parsed = parseBrCodePayload(input);\n if (!parsed.ok) {\n return { ok: false, code: parsed.code, message: parsed.message };\n }\n\n const { fields, payload } = parsed;\n\n return {\n ok: true,\n value: brandBrCodePayload(payload),\n format: 'brcode',\n merchantName: fields.merchantName,\n merchantCity: fields.merchantCity,\n ...(fields.amount ? { amount: fields.amount } : {}),\n ...(fields.txid ? { txid: fields.txid } : {}),\n ...(fields.pixKey && fields.pixKeyType\n ? { pixKey: fields.pixKey, pixKeyType: fields.pixKeyType }\n : {}),\n ...(fields.pixInitiationUrl ? { pixInitiationUrl: fields.pixInitiationUrl } : {}),\n };\n}\n\nexport function validateBrCode(input: string): BrCodeValidationResult {\n const parsed = parseBrCode(input);\n if (!parsed.ok) {\n return parsed;\n }\n\n if (!parsed.pixKey || !parsed.pixKeyType) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'BR Code validation requires a static PIX key (merchant account subfield 01)',\n };\n }\n\n return parsed;\n}\n"]}
@@ -5,14 +5,14 @@ var metadata_default = {
5
5
  fonte: "ANP \u2014 resumo_semanal_lpc (municipal averages)",
6
6
  endpoints: [
7
7
  "https://www.gov.br/anp/pt-br/assuntos/precos-e-defesa-da-concorrencia/precos/levantamento-de-precos-de-combustiveis-ultimas-semanas-pesquisadas",
8
- "https://www.gov.br/anp/pt-br/assuntos/precos-e-defesa-da-concorrencia/precos/arquivos-lpc/2026/resumo_semanal_lpc_2026-06-14_2026-06-20.xlsx"
8
+ "https://www.gov.br/anp/pt-br/assuntos/precos-e-defesa-da-concorrencia/precos/arquivos-lpc/2026/resumo_semanal_lpc_2026-06-21_2026-06-27.xlsx"
9
9
  ],
10
- capturadoEm: "2026-06-26",
11
- atualizadoEm: "2026-06-26T13:38:49.394Z",
10
+ capturadoEm: "2026-06-30",
11
+ atualizadoEm: "2026-06-30T07:23:12.474Z",
12
12
  contagens: {
13
13
  semanas: 1,
14
- precosMedios: 2357,
15
- municipios: 386,
14
+ precosMedios: 2340,
15
+ municipios: 384,
16
16
  produtos: 7,
17
17
  ufs: 27
18
18
  },
@@ -20,16 +20,16 @@ var metadata_default = {
20
20
  adicionados: 0,
21
21
  removidos: 0,
22
22
  alterados: 0,
23
- comparadoCom: "2026-06-26"
23
+ comparadoCom: "2026-06-29"
24
24
  },
25
25
  verificacao: {
26
26
  agendamento: "semanal",
27
27
  workflow: "data-refresh-bot.yml",
28
- ultimaExecucao: "2026-06-26T13:38:49.394Z"
28
+ ultimaExecucao: "2026-06-30T07:23:12.474Z"
29
29
  },
30
30
  documentacao: "docs/OFFICIAL-SOURCES.md#anp-combustiveis"
31
31
  };
32
32
 
33
33
  export { metadata_default };
34
- //# sourceMappingURL=chunk-S6ZNVXSM.js.map
35
- //# sourceMappingURL=chunk-S6ZNVXSM.js.map
34
+ //# sourceMappingURL=chunk-LFZAE7Y2.js.map
35
+ //# sourceMappingURL=chunk-LFZAE7Y2.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/anp-combustiveis/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,kBAAA;AAAA,EACN,IAAA,EAAQ,+DAAA;AAAA,EACR,KAAA,EAAS,oDAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX,iJAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,OAAA,EAAW,CAAA;AAAA,IACX,YAAA,EAAgB,IAAA;AAAA,IAChB,UAAA,EAAc,GAAA;AAAA,IACd,QAAA,EAAY,CAAA;AAAA,IACZ,GAAA,EAAO;AAAA,GACT;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,CAAA;AAAA,IACf,SAAA,EAAa,CAAA;AAAA,IACb,SAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAgB;AAAA,GAClB;AAAA,EACA,WAAA,EAAe;AAAA,IACb,WAAA,EAAe,SAAA;AAAA,IACf,QAAA,EAAY,sBAAA;AAAA,IACZ,cAAA,EAAkB;AAAA,GACpB;AAAA,EACA,YAAA,EAAgB;AAClB","file":"chunk-S6ZNVXSM.js","sourcesContent":["{\n \"id\": \"anp-combustiveis\",\n \"nome\": \"ANP — Levantamento de Preços de Combustíveis (LPC)\",\n \"fonte\": \"ANP — resumo_semanal_lpc (municipal averages)\",\n \"endpoints\": [\n \"https://www.gov.br/anp/pt-br/assuntos/precos-e-defesa-da-concorrencia/precos/levantamento-de-precos-de-combustiveis-ultimas-semanas-pesquisadas\",\n \"https://www.gov.br/anp/pt-br/assuntos/precos-e-defesa-da-concorrencia/precos/arquivos-lpc/2026/resumo_semanal_lpc_2026-06-14_2026-06-20.xlsx\"\n ],\n \"capturadoEm\": \"2026-06-26\",\n \"atualizadoEm\": \"2026-06-26T13:38:49.394Z\",\n \"contagens\": {\n \"semanas\": 1,\n \"precosMedios\": 2357,\n \"municipios\": 386,\n \"produtos\": 7,\n \"ufs\": 27\n },\n \"alteracoes\": {\n \"adicionados\": 0,\n \"removidos\": 0,\n \"alterados\": 0,\n \"comparadoCom\": \"2026-06-26\"\n },\n \"verificacao\": {\n \"agendamento\": \"semanal\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-26T13:38:49.394Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#anp-combustiveis\"\n}\n"]}
1
+ {"version":3,"sources":["../src/anp-combustiveis/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,kBAAA;AAAA,EACN,IAAA,EAAQ,+DAAA;AAAA,EACR,KAAA,EAAS,oDAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX,iJAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,OAAA,EAAW,CAAA;AAAA,IACX,YAAA,EAAgB,IAAA;AAAA,IAChB,UAAA,EAAc,GAAA;AAAA,IACd,QAAA,EAAY,CAAA;AAAA,IACZ,GAAA,EAAO;AAAA,GACT;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,CAAA;AAAA,IACf,SAAA,EAAa,CAAA;AAAA,IACb,SAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAgB;AAAA,GAClB;AAAA,EACA,WAAA,EAAe;AAAA,IACb,WAAA,EAAe,SAAA;AAAA,IACf,QAAA,EAAY,sBAAA;AAAA,IACZ,cAAA,EAAkB;AAAA,GACpB;AAAA,EACA,YAAA,EAAgB;AAClB","file":"chunk-LFZAE7Y2.js","sourcesContent":["{\n \"id\": \"anp-combustiveis\",\n \"nome\": \"ANP — Levantamento de Preços de Combustíveis (LPC)\",\n \"fonte\": \"ANP — resumo_semanal_lpc (municipal averages)\",\n \"endpoints\": [\n \"https://www.gov.br/anp/pt-br/assuntos/precos-e-defesa-da-concorrencia/precos/levantamento-de-precos-de-combustiveis-ultimas-semanas-pesquisadas\",\n \"https://www.gov.br/anp/pt-br/assuntos/precos-e-defesa-da-concorrencia/precos/arquivos-lpc/2026/resumo_semanal_lpc_2026-06-21_2026-06-27.xlsx\"\n ],\n \"capturadoEm\": \"2026-06-30\",\n \"atualizadoEm\": \"2026-06-30T07:23:12.474Z\",\n \"contagens\": {\n \"semanas\": 1,\n \"precosMedios\": 2340,\n \"municipios\": 384,\n \"produtos\": 7,\n \"ufs\": 27\n },\n \"alteracoes\": {\n \"adicionados\": 0,\n \"removidos\": 0,\n \"alterados\": 0,\n \"comparadoCom\": \"2026-06-29\"\n },\n \"verificacao\": {\n \"agendamento\": \"semanal\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-30T07:23:12.474Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#anp-combustiveis\"\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { validatePixKey, applyPixEvpKeyMask, applyPixEmailKeyMask, applyPixPhoneKeyMask, applyPixCnpjKeyMask, applyPixCpfKeyMask } from './chunk-DS6MOO5K.js';
1
+ import { validatePixKey, applyPixEvpKeyMask, applyPixEmailKeyMask, applyPixPhoneKeyMask, applyPixCnpjKeyMask, applyPixCpfKeyMask } from './chunk-7XVCTDJE.js';
2
2
 
3
3
  // src/format/pix.ts
4
4
  function applyPixMask(keyType, value) {
@@ -24,5 +24,5 @@ function formatPixKey(input, options) {
24
24
  }
25
25
 
26
26
  export { formatPixKey };
27
- //# sourceMappingURL=chunk-NQIKXTMI.js.map
28
- //# sourceMappingURL=chunk-NQIKXTMI.js.map
27
+ //# sourceMappingURL=chunk-LKDZEPWZ.js.map
28
+ //# sourceMappingURL=chunk-LKDZEPWZ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/format/pix.ts"],"names":[],"mappings":";;;AAgBA,SAAS,YAAA,CAAa,SAAqB,KAAA,EAAuB;AAChE,EAAA,QAAQ,OAAA;AAAS,IACf,KAAK,KAAA;AACH,MAAA,OAAO,mBAAmB,KAAK,CAAA;AAAA,IACjC,KAAK,MAAA;AACH,MAAA,OAAO,oBAAoB,KAAK,CAAA;AAAA,IAClC,KAAK,OAAA;AACH,MAAA,OAAO,qBAAqB,KAAK,CAAA;AAAA,IACnC,KAAK,OAAA;AACH,MAAA,OAAO,qBAAqB,KAAK,CAAA;AAAA,IACnC,KAAK,KAAA;AACH,MAAA,OAAO,mBAAmB,KAAK,CAAA;AAAA;AAErC;AAEO,SAAS,YAAA,CAAa,OAAe,OAAA,EAA+C;AACzF,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,KAAA,EAAO,OAAO,CAAA;AAC5C,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;AAEA,EAAA,OAAO,EAAE,IAAI,IAAA,EAAM,SAAA,EAAW,aAAa,MAAA,CAAO,OAAA,EAAS,MAAA,CAAO,KAAK,CAAA,EAAE;AAC3E","file":"chunk-NQIKXTMI.js","sourcesContent":["/**\n * Format decorator — strip → validate → apply official mask (UC-003).\n * @see docs/use-cases/UC-003-format-document.md\n * @see docs/VALIDATION-RULES.md BR-GLOBAL-002\n */\nimport type { ValidatePixKeyOptions } from '../core/pix/index.js';\nimport { validatePixKey } from '../core/pix/index.js';\nimport {\n applyPixCnpjKeyMask,\n applyPixCpfKeyMask,\n applyPixEmailKeyMask,\n applyPixEvpKeyMask,\n applyPixPhoneKeyMask,\n} from '../core/pix/mask.js';\nimport type { FormatResult, PixKeyType } from '../types/validation-result.js';\n\nfunction applyPixMask(keyType: PixKeyType, value: string): string {\n switch (keyType) {\n case 'cpf':\n return applyPixCpfKeyMask(value);\n case 'cnpj':\n return applyPixCnpjKeyMask(value);\n case 'phone':\n return applyPixPhoneKeyMask(value);\n case 'email':\n return applyPixEmailKeyMask(value);\n case 'evp':\n return applyPixEvpKeyMask(value);\n }\n}\n\nexport function formatPixKey(input: string, options?: ValidatePixKeyOptions): FormatResult {\n const result = validatePixKey(input, options);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n\n return { ok: true, formatted: applyPixMask(result.keyType, result.value) };\n}\n"]}
1
+ {"version":3,"sources":["../src/format/pix.ts"],"names":[],"mappings":";;;AAgBA,SAAS,YAAA,CAAa,SAAqB,KAAA,EAAuB;AAChE,EAAA,QAAQ,OAAA;AAAS,IACf,KAAK,KAAA;AACH,MAAA,OAAO,mBAAmB,KAAK,CAAA;AAAA,IACjC,KAAK,MAAA;AACH,MAAA,OAAO,oBAAoB,KAAK,CAAA;AAAA,IAClC,KAAK,OAAA;AACH,MAAA,OAAO,qBAAqB,KAAK,CAAA;AAAA,IACnC,KAAK,OAAA;AACH,MAAA,OAAO,qBAAqB,KAAK,CAAA;AAAA,IACnC,KAAK,KAAA;AACH,MAAA,OAAO,mBAAmB,KAAK,CAAA;AAAA;AAErC;AAEO,SAAS,YAAA,CAAa,OAAe,OAAA,EAA+C;AACzF,EAAA,MAAM,MAAA,GAAS,cAAA,CAAe,KAAA,EAAO,OAAO,CAAA;AAC5C,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;AAEA,EAAA,OAAO,EAAE,IAAI,IAAA,EAAM,SAAA,EAAW,aAAa,MAAA,CAAO,OAAA,EAAS,MAAA,CAAO,KAAK,CAAA,EAAE;AAC3E","file":"chunk-LKDZEPWZ.js","sourcesContent":["/**\n * Format decorator — strip → validate → apply official mask (UC-003).\n * @see docs/use-cases/UC-003-format-document.md\n * @see docs/VALIDATION-RULES.md BR-GLOBAL-002\n */\nimport type { ValidatePixKeyOptions } from '../core/pix/index.js';\nimport { validatePixKey } from '../core/pix/index.js';\nimport {\n applyPixCnpjKeyMask,\n applyPixCpfKeyMask,\n applyPixEmailKeyMask,\n applyPixEvpKeyMask,\n applyPixPhoneKeyMask,\n} from '../core/pix/mask.js';\nimport type { FormatResult, PixKeyType } from '../types/validation-result.js';\n\nfunction applyPixMask(keyType: PixKeyType, value: string): string {\n switch (keyType) {\n case 'cpf':\n return applyPixCpfKeyMask(value);\n case 'cnpj':\n return applyPixCnpjKeyMask(value);\n case 'phone':\n return applyPixPhoneKeyMask(value);\n case 'email':\n return applyPixEmailKeyMask(value);\n case 'evp':\n return applyPixEvpKeyMask(value);\n }\n}\n\nexport function formatPixKey(input: string, options?: ValidatePixKeyOptions): FormatResult {\n const result = validatePixKey(input, options);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n\n return { ok: true, formatted: applyPixMask(result.keyType, result.value) };\n}\n"]}
@@ -0,0 +1,32 @@
1
+ // src/core/cnpj/constants.ts
2
+ var CNPJ_LENGTH = 14;
3
+ var CNPJ_BASE_LENGTH = 12;
4
+ var CNPJ_DV1_WEIGHTS = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
5
+ var CNPJ_DV2_WEIGHTS = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
6
+ var CNPJ_ALPHANUMERIC_PATTERN = /^[A-Z0-9]{12}[0-9]{2}$/;
7
+ var CNPJ_NUMERIC_PATTERN = /^[0-9]{14}$/;
8
+ var CNPJ_OFFICIAL_SOURCE_URL = "https://www.gov.br/receitafederal/pt-br/centrais-de-conteudo/publicacoes/perguntas-e-respostas/cnpj/cnpj-alfanumerico.pdf";
9
+ var CNPJ_GOLDEN_ALPHANUMERIC = "12ABC34501DE35";
10
+ var CNPJ_GOLDEN_NUMERIC = "11222333000181";
11
+ var CNPJ_GOLDEN_NUMERIC_MASKED = "11.222.333/0001-81";
12
+ var CNPJ_GOLDEN_ALPHANUMERIC_MASKED = "12.ABC.345/01DE-35";
13
+ var CNPJ_MASK_PATTERN = /^(.{2})(.{3})(.{3})(.{4})(.{2})$/;
14
+
15
+ // src/core/cnpj/detect.ts
16
+ function detectCnpjFormat(stripped) {
17
+ const upper = stripped.toUpperCase();
18
+ if (CNPJ_NUMERIC_PATTERN.test(upper)) {
19
+ return "numeric";
20
+ }
21
+ if (CNPJ_ALPHANUMERIC_PATTERN.test(upper)) {
22
+ return "alphanumeric";
23
+ }
24
+ return "unknown";
25
+ }
26
+ function containsLetter(value) {
27
+ return /[A-Za-z]/.test(value);
28
+ }
29
+
30
+ export { CNPJ_ALPHANUMERIC_PATTERN, CNPJ_BASE_LENGTH, CNPJ_DV1_WEIGHTS, CNPJ_DV2_WEIGHTS, CNPJ_GOLDEN_ALPHANUMERIC, CNPJ_GOLDEN_ALPHANUMERIC_MASKED, CNPJ_GOLDEN_NUMERIC, CNPJ_GOLDEN_NUMERIC_MASKED, CNPJ_LENGTH, CNPJ_MASK_PATTERN, CNPJ_NUMERIC_PATTERN, CNPJ_OFFICIAL_SOURCE_URL, containsLetter, detectCnpjFormat };
31
+ //# sourceMappingURL=chunk-LLJSXMO2.js.map
32
+ //# sourceMappingURL=chunk-LLJSXMO2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/cnpj/constants.ts","../src/core/cnpj/detect.ts"],"names":[],"mappings":";AAIO,IAAM,WAAA,GAAc;AACpB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,gBAAA,GAAmB,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC;AAC5D,IAAM,gBAAA,GAAmB,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC;AAE/D,IAAM,yBAAA,GAA4B;AAClC,IAAM,oBAAA,GAAuB;AAE7B,IAAM,wBAAA,GACX;AAGK,IAAM,wBAAA,GAA2B;AAGjC,IAAM,mBAAA,GAAsB;AAC5B,IAAM,0BAAA,GAA6B;AACnC,IAAM,+BAAA,GAAkC;AAExC,IAAM,iBAAA,GAAoB;;;ACrB1B,SAAS,iBAAiB,QAAA,EAA8C;AAC7E,EAAA,MAAM,KAAA,GAAQ,SAAS,WAAA,EAAY;AACnC,EAAA,IAAI,oBAAA,CAAqB,IAAA,CAAK,KAAK,CAAA,EAAG;AACpC,IAAA,OAAO,SAAA;AAAA,EACT;AACA,EAAA,IAAI,yBAAA,CAA0B,IAAA,CAAK,KAAK,CAAA,EAAG;AACzC,IAAA,OAAO,cAAA;AAAA,EACT;AACA,EAAA,OAAO,SAAA;AACT;AAEO,SAAS,eAAe,KAAA,EAAwB;AACrD,EAAA,OAAO,UAAA,CAAW,KAAK,KAAK,CAAA;AAC9B","file":"chunk-LLJSXMO2.js","sourcesContent":["/**\n * CNPJ constants — modulo 11 weights from RFB FAQ Q14.\n * @see https://www.gov.br/receitafederal/pt-br/centrais-de-conteudo/publicacoes/perguntas-e-respostas/cnpj/cnpj-alfanumerico.pdf\n */\nexport const CNPJ_LENGTH = 14;\nexport const CNPJ_BASE_LENGTH = 12;\n\nexport const CNPJ_DV1_WEIGHTS = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] as const;\nexport const CNPJ_DV2_WEIGHTS = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] as const;\n\nexport const CNPJ_ALPHANUMERIC_PATTERN = /^[A-Z0-9]{12}[0-9]{2}$/;\nexport const CNPJ_NUMERIC_PATTERN = /^[0-9]{14}$/;\n\nexport const CNPJ_OFFICIAL_SOURCE_URL =\n 'https://www.gov.br/receitafederal/pt-br/centrais-de-conteudo/publicacoes/perguntas-e-respostas/cnpj/cnpj-alfanumerico.pdf';\n\n/** RFB Q14 golden vector */\nexport const CNPJ_GOLDEN_ALPHANUMERIC = '12ABC34501DE35';\n\n/** Valid numeric CNPJ for regression tests (modulo 11) */\nexport const CNPJ_GOLDEN_NUMERIC = '11222333000181';\nexport const CNPJ_GOLDEN_NUMERIC_MASKED = '11.222.333/0001-81';\nexport const CNPJ_GOLDEN_ALPHANUMERIC_MASKED = '12.ABC.345/01DE-35';\n\nexport const CNPJ_MASK_PATTERN = /^(.{2})(.{3})(.{3})(.{4})(.{2})$/;\n","import { CNPJ_ALPHANUMERIC_PATTERN, CNPJ_NUMERIC_PATTERN } from './constants.js';\nimport type { DocumentFormat } from '../../types/validation-result.js';\n\nexport function detectCnpjFormat(stripped: string): DocumentFormat | 'unknown' {\n const upper = stripped.toUpperCase();\n if (CNPJ_NUMERIC_PATTERN.test(upper)) {\n return 'numeric';\n }\n if (CNPJ_ALPHANUMERIC_PATTERN.test(upper)) {\n return 'alphanumeric';\n }\n return 'unknown';\n}\n\nexport function containsLetter(value: string): boolean {\n return /[A-Za-z]/.test(value);\n}\n"]}
@@ -6,8 +6,8 @@ var metadata_default = {
6
6
  endpoints: [
7
7
  "https://www.gov.br/nfse/pt-br/biblioteca/documentacao-tecnica/documentacao-atual/anexo_b-nbs2-lista_servico_nacional-snnfse.xlsx/@@download/file/ANEXO_B-NBS2-LISTA_SERVICO_NACIONAL-SNNFSe.xlsx"
8
8
  ],
9
- capturadoEm: "2026-06-26",
10
- atualizadoEm: "2026-06-26T13:29:43.864Z",
9
+ capturadoEm: "2026-06-30",
10
+ atualizadoEm: "2026-06-30T07:14:06.686Z",
11
11
  contagens: {
12
12
  nbs: 917
13
13
  },
@@ -15,16 +15,16 @@ var metadata_default = {
15
15
  adicionados: 0,
16
16
  removidos: 0,
17
17
  alterados: 0,
18
- comparadoCom: "2026-06-26"
18
+ comparadoCom: "2026-06-29"
19
19
  },
20
20
  verificacao: {
21
21
  agendamento: "diario",
22
22
  workflow: "data-refresh-bot.yml",
23
- ultimaExecucao: "2026-06-26T13:29:43.864Z"
23
+ ultimaExecucao: "2026-06-30T07:14:06.686Z"
24
24
  },
25
25
  documentacao: "docs/OFFICIAL-SOURCES.md#nbs"
26
26
  };
27
27
 
28
28
  export { metadata_default };
29
- //# sourceMappingURL=chunk-SRVFQ34Q.js.map
30
- //# sourceMappingURL=chunk-SRVFQ34Q.js.map
29
+ //# sourceMappingURL=chunk-LSMFX4JD.js.map
30
+ //# sourceMappingURL=chunk-LSMFX4JD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/nbs/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,KAAA;AAAA,EACN,IAAA,EAAQ,UAAA;AAAA,EACR,KAAA,EAAS,6DAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,GAAA,EAAO;AAAA,GACT;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,CAAA;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-SRVFQ34Q.js","sourcesContent":["{\n \"id\": \"nbs\",\n \"nome\": \"NFSe NBS\",\n \"fonte\": \"NFSe Nacional — Anexo B NBS2 Lista Serviço Nacional\",\n \"endpoints\": [\n \"https://www.gov.br/nfse/pt-br/biblioteca/documentacao-tecnica/documentacao-atual/anexo_b-nbs2-lista_servico_nacional-snnfse.xlsx/@@download/file/ANEXO_B-NBS2-LISTA_SERVICO_NACIONAL-SNNFSe.xlsx\"\n ],\n \"capturadoEm\": \"2026-06-26\",\n \"atualizadoEm\": \"2026-06-26T13:29:43.864Z\",\n \"contagens\": {\n \"nbs\": 917\n },\n \"alteracoes\": {\n \"adicionados\": 0,\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-26T13:29:43.864Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#nbs\"\n}\n"]}
1
+ {"version":3,"sources":["../src/nbs/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,KAAA;AAAA,EACN,IAAA,EAAQ,UAAA;AAAA,EACR,KAAA,EAAS,6DAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,GAAA,EAAO;AAAA,GACT;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,CAAA;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-LSMFX4JD.js","sourcesContent":["{\n \"id\": \"nbs\",\n \"nome\": \"NFSe NBS\",\n \"fonte\": \"NFSe Nacional — Anexo B NBS2 Lista Serviço Nacional\",\n \"endpoints\": [\n \"https://www.gov.br/nfse/pt-br/biblioteca/documentacao-tecnica/documentacao-atual/anexo_b-nbs2-lista_servico_nacional-snnfse.xlsx/@@download/file/ANEXO_B-NBS2-LISTA_SERVICO_NACIONAL-SNNFSe.xlsx\"\n ],\n \"capturadoEm\": \"2026-06-30\",\n \"atualizadoEm\": \"2026-06-30T07:14:06.686Z\",\n \"contagens\": {\n \"nbs\": 917\n },\n \"alteracoes\": {\n \"adicionados\": 0,\n \"removidos\": 0,\n \"alterados\": 0,\n \"comparadoCom\": \"2026-06-29\"\n },\n \"verificacao\": {\n \"agendamento\": \"diario\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-30T07:14:06.686Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#nbs\"\n}\n"]}
@@ -1,21 +1,8 @@
1
+ import { CNPJ_BASE_LENGTH, CNPJ_DV1_WEIGHTS, CNPJ_DV2_WEIGHTS, CNPJ_NUMERIC_PATTERN, containsLetter, CNPJ_MASK_PATTERN, CNPJ_LENGTH, CNPJ_ALPHANUMERIC_PATTERN, detectCnpjFormat } from './chunk-LLJSXMO2.js';
1
2
  import { stripCnpj } from './chunk-EB3G4IG6.js';
2
3
  import { computeCheckDigit } from './chunk-OTZHMJYE.js';
3
4
  import { brandCnpj } from './chunk-BVMY4IWB.js';
4
5
 
5
- // src/core/cnpj/constants.ts
6
- var CNPJ_LENGTH = 14;
7
- var CNPJ_BASE_LENGTH = 12;
8
- var CNPJ_DV1_WEIGHTS = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
9
- var CNPJ_DV2_WEIGHTS = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
10
- var CNPJ_ALPHANUMERIC_PATTERN = /^[A-Z0-9]{12}[0-9]{2}$/;
11
- var CNPJ_NUMERIC_PATTERN = /^[0-9]{14}$/;
12
- var CNPJ_OFFICIAL_SOURCE_URL = "https://www.gov.br/receitafederal/pt-br/centrais-de-conteudo/publicacoes/perguntas-e-respostas/cnpj/cnpj-alfanumerico.pdf";
13
- var CNPJ_GOLDEN_ALPHANUMERIC = "12ABC34501DE35";
14
- var CNPJ_GOLDEN_NUMERIC = "11222333000181";
15
- var CNPJ_GOLDEN_NUMERIC_MASKED = "11.222.333/0001-81";
16
- var CNPJ_GOLDEN_ALPHANUMERIC_MASKED = "12.ABC.345/01DE-35";
17
- var CNPJ_MASK_PATTERN = /^(.{2})(.{3})(.{3})(.{4})(.{2})$/;
18
-
19
6
  // src/core/cnpj/ascii-value.ts
20
7
  function cnpjCharValue(char) {
21
8
  return char.charCodeAt(0) - 48;
@@ -50,21 +37,6 @@ function isValidCnpjAlphanumeric(input) {
50
37
  return canonical.slice(CNPJ_BASE_LENGTH) === dv1Expected + dv2Expected;
51
38
  }
52
39
 
53
- // src/core/cnpj/detect.ts
54
- function detectCnpjFormat(stripped) {
55
- const upper = stripped.toUpperCase();
56
- if (CNPJ_NUMERIC_PATTERN.test(upper)) {
57
- return "numeric";
58
- }
59
- if (CNPJ_ALPHANUMERIC_PATTERN.test(upper)) {
60
- return "alphanumeric";
61
- }
62
- return "unknown";
63
- }
64
- function containsLetter(value) {
65
- return /[A-Za-z]/.test(value);
66
- }
67
-
68
40
  // src/core/cnpj/numeric.ts
69
41
  function digitValue(char) {
70
42
  return Number(char);
@@ -142,6 +114,15 @@ function validateCnpj(input) {
142
114
  return failure("INVALID_CHECK_DIGIT", "CNPJ check digits are invalid");
143
115
  }
144
116
 
145
- export { CNPJ_BASE_LENGTH, CNPJ_DV1_WEIGHTS, CNPJ_DV2_WEIGHTS, CNPJ_GOLDEN_ALPHANUMERIC, CNPJ_GOLDEN_ALPHANUMERIC_MASKED, CNPJ_GOLDEN_NUMERIC, CNPJ_GOLDEN_NUMERIC_MASKED, CNPJ_LENGTH, CNPJ_MASK_PATTERN, CNPJ_OFFICIAL_SOURCE_URL, cnpjCharValue, detectCnpjFormat, isValidCnpj, isValidCnpjAlphanumeric, isValidCnpjNumeric, validateCnpj };
146
- //# sourceMappingURL=chunk-2RZXK6C3.js.map
147
- //# sourceMappingURL=chunk-2RZXK6C3.js.map
117
+ // src/core/cnpj/mask.ts
118
+ function applyCnpjMask(canonical) {
119
+ const match = CNPJ_MASK_PATTERN.exec(canonical);
120
+ if (!match) {
121
+ throw new Error("CNPJ must have exactly 14 characters to apply mask");
122
+ }
123
+ return `${match[1]}.${match[2]}.${match[3]}/${match[4]}-${match[5]}`;
124
+ }
125
+
126
+ export { applyCnpjMask, cnpjCharValue, isValidCnpj, isValidCnpjAlphanumeric, isValidCnpjNumeric, validateCnpj };
127
+ //# sourceMappingURL=chunk-MGFDTECS.js.map
128
+ //# sourceMappingURL=chunk-MGFDTECS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/cnpj/ascii-value.ts","../src/core/cnpj/alphanumeric.ts","../src/core/cnpj/numeric.ts","../src/core/cnpj/index.ts","../src/core/cnpj/mask.ts"],"names":[],"mappings":"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","file":"chunk-MGFDTECS.js","sourcesContent":["/**\n * Character value for CNPJ modulo 11 — ASCII decimal minus 48 (RFB Q14).\n * @see https://www.gov.br/receitafederal/pt-br/centrais-de-conteudo/publicacoes/perguntas-e-respostas/cnpj/cnpj-alfanumerico.pdf\n */\nexport function cnpjCharValue(char: string): number {\n return char.charCodeAt(0) - 48;\n}\n","import { CNPJ_ALPHANUMERIC_PATTERN, CNPJ_BASE_LENGTH, CNPJ_DV1_WEIGHTS, CNPJ_DV2_WEIGHTS, CNPJ_LENGTH } from './constants.js';\nimport { cnpjCharValue } from './ascii-value.js';\nimport { computeCheckDigit } from './modulo11.js';\n\nfunction hasRepeatedChars(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 isValidStructure(canonical: string): boolean {\n return canonical.length === CNPJ_LENGTH && CNPJ_ALPHANUMERIC_PATTERN.test(canonical);\n}\n\n/**\n * Alphanumeric CNPJ — ASCII-48 modulo 11 (RFB Q14).\n * Golden vector: 12ABC34501DE35\n */\nexport function isValidCnpjAlphanumeric(input: string): boolean {\n const canonical = input.toUpperCase();\n if (!isValidStructure(canonical)) {\n return false;\n }\n if (hasRepeatedChars(canonical)) {\n return false;\n }\n\n const base = canonical.slice(0, CNPJ_BASE_LENGTH);\n const dv1Expected = String(computeCheckDigit(base, CNPJ_DV1_WEIGHTS, cnpjCharValue));\n const dv2Expected = String(\n computeCheckDigit(base + dv1Expected, CNPJ_DV2_WEIGHTS, cnpjCharValue),\n );\n\n return canonical.slice(CNPJ_BASE_LENGTH) === dv1Expected + dv2Expected;\n}\n","import { CNPJ_BASE_LENGTH, CNPJ_DV1_WEIGHTS, CNPJ_DV2_WEIGHTS, CNPJ_NUMERIC_PATTERN } from './constants.js';\nimport { computeCheckDigit } from './modulo11.js';\n\nfunction digitValue(char: string): number {\n return Number(char);\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\n/**\n * Numeric CNPJ — traditional modulo 11 on digits (RFB Q6–Q7 coexistence).\n */\nexport function isValidCnpjNumeric(input: string): boolean {\n const canonical = input.replace(/\\D/g, '');\n if (!CNPJ_NUMERIC_PATTERN.test(canonical)) {\n return false;\n }\n if (hasRepeatedDigits(canonical)) {\n return false;\n }\n\n const base = canonical.slice(0, CNPJ_BASE_LENGTH);\n const dv1Expected = String(computeCheckDigit(base, CNPJ_DV1_WEIGHTS, digitValue));\n const dv2Expected = String(\n computeCheckDigit(base + dv1Expected, CNPJ_DV2_WEIGHTS, digitValue),\n );\n\n return canonical.slice(CNPJ_BASE_LENGTH) === dv1Expected + dv2Expected;\n}\n","import { stripCnpj } from '../../strip/cnpj.js';\nimport type { Cnpj, DocumentFormat, ValidationResult } from '../../types/validation-result.js';\nimport { brandCnpj } from '../../types/validation-result.js';\nimport { isValidCnpjAlphanumeric } from './alphanumeric.js';\nimport { CNPJ_LENGTH } from './constants.js';\nimport { containsLetter, detectCnpjFormat } from './detect.js';\nimport { isValidCnpjNumeric } from './numeric.js';\n\nexport { detectCnpjFormat, containsLetter } from './detect.js';\nexport { isValidCnpjAlphanumeric } from './alphanumeric.js';\nexport { isValidCnpjNumeric } from './numeric.js';\nexport {\n CNPJ_GOLDEN_ALPHANUMERIC,\n CNPJ_GOLDEN_ALPHANUMERIC_MASKED,\n CNPJ_GOLDEN_NUMERIC,\n CNPJ_GOLDEN_NUMERIC_MASKED,\n CNPJ_OFFICIAL_SOURCE_URL,\n} from './constants.js';\n\ntype FailedResult = Extract<ValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message };\n}\n\nfunction validateStructure(\n input: string,\n stripped: string,\n): FailedResult | { format: DocumentFormat } {\n if (stripped.length === 0) {\n return failure('EMPTY_INPUT', 'CNPJ input is empty');\n }\n\n const withoutMask = input.replace(/[.\\-/]/g, '');\n if (/[^A-Za-z0-9]/.test(withoutMask)) {\n return failure('INVALID_CHARACTER', 'CNPJ contains invalid characters');\n }\n\n if (stripped.length !== CNPJ_LENGTH) {\n return failure('INVALID_LENGTH', `CNPJ must have ${CNPJ_LENGTH} characters after normalization`);\n }\n\n const format = detectCnpjFormat(stripped);\n if (format === 'unknown') {\n return failure('UNSUPPORTED_FORMAT', 'CNPJ format is not numeric or alphanumeric');\n }\n\n return { format };\n}\n\nexport function isValidCnpj(input: string): boolean {\n return validateCnpj(input).ok;\n}\n\nexport function validateCnpj(input: string): ValidationResult<Cnpj> {\n const stripped = stripCnpj(input);\n const structural = validateStructure(input, stripped);\n if ('ok' in structural) {\n return structural;\n }\n\n const { format } = structural;\n\n if (format === 'numeric' || !containsLetter(stripped)) {\n if (isValidCnpjNumeric(stripped)) {\n return { ok: true, value: brandCnpj(stripped), format: 'numeric' };\n }\n if (format === 'numeric') {\n if (/^(\\d)\\1{13}$/.test(stripped)) {\n return failure('KNOWN_INVALID_PATTERN', 'CNPJ with all identical digits is invalid');\n }\n return failure('INVALID_CHECK_DIGIT', 'CNPJ check digits are invalid');\n }\n }\n\n if (isValidCnpjAlphanumeric(stripped)) {\n return { ok: true, value: brandCnpj(stripped), format: 'alphanumeric' };\n }\n\n return failure('INVALID_CHECK_DIGIT', 'CNPJ check digits are invalid');\n}\n","import { CNPJ_MASK_PATTERN } from './constants.js';\n\n/** Mask XX.XXX.XXX/XXXX-DD — same for numeric and alphanumeric (RFB Q21). */\nexport function applyCnpjMask(canonical: string): string {\n const match = CNPJ_MASK_PATTERN.exec(canonical);\n if (!match) {\n throw new Error('CNPJ must have exactly 14 characters to apply mask');\n }\n return `${match[1]}.${match[2]}.${match[3]}/${match[4]}-${match[5]}`;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { normalizeForPlatform } from './chunk-SCBXZLZ5.js';
1
+ import { normalizeForPlatform } from './chunk-PHXIWJFQ.js';
2
2
 
3
3
  // src/platform/types.ts
4
4
  var PLATFORM_DOCUMENT_TYPES = [
@@ -40,5 +40,5 @@ function compareRuntime(a, b, type, options = {}) {
40
40
  }
41
41
 
42
42
  export { compare, compareRuntime };
43
- //# sourceMappingURL=chunk-CIOSYWV4.js.map
44
- //# sourceMappingURL=chunk-CIOSYWV4.js.map
43
+ //# sourceMappingURL=chunk-MWDNHKK3.js.map
44
+ //# sourceMappingURL=chunk-MWDNHKK3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/platform/types.ts","../src/compare/index.ts"],"names":[],"mappings":";;;AAKO,IAAM,uBAAA,GAA0B;AAAA,EACrC,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,KAAA;AAAA,EACA,oBAAA;AAAA,EACA,mCAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA;AAMO,SAAS,uBAAuB,IAAA,EAA4C;AACjF,EAAA,OAAQ,uBAAA,CAA8C,SAAS,IAAI,CAAA;AACrE;;;ACrBO,SAAS,QACd,CAAA,EACA,CAAA,EACA,IAAA,EACA,OAAA,GAA2B,EAAC,EACb;AACf,EAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,CAAA,EAAG,IAAA,EAAM,OAAO,CAAA;AAClD,EAAA,MAAM,KAAA,GAAQ,oBAAA,CAAqB,CAAA,EAAG,IAAA,EAAM,OAAO,CAAA;AACnD,EAAA,OAAO,EAAE,KAAA,EAAO,IAAA,KAAS,KAAA,EAAM;AACjC;AAGO,SAAS,eACd,CAAA,EACA,CAAA,EACA,IAAA,EACA,OAAA,GAA2B,EAAC,EACmD;AAC/E,EAAA,IAAI,CAAC,sBAAA,CAAuB,IAAI,CAAA,EAAG;AACjC,IAAA,OAAO,EAAE,OAAO,KAAA,EAAO,IAAA,EAAM,sBAAsB,OAAA,EAAS,CAAA,uBAAA,EAA0B,IAAI,CAAA,CAAA,EAAG;AAAA,EAC/F;AACA,EAAA,OAAO,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,IAAA,EAAM,OAAO,CAAA;AACpC","file":"chunk-CIOSYWV4.js","sourcesContent":["import type { SanitizableDocumentType } from '../sanitize/index.js';\n\n/** Document types supported by compare, batch, and diff platform APIs. */\nexport type PlatformDocumentType = SanitizableDocumentType | 'pix' | 'brcode';\n\nexport const PLATFORM_DOCUMENT_TYPES = [\n 'cpf',\n 'cnpj',\n 'cep',\n 'placa',\n 'pis-pasep',\n 'telefone',\n 'cnh',\n 'renavam',\n 'titulo-eleitor',\n 'processo-judicial',\n 'rg',\n 'nfe-chave',\n 'boleto',\n 'cartao-credito',\n 'ean',\n 'inscricao-estadual',\n 'inscricao-estadual-produtor-rural',\n 'pix',\n 'brcode',\n] as const satisfies readonly PlatformDocumentType[];\n\nexport type PlatformOptions = {\n uf?: import('../types/validation-result.js').UfCode;\n};\n\nexport function isPlatformDocumentType(type: string): type is PlatformDocumentType {\n return (PLATFORM_DOCUMENT_TYPES as readonly string[]).includes(type);\n}\n","/**\n * Unified equality check — normalizes via strip/validate canonical (BR-COMPARE-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { normalizeForPlatform } from '../platform/normalize.js';\nimport { isPlatformDocumentType } from '../platform/types.js';\nimport type { PlatformDocumentType, PlatformOptions } from '../platform/types.js';\n\nexport type CompareResult = {\n equal: boolean;\n};\n\nexport function compare(\n a: string,\n b: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): CompareResult {\n const left = normalizeForPlatform(a, type, options);\n const right = normalizeForPlatform(b, type, options);\n return { equal: left === right };\n}\n\n/** Runtime guard for dynamic callers (non-exhaustive type string). */\nexport function compareRuntime(\n a: string,\n b: string,\n type: string,\n options: PlatformOptions = {},\n): CompareResult | { equal: false; code: 'UNSUPPORTED_FORMAT'; message: string } {\n if (!isPlatformDocumentType(type)) {\n return { equal: false, code: 'UNSUPPORTED_FORMAT', message: `Unknown document type: ${type}` };\n }\n return compare(a, b, type, options);\n}\n"]}
1
+ {"version":3,"sources":["../src/platform/types.ts","../src/compare/index.ts"],"names":[],"mappings":";;;AAKO,IAAM,uBAAA,GAA0B;AAAA,EACrC,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,KAAA;AAAA,EACA,oBAAA;AAAA,EACA,mCAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA;AAMO,SAAS,uBAAuB,IAAA,EAA4C;AACjF,EAAA,OAAQ,uBAAA,CAA8C,SAAS,IAAI,CAAA;AACrE;;;ACrBO,SAAS,QACd,CAAA,EACA,CAAA,EACA,IAAA,EACA,OAAA,GAA2B,EAAC,EACb;AACf,EAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,CAAA,EAAG,IAAA,EAAM,OAAO,CAAA;AAClD,EAAA,MAAM,KAAA,GAAQ,oBAAA,CAAqB,CAAA,EAAG,IAAA,EAAM,OAAO,CAAA;AACnD,EAAA,OAAO,EAAE,KAAA,EAAO,IAAA,KAAS,KAAA,EAAM;AACjC;AAGO,SAAS,eACd,CAAA,EACA,CAAA,EACA,IAAA,EACA,OAAA,GAA2B,EAAC,EACmD;AAC/E,EAAA,IAAI,CAAC,sBAAA,CAAuB,IAAI,CAAA,EAAG;AACjC,IAAA,OAAO,EAAE,OAAO,KAAA,EAAO,IAAA,EAAM,sBAAsB,OAAA,EAAS,CAAA,uBAAA,EAA0B,IAAI,CAAA,CAAA,EAAG;AAAA,EAC/F;AACA,EAAA,OAAO,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,IAAA,EAAM,OAAO,CAAA;AACpC","file":"chunk-MWDNHKK3.js","sourcesContent":["import type { SanitizableDocumentType } from '../sanitize/index.js';\n\n/** Document types supported by compare, batch, and diff platform APIs. */\nexport type PlatformDocumentType = SanitizableDocumentType | 'pix' | 'brcode';\n\nexport const PLATFORM_DOCUMENT_TYPES = [\n 'cpf',\n 'cnpj',\n 'cep',\n 'placa',\n 'pis-pasep',\n 'telefone',\n 'cnh',\n 'renavam',\n 'titulo-eleitor',\n 'processo-judicial',\n 'rg',\n 'nfe-chave',\n 'boleto',\n 'cartao-credito',\n 'ean',\n 'inscricao-estadual',\n 'inscricao-estadual-produtor-rural',\n 'pix',\n 'brcode',\n] as const satisfies readonly PlatformDocumentType[];\n\nexport type PlatformOptions = {\n uf?: import('../types/validation-result.js').UfCode;\n};\n\nexport function isPlatformDocumentType(type: string): type is PlatformDocumentType {\n return (PLATFORM_DOCUMENT_TYPES as readonly string[]).includes(type);\n}\n","/**\n * Unified equality check — normalizes via strip/validate canonical (BR-COMPARE-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { normalizeForPlatform } from '../platform/normalize.js';\nimport { isPlatformDocumentType } from '../platform/types.js';\nimport type { PlatformDocumentType, PlatformOptions } from '../platform/types.js';\n\nexport type CompareResult = {\n equal: boolean;\n};\n\nexport function compare(\n a: string,\n b: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): CompareResult {\n const left = normalizeForPlatform(a, type, options);\n const right = normalizeForPlatform(b, type, options);\n return { equal: left === right };\n}\n\n/** Runtime guard for dynamic callers (non-exhaustive type string). */\nexport function compareRuntime(\n a: string,\n b: string,\n type: string,\n options: PlatformOptions = {},\n): CompareResult | { equal: false; code: 'UNSUPPORTED_FORMAT'; message: string } {\n if (!isPlatformDocumentType(type)) {\n return { equal: false, code: 'UNSUPPORTED_FORMAT', message: `Unknown document type: ${type}` };\n }\n return compare(a, b, type, options);\n}\n"]}
@@ -8,8 +8,8 @@ var metadata_default = {
8
8
  "https://api.portaldatransparencia.gov.br/v3/api-docs",
9
9
  "https://portaldatransparencia.gov.br/"
10
10
  ],
11
- capturadoEm: "2026-06-26",
12
- atualizadoEm: "2026-06-26T13:38:55.299Z",
11
+ capturadoEm: "2026-06-30",
12
+ atualizadoEm: "2026-06-30T07:23:18.316Z",
13
13
  contagens: {
14
14
  endpoints: 8,
15
15
  queryAdapter: 7
@@ -18,16 +18,16 @@ var metadata_default = {
18
18
  adicionados: 0,
19
19
  removidos: 0,
20
20
  alterados: 0,
21
- comparadoCom: "2026-06-26"
21
+ comparadoCom: "2026-06-29"
22
22
  },
23
23
  verificacao: {
24
24
  agendamento: "diario",
25
25
  workflow: "data-refresh-bot.yml",
26
- ultimaExecucao: "2026-06-26T13:38:55.299Z"
26
+ ultimaExecucao: "2026-06-30T07:23:18.316Z"
27
27
  },
28
28
  documentacao: "docs/OFFICIAL-SOURCES.md#portal-transparencia"
29
29
  };
30
30
 
31
31
  export { metadata_default };
32
- //# sourceMappingURL=chunk-6F7G6Z5B.js.map
33
- //# sourceMappingURL=chunk-6F7G6Z5B.js.map
32
+ //# sourceMappingURL=chunk-NVQX4ODB.js.map
33
+ //# sourceMappingURL=chunk-NVQX4ODB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/transparencia-snapshots/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,yBAAA;AAAA,EACN,IAAA,EAAQ,8CAAA;AAAA,EACR,KAAA,EAAS,4FAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX,gEAAA;AAAA,IACA,sDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,SAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAgB;AAAA,GAClB;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,CAAA;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-6F7G6Z5B.js","sourcesContent":["{\n \"id\": \"transparencia-snapshots\",\n \"nome\": \"Portal da Transparência endpoint registry\",\n \"fonte\": \"CGU Portal da Transparência — Swagger audit (query endpoints; no bulk embed in v1)\",\n \"endpoints\": [\n \"https://api.portaldatransparencia.gov.br/swagger-ui/index.html\",\n \"https://api.portaldatransparencia.gov.br/v3/api-docs\",\n \"https://portaldatransparencia.gov.br/\"\n ],\n \"capturadoEm\": \"2026-06-26\",\n \"atualizadoEm\": \"2026-06-26T13:38:55.299Z\",\n \"contagens\": {\n \"endpoints\": 8,\n \"queryAdapter\": 7\n },\n \"alteracoes\": {\n \"adicionados\": 0,\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-26T13:38:55.299Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#portal-transparencia\"\n}\n"]}
1
+ {"version":3,"sources":["../src/transparencia-snapshots/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,yBAAA;AAAA,EACN,IAAA,EAAQ,8CAAA;AAAA,EACR,KAAA,EAAS,4FAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX,gEAAA;AAAA,IACA,sDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,SAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAgB;AAAA,GAClB;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,CAAA;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-NVQX4ODB.js","sourcesContent":["{\n \"id\": \"transparencia-snapshots\",\n \"nome\": \"Portal da Transparência endpoint registry\",\n \"fonte\": \"CGU Portal da Transparência — Swagger audit (query endpoints; no bulk embed in v1)\",\n \"endpoints\": [\n \"https://api.portaldatransparencia.gov.br/swagger-ui/index.html\",\n \"https://api.portaldatransparencia.gov.br/v3/api-docs\",\n \"https://portaldatransparencia.gov.br/\"\n ],\n \"capturadoEm\": \"2026-06-30\",\n \"atualizadoEm\": \"2026-06-30T07:23:18.316Z\",\n \"contagens\": {\n \"endpoints\": 8,\n \"queryAdapter\": 7\n },\n \"alteracoes\": {\n \"adicionados\": 0,\n \"removidos\": 0,\n \"alterados\": 0,\n \"comparadoCom\": \"2026-06-29\"\n },\n \"verificacao\": {\n \"agendamento\": \"diario\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-30T07:23:18.316Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#portal-transparencia\"\n}\n"]}