@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
@@ -7,27 +7,28 @@ var metadata_default = {
7
7
  "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoMoedaPeriodo(moeda=@moeda,dataInicial=@dataInicial,dataFinalCotacao=@dataFinalCotacao)",
8
8
  "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/swagger-ui3"
9
9
  ],
10
- capturadoEm: "2026-06-26",
11
- atualizadoEm: "2026-06-26T13:08:11.249Z",
10
+ capturadoEm: "2026-06-30",
11
+ atualizadoEm: "2026-06-30T06:52:40.988Z",
12
12
  contagens: {
13
- cotacoes: 40,
13
+ cotacoes: 850,
14
14
  moedas: 10,
15
- diasUteis: 4
15
+ diasUteis: 85
16
16
  },
17
17
  alteracoes: {
18
- adicionados: 0,
19
- removidos: 0,
18
+ adicionados: 10,
19
+ removidos: 10,
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:08:11.249Z"
26
+ ultimaExecucao: "2026-06-30T06:52:40.988Z"
27
27
  },
28
- documentacao: "docs/OFFICIAL-SOURCES.md#ptax-cotacoes"
28
+ documentacao: "docs/OFFICIAL-SOURCES.md#ptax-cotacoes",
29
+ janelaDiasUteis: 90
29
30
  };
30
31
 
31
32
  export { metadata_default };
32
- //# sourceMappingURL=chunk-JNAZI3HU.js.map
33
- //# sourceMappingURL=chunk-JNAZI3HU.js.map
33
+ //# sourceMappingURL=chunk-PBZMBJEX.js.map
34
+ //# sourceMappingURL=chunk-PBZMBJEX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ptax/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAQ,uBAAA;AAAA,EACR,KAAA,EAAS,sDAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX,6JAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,QAAA,EAAY,GAAA;AAAA,IACZ,MAAA,EAAU,EAAA;AAAA,IACV,SAAA,EAAa;AAAA,GACf;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,EAAA;AAAA,IACf,SAAA,EAAa,EAAA;AAAA,IACb,SAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAgB;AAAA,GAClB;AAAA,EACA,WAAA,EAAe;AAAA,IACb,WAAA,EAAe,QAAA;AAAA,IACf,QAAA,EAAY,sBAAA;AAAA,IACZ,cAAA,EAAkB;AAAA,GACpB;AAAA,EACA,YAAA,EAAgB,wCAAA;AAAA,EAChB,eAAA,EAAmB;AACrB","file":"chunk-PBZMBJEX.js","sourcesContent":["{\n \"id\": \"ptax\",\n \"nome\": \"Bacen PTAX Fechamento\",\n \"fonte\": \"Banco Central Olinda PTAX API — Fechamento PTAX\",\n \"endpoints\": [\n \"https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoMoedaPeriodo(moeda=@moeda,dataInicial=@dataInicial,dataFinalCotacao=@dataFinalCotacao)\",\n \"https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/swagger-ui3\"\n ],\n \"capturadoEm\": \"2026-06-30\",\n \"atualizadoEm\": \"2026-06-30T06:52:40.988Z\",\n \"contagens\": {\n \"cotacoes\": 850,\n \"moedas\": 10,\n \"diasUteis\": 85\n },\n \"alteracoes\": {\n \"adicionados\": 10,\n \"removidos\": 10,\n \"alterados\": 0,\n \"comparadoCom\": \"2026-06-29\"\n },\n \"verificacao\": {\n \"agendamento\": \"diario\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-30T06:52:40.988Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#ptax-cotacoes\",\n \"janelaDiasUteis\": 90\n}\n"]}
@@ -1,22 +1,23 @@
1
- import { stripForType } from './chunk-BLSDFC3C.js';
1
+ import { stripForType } from './chunk-XYNX7PUL.js';
2
2
  import { isRgUfImplemented, validateRg } from './chunk-6F3A3NT4.js';
3
- import { validateRenavam } from './chunk-F6LVFAJT.js';
3
+ import { validateRenavam } from './chunk-4NS47CJG.js';
4
4
  import { validateProcessoJudicial } from './chunk-A4QBLVVO.js';
5
- import { validateTelefone } from './chunk-HZ4UGWFE.js';
6
- import { validateTituloEleitor } from './chunk-MSYTS5K7.js';
5
+ import { validateTelefone } from './chunk-OZHEHUBV.js';
6
+ import { validateTituloEleitor } from './chunk-6WBUKUHD.js';
7
+ import { validatePlaca } from './chunk-UG2YICWH.js';
7
8
  import { validateNfeChave } from './chunk-XRT44FMY.js';
8
9
  import { validatePisPasep } from './chunk-HORKZQIH.js';
9
- import { validatePlaca } from './chunk-BDYNBRT7.js';
10
10
  import { validateInscricaoEstadual } from './chunk-OHBSYBG7.js';
11
11
  import { validateIeSpRural } from './chunk-FGOPYU2L.js';
12
12
  import { validateEan } from './chunk-OFAU4VTU.js';
13
- import { validateCep } from './chunk-55IZCKNL.js';
14
- import { validateCnh } from './chunk-DL4TSGE5.js';
13
+ import { validateCep } from './chunk-C4E2AE2A.js';
14
+ import { validateCnh } from './chunk-JZOS2MO7.js';
15
+ import { stripPixKey } from './chunk-JUQMINSZ.js';
15
16
  import { validateBoleto } from './chunk-JOBIJQGE.js';
16
- import { validateBrCode } from './chunk-UNBIJPJU.js';
17
- import { validatePixKey } from './chunk-DS6MOO5K.js';
18
- import { validateCpf } from './chunk-W5LOXC7J.js';
19
- import { validateCnpj } from './chunk-2RZXK6C3.js';
17
+ import { validateBrCode } from './chunk-L3WG36Y4.js';
18
+ import { validatePixKey } from './chunk-7XVCTDJE.js';
19
+ import { validateCpf } from './chunk-DQQNXXGO.js';
20
+ import { validateCnpj } from './chunk-MGFDTECS.js';
20
21
  import { validateCartaoCredito } from './chunk-PU5TKJZI.js';
21
22
 
22
23
  // src/platform/normalize.ts
@@ -37,13 +38,17 @@ var SANITIZABLE_PLATFORM_TYPES = /* @__PURE__ */ new Set([
37
38
  "cartao-credito",
38
39
  "ean",
39
40
  "inscricao-estadual",
40
- "inscricao-estadual-produtor-rural"
41
+ "inscricao-estadual-produtor-rural",
42
+ "pix"
41
43
  ]);
42
44
  function isSanitizablePlatformType(type) {
43
45
  return SANITIZABLE_PLATFORM_TYPES.has(type);
44
46
  }
45
47
  function stripForPlatform(raw, type) {
46
- if (type === "pix" || type === "brcode") {
48
+ if (type === "pix") {
49
+ return stripPixKey(raw);
50
+ }
51
+ if (type === "brcode") {
47
52
  return raw;
48
53
  }
49
54
  if (isSanitizablePlatformType(type)) {
@@ -148,5 +153,5 @@ function tryValidatedCanonical(value, type, uf) {
148
153
  }
149
154
 
150
155
  export { normalizeForPlatform };
151
- //# sourceMappingURL=chunk-SCBXZLZ5.js.map
152
- //# sourceMappingURL=chunk-SCBXZLZ5.js.map
156
+ //# sourceMappingURL=chunk-PHXIWJFQ.js.map
157
+ //# sourceMappingURL=chunk-PHXIWJFQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/platform/normalize.ts"],"names":[],"mappings":"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","file":"chunk-SCBXZLZ5.js","sourcesContent":["/**\n * Canonical normalization for platform compare/diff (BR-PLATFORM-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { validateBrCode } from '../core/brcode/index.js';\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport { validateEan } from '../core/ean/index.js';\nimport { validateCep } from '../core/cep/index.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport { validateCnpj } from '../core/cnpj/index.js';\nimport { validateCpf } from '../core/cpf/index.js';\nimport { validateInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { validateIeSpRural } from '../core/inscricao-estadual/sp-rural.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport { validatePisPasep } from '../core/pis-pasep/index.js';\nimport { validatePlaca } from '../core/placa/index.js';\nimport { validatePixKey } from '../core/pix/index.js';\nimport { validateRenavam } from '../core/renavam/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { validateProcessoJudicial } from '../core/processo-judicial/index.js';\nimport { validateRg, isRgUfImplemented } from '../core/rg/index.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport { stripForType } from '../sanitize/fixes.js';\nimport type { SanitizableDocumentType } from '../sanitize/index.js';\nimport type { UfCode } from '../types/validation-result.js';\nimport type { PlatformDocumentType, PlatformOptions } from './types.js';\n\nconst SANITIZABLE_PLATFORM_TYPES = new Set<PlatformDocumentType>([\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]);\n\nfunction isSanitizablePlatformType(type: PlatformDocumentType): type is SanitizableDocumentType {\n return SANITIZABLE_PLATFORM_TYPES.has(type);\n}\n\nfunction stripForPlatform(raw: string, type: PlatformDocumentType): string {\n if (type === 'pix' || type === 'brcode') {\n return raw;\n }\n if (isSanitizablePlatformType(type)) {\n return stripForType(raw, type);\n }\n return raw;\n}\n\nexport function normalizeForPlatform(\n raw: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): string {\n const trimmed = raw.trim();\n const stripped = stripForPlatform(trimmed, type);\n const validated = tryValidatedCanonical(stripped, type, options.uf);\n return validated ?? stripped;\n}\n\nfunction tryValidatedCanonical(\n value: string,\n type: PlatformDocumentType,\n uf?: UfCode,\n): string | null {\n switch (type) {\n case 'cpf': {\n const result = validateCpf(value);\n return result.ok ? result.value : null;\n }\n case 'cnpj': {\n const result = validateCnpj(value);\n return result.ok ? result.value : null;\n }\n case 'cep': {\n const result = validateCep(value);\n return result.ok ? result.value : null;\n }\n case 'placa': {\n const result = validatePlaca(value);\n return result.ok ? result.value : null;\n }\n case 'pis-pasep': {\n const result = validatePisPasep(value);\n return result.ok ? result.value : null;\n }\n case 'telefone': {\n const result = validateTelefone(value);\n return result.ok ? result.value : null;\n }\n case 'cnh': {\n const result = validateCnh(value);\n return result.ok ? result.value : null;\n }\n case 'renavam': {\n const result = validateRenavam(value);\n return result.ok ? result.value : null;\n }\n case 'titulo-eleitor': {\n const result = validateTituloEleitor(value);\n return result.ok ? result.value : null;\n }\n case 'processo-judicial': {\n const result = validateProcessoJudicial(value);\n return result.ok ? result.value : null;\n }\n case 'rg': {\n if (!uf || !isRgUfImplemented(uf)) {\n return null;\n }\n const result = validateRg(value, { uf });\n return result.ok ? result.value : null;\n }\n case 'nfe-chave': {\n const result = validateNfeChave(value);\n return result.ok ? result.value : null;\n }\n case 'boleto': {\n const result = validateBoleto(value);\n return result.ok ? result.value : null;\n }\n case 'cartao-credito': {\n const result = validateCartaoCredito(value);\n return result.ok ? result.value : null;\n }\n case 'ean': {\n const result = validateEan(value);\n return result.ok ? result.value : null;\n }\n case 'inscricao-estadual': {\n if (!uf) {\n return null;\n }\n const result = validateInscricaoEstadual(value, { uf });\n return result.ok ? result.value : null;\n }\n case 'inscricao-estadual-produtor-rural': {\n const result = validateIeSpRural(value);\n return result.ok ? result.value : null;\n }\n case 'pix': {\n const result = validatePixKey(value);\n return result.ok ? result.value : null;\n }\n case 'brcode': {\n const result = validateBrCode(value);\n return result.ok ? result.value : null;\n }\n default: {\n return null;\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/platform/normalize.ts"],"names":[],"mappings":"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","file":"chunk-PHXIWJFQ.js","sourcesContent":["/**\n * Canonical normalization for platform compare/diff (BR-PLATFORM-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { validateBrCode } from '../core/brcode/index.js';\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport { validateEan } from '../core/ean/index.js';\nimport { validateCep } from '../core/cep/index.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport { validateCnpj } from '../core/cnpj/index.js';\nimport { validateCpf } from '../core/cpf/index.js';\nimport { validateInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { validateIeSpRural } from '../core/inscricao-estadual/sp-rural.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport { validatePisPasep } from '../core/pis-pasep/index.js';\nimport { validatePlaca } from '../core/placa/index.js';\nimport { validatePixKey } from '../core/pix/index.js';\nimport { validateRenavam } from '../core/renavam/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { validateProcessoJudicial } from '../core/processo-judicial/index.js';\nimport { validateRg, isRgUfImplemented } from '../core/rg/index.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport { stripForType } from '../sanitize/fixes.js';\nimport { stripPixKey } from '../strip/pix.js';\nimport type { SanitizableDocumentType } from '../sanitize/index.js';\nimport type { UfCode } from '../types/validation-result.js';\nimport type { PlatformDocumentType, PlatformOptions } from './types.js';\n\nconst SANITIZABLE_PLATFORM_TYPES = new Set<PlatformDocumentType>([\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]);\n\nfunction isSanitizablePlatformType(type: PlatformDocumentType): type is SanitizableDocumentType {\n return SANITIZABLE_PLATFORM_TYPES.has(type);\n}\n\nfunction stripForPlatform(raw: string, type: PlatformDocumentType): string {\n if (type === 'pix') {\n return stripPixKey(raw);\n }\n if (type === 'brcode') {\n return raw;\n }\n if (isSanitizablePlatformType(type)) {\n return stripForType(raw, type);\n }\n return raw;\n}\n\nexport function normalizeForPlatform(\n raw: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): string {\n const trimmed = raw.trim();\n const stripped = stripForPlatform(trimmed, type);\n const validated = tryValidatedCanonical(stripped, type, options.uf);\n return validated ?? stripped;\n}\n\nfunction tryValidatedCanonical(\n value: string,\n type: PlatformDocumentType,\n uf?: UfCode,\n): string | null {\n switch (type) {\n case 'cpf': {\n const result = validateCpf(value);\n return result.ok ? result.value : null;\n }\n case 'cnpj': {\n const result = validateCnpj(value);\n return result.ok ? result.value : null;\n }\n case 'cep': {\n const result = validateCep(value);\n return result.ok ? result.value : null;\n }\n case 'placa': {\n const result = validatePlaca(value);\n return result.ok ? result.value : null;\n }\n case 'pis-pasep': {\n const result = validatePisPasep(value);\n return result.ok ? result.value : null;\n }\n case 'telefone': {\n const result = validateTelefone(value);\n return result.ok ? result.value : null;\n }\n case 'cnh': {\n const result = validateCnh(value);\n return result.ok ? result.value : null;\n }\n case 'renavam': {\n const result = validateRenavam(value);\n return result.ok ? result.value : null;\n }\n case 'titulo-eleitor': {\n const result = validateTituloEleitor(value);\n return result.ok ? result.value : null;\n }\n case 'processo-judicial': {\n const result = validateProcessoJudicial(value);\n return result.ok ? result.value : null;\n }\n case 'rg': {\n if (!uf || !isRgUfImplemented(uf)) {\n return null;\n }\n const result = validateRg(value, { uf });\n return result.ok ? result.value : null;\n }\n case 'nfe-chave': {\n const result = validateNfeChave(value);\n return result.ok ? result.value : null;\n }\n case 'boleto': {\n const result = validateBoleto(value);\n return result.ok ? result.value : null;\n }\n case 'cartao-credito': {\n const result = validateCartaoCredito(value);\n return result.ok ? result.value : null;\n }\n case 'ean': {\n const result = validateEan(value);\n return result.ok ? result.value : null;\n }\n case 'inscricao-estadual': {\n if (!uf) {\n return null;\n }\n const result = validateInscricaoEstadual(value, { uf });\n return result.ok ? result.value : null;\n }\n case 'inscricao-estadual-produtor-rural': {\n const result = validateIeSpRural(value);\n return result.ok ? result.value : null;\n }\n case 'pix': {\n const result = validatePixKey(value);\n return result.ok ? result.value : null;\n }\n case 'brcode': {\n const result = validateBrCode(value);\n return result.ok ? result.value : null;\n }\n default: {\n return null;\n }\n }\n}\n"]}
@@ -2,37 +2,38 @@
2
2
  var metadata_default = {
3
3
  id: "iss-municipal",
4
4
  nome: "ISS municipal al\xEDquotas \u2014 partial embed (capitals + top PIB)",
5
- fonte: "Municipal legislation + LC 116/2003 Art. 8 band + IBGE PIB municipal ranking",
5
+ fonte: "SIDRA 5938 PIB 2022 + LC 116 Art. 8 band + capital legislation seeds",
6
6
  endpoints: [
7
7
  "https://www.planalto.gov.br/ccivil_03/leis/lcp/lcp116.htm",
8
8
  "https://www.ibge.gov.br/estatisticas/economicas/contas-nacionais/9088-produto-interno-bruto-dos-municipios.html",
9
9
  "https://www.ibge.gov.br/explica/codigos-dos-municipios.php",
10
+ "https://apisidra.ibge.gov.br/values/t/5938/n6/all/v/37/p/2022",
10
11
  "https://ftp.ibge.gov.br/Pib_Municipios/2022_2023/xlsx/tabelas_completas_2022.xlsx",
11
12
  "https://www.cnm.org.br/",
12
13
  "https://www.gov.br/nfse/pt-br"
13
14
  ],
14
15
  capturadoEm: "2026-06-26",
15
- atualizadoEm: "2026-06-26T18:48:41.423Z",
16
+ atualizadoEm: "2026-06-26T20:38:58.298Z",
16
17
  contagens: {
17
- municipios: 100,
18
+ municipios: 500,
18
19
  capitais: 27,
19
- estimativaRows: 73
20
+ estimativaRows: 473
20
21
  },
21
22
  alteracoes: {
22
- adicionados: 100,
23
+ adicionados: 400,
23
24
  removidos: 0,
24
25
  alterados: 0,
25
- comparadoCom: null
26
+ comparadoCom: "2026-06-26"
26
27
  },
27
28
  verificacao: {
28
29
  agendamento: "manual",
29
30
  workflow: "data-refresh-bot.yml",
30
- ultimaExecucao: "2026-06-26T18:48:41.423Z"
31
+ ultimaExecucao: "2026-06-26T20:38:58.298Z"
31
32
  },
32
33
  documentacao: "docs/OFFICIAL-SOURCES.md#iss-municipal",
33
34
  estimativa: true
34
35
  };
35
36
 
36
37
  export { metadata_default };
37
- //# sourceMappingURL=chunk-KVJL4MTV.js.map
38
- //# sourceMappingURL=chunk-KVJL4MTV.js.map
38
+ //# sourceMappingURL=chunk-PRSHGHAS.js.map
39
+ //# sourceMappingURL=chunk-PRSHGHAS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/iss-municipal/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,eAAA;AAAA,EACN,IAAA,EAAQ,sEAAA;AAAA,EACR,KAAA,EAAS,sEAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX,2DAAA;AAAA,IACA,iHAAA;AAAA,IACA,4DAAA;AAAA,IACA,+DAAA;AAAA,IACA,mFAAA;AAAA,IACA,yBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,UAAA,EAAc,GAAA;AAAA,IACd,QAAA,EAAY,EAAA;AAAA,IACZ,cAAA,EAAkB;AAAA,GACpB;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,GAAA;AAAA,IACf,SAAA,EAAa,CAAA;AAAA,IACb,SAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAgB;AAAA,GAClB;AAAA,EACA,WAAA,EAAe;AAAA,IACb,WAAA,EAAe,QAAA;AAAA,IACf,QAAA,EAAY,sBAAA;AAAA,IACZ,cAAA,EAAkB;AAAA,GACpB;AAAA,EACA,YAAA,EAAgB,wCAAA;AAAA,EAChB,UAAA,EAAc;AAChB","file":"chunk-PRSHGHAS.js","sourcesContent":["{\n \"id\": \"iss-municipal\",\n \"nome\": \"ISS municipal alíquotas — partial embed (capitals + top PIB)\",\n \"fonte\": \"SIDRA 5938 PIB 2022 + LC 116 Art. 8 band + capital legislation seeds\",\n \"endpoints\": [\n \"https://www.planalto.gov.br/ccivil_03/leis/lcp/lcp116.htm\",\n \"https://www.ibge.gov.br/estatisticas/economicas/contas-nacionais/9088-produto-interno-bruto-dos-municipios.html\",\n \"https://www.ibge.gov.br/explica/codigos-dos-municipios.php\",\n \"https://apisidra.ibge.gov.br/values/t/5938/n6/all/v/37/p/2022\",\n \"https://ftp.ibge.gov.br/Pib_Municipios/2022_2023/xlsx/tabelas_completas_2022.xlsx\",\n \"https://www.cnm.org.br/\",\n \"https://www.gov.br/nfse/pt-br\"\n ],\n \"capturadoEm\": \"2026-06-26\",\n \"atualizadoEm\": \"2026-06-26T20:38:58.298Z\",\n \"contagens\": {\n \"municipios\": 500,\n \"capitais\": 27,\n \"estimativaRows\": 473\n },\n \"alteracoes\": {\n \"adicionados\": 400,\n \"removidos\": 0,\n \"alterados\": 0,\n \"comparadoCom\": \"2026-06-26\"\n },\n \"verificacao\": {\n \"agendamento\": \"manual\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-26T20:38:58.298Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#iss-municipal\",\n \"estimativa\": true\n}\n"]}
@@ -6,8 +6,8 @@ var metadata_default = {
6
6
  endpoints: [
7
7
  "https://github.com/jonathands/dados-abertos-receita-cnpj/releases/download/2024.09/Naturezas.zip"
8
8
  ],
9
- capturadoEm: "2026-06-26",
10
- atualizadoEm: "2026-06-26T13:23:35.872Z",
9
+ capturadoEm: "2026-06-30",
10
+ atualizadoEm: "2026-06-30T07:07:51.485Z",
11
11
  contagens: {
12
12
  naturezas: 90
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:23:35.872Z"
23
+ ultimaExecucao: "2026-06-30T07:07:51.485Z"
24
24
  },
25
25
  documentacao: "docs/OFFICIAL-SOURCES.md#natureza-juridica"
26
26
  };
27
27
 
28
28
  export { metadata_default };
29
- //# sourceMappingURL=chunk-TMHKYUPU.js.map
30
- //# sourceMappingURL=chunk-TMHKYUPU.js.map
29
+ //# sourceMappingURL=chunk-R3R3OIH7.js.map
30
+ //# sourceMappingURL=chunk-R3R3OIH7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/natureza-juridica/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,mBAAA;AAAA,EACN,IAAA,EAAQ,iCAAA;AAAA,EACR,KAAA,EAAS,2DAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,SAAA,EAAa;AAAA,GACf;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-TMHKYUPU.js","sourcesContent":["{\n \"id\": \"natureza-juridica\",\n \"nome\": \"RFB CNPJ Naturezas Jurídicas\",\n \"fonte\": \"Receita Federal — Dados Abertos CNPJ (Naturezas.zip)\",\n \"endpoints\": [\n \"https://github.com/jonathands/dados-abertos-receita-cnpj/releases/download/2024.09/Naturezas.zip\"\n ],\n \"capturadoEm\": \"2026-06-26\",\n \"atualizadoEm\": \"2026-06-26T13:23:35.872Z\",\n \"contagens\": {\n \"naturezas\": 90\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:23:35.872Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#natureza-juridica\"\n}\n"]}
1
+ {"version":3,"sources":["../src/natureza-juridica/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,mBAAA;AAAA,EACN,IAAA,EAAQ,iCAAA;AAAA,EACR,KAAA,EAAS,2DAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,SAAA,EAAa;AAAA,GACf;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-R3R3OIH7.js","sourcesContent":["{\n \"id\": \"natureza-juridica\",\n \"nome\": \"RFB CNPJ Naturezas Jurídicas\",\n \"fonte\": \"Receita Federal — Dados Abertos CNPJ (Naturezas.zip)\",\n \"endpoints\": [\n \"https://github.com/jonathands/dados-abertos-receita-cnpj/releases/download/2024.09/Naturezas.zip\"\n ],\n \"capturadoEm\": \"2026-06-30\",\n \"atualizadoEm\": \"2026-06-30T07:07:51.485Z\",\n \"contagens\": {\n \"naturezas\": 90\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:07:51.485Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#natureza-juridica\"\n}\n"]}
@@ -9,26 +9,26 @@ var metadata_default = {
9
9
  "https://www3.bcb.gov.br/sgspub/consultarvalores/consultarValoresSeries.do?method=consultarGraficoPorId&hdOidSeriesSelecionadas=432",
10
10
  "https://www.bcb.gov.br/controleinflacao/copom"
11
11
  ],
12
- capturadoEm: "2026-06-26",
13
- atualizadoEm: "2026-06-26T18:12:48.702Z",
12
+ capturadoEm: "2026-06-30",
13
+ atualizadoEm: "2026-06-30T06:52:42.882Z",
14
14
  contagens: {
15
15
  observacoes: 90,
16
16
  dias: 90
17
17
  },
18
18
  alteracoes: {
19
- adicionados: 0,
20
- removidos: 0,
19
+ adicionados: 1,
20
+ removidos: 1,
21
21
  alterados: 0,
22
- comparadoCom: "2026-06-26"
22
+ comparadoCom: "2026-06-29"
23
23
  },
24
24
  verificacao: {
25
25
  agendamento: "diario",
26
26
  workflow: "data-refresh-bot.yml",
27
- ultimaExecucao: "2026-06-26T18:12:48.702Z"
27
+ ultimaExecucao: "2026-06-30T06:52:42.882Z"
28
28
  },
29
29
  documentacao: "docs/OFFICIAL-SOURCES.md#selic-meta-sgs-432"
30
30
  };
31
31
 
32
32
  export { metadata_default };
33
- //# sourceMappingURL=chunk-RKL64IOG.js.map
34
- //# sourceMappingURL=chunk-RKL64IOG.js.map
33
+ //# sourceMappingURL=chunk-TO3DSIJY.js.map
34
+ //# sourceMappingURL=chunk-TO3DSIJY.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/selic/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,OAAA;AAAA,EACN,IAAA,EAAQ,4CAAA;AAAA,EACR,KAAA,EAAS,0DAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX,4FAAA;AAAA,IACA,sEAAA;AAAA,IACA,oIAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,WAAA,EAAe,EAAA;AAAA,IACf,IAAA,EAAQ;AAAA,GACV;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-RKL64IOG.js","sourcesContent":["{\n \"id\": \"selic\",\n \"nome\": \"Bacen SGS — Meta Selic (série 432)\",\n \"fonte\": \"Banco Central — Taxa meta Selic definida pelo Copom\",\n \"endpoints\": [\n \"https://dadosabertos.bcb.gov.br/dataset/432-taxa-de-juros---meta-selic-definida-pelo-copom\",\n \"https://api.bcb.gov.br/dados/serie/bcdata.sgs.432/dados?formato=json\",\n \"https://www3.bcb.gov.br/sgspub/consultarvalores/consultarValoresSeries.do?method=consultarGraficoPorId&hdOidSeriesSelecionadas=432\",\n \"https://www.bcb.gov.br/controleinflacao/copom\"\n ],\n \"capturadoEm\": \"2026-06-26\",\n \"atualizadoEm\": \"2026-06-26T18:12:48.702Z\",\n \"contagens\": {\n \"observacoes\": 90,\n \"dias\": 90\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-26T18:12:48.702Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#selic-meta-sgs-432\"\n}\n"]}
1
+ {"version":3,"sources":["../src/selic/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,OAAA;AAAA,EACN,IAAA,EAAQ,4CAAA;AAAA,EACR,KAAA,EAAS,0DAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX,4FAAA;AAAA,IACA,sEAAA;AAAA,IACA,oIAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,WAAA,EAAe,EAAA;AAAA,IACf,IAAA,EAAQ;AAAA,GACV;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-TO3DSIJY.js","sourcesContent":["{\n \"id\": \"selic\",\n \"nome\": \"Bacen SGS — Meta Selic (série 432)\",\n \"fonte\": \"Banco Central — Taxa meta Selic definida pelo Copom\",\n \"endpoints\": [\n \"https://dadosabertos.bcb.gov.br/dataset/432-taxa-de-juros---meta-selic-definida-pelo-copom\",\n \"https://api.bcb.gov.br/dados/serie/bcdata.sgs.432/dados?formato=json\",\n \"https://www3.bcb.gov.br/sgspub/consultarvalores/consultarValoresSeries.do?method=consultarGraficoPorId&hdOidSeriesSelecionadas=432\",\n \"https://www.bcb.gov.br/controleinflacao/copom\"\n ],\n \"capturadoEm\": \"2026-06-30\",\n \"atualizadoEm\": \"2026-06-30T06:52:42.882Z\",\n \"contagens\": {\n \"observacoes\": 90,\n \"dias\": 90\n },\n \"alteracoes\": {\n \"adicionados\": 1,\n \"removidos\": 1,\n \"alterados\": 0,\n \"comparadoCom\": \"2026-06-29\"\n },\n \"verificacao\": {\n \"agendamento\": \"diario\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-30T06:52:42.882Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#selic-meta-sgs-432\"\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { stripPlaca } from './chunk-YYHS5WQN.js';
1
+ import { stripPlaca } from './chunk-6BWOYNQD.js';
2
2
  import { brandPlaca } from './chunk-BVMY4IWB.js';
3
3
 
4
4
  // src/core/placa/constants.ts
@@ -102,5 +102,5 @@ function validatePlaca(input) {
102
102
  }
103
103
 
104
104
  export { PLACA_GOLDEN_CONVERSION_FROM, PLACA_GOLDEN_CONVERSION_TO, PLACA_GOLDEN_LEGACY, PLACA_GOLDEN_MERCOSUL, PLACA_LEGACY_PATTERN, PLACA_LENGTH, PLACA_MERCOSUL_PATTERN, PLACA_OFFICIAL_SOURCE_URL, convertPlacaToMercosul, detectPlacaFormat, isValidPlaca, isValidPlacaLegacy, isValidPlacaMercosul, validatePlaca };
105
- //# sourceMappingURL=chunk-BDYNBRT7.js.map
106
- //# sourceMappingURL=chunk-BDYNBRT7.js.map
105
+ //# sourceMappingURL=chunk-UG2YICWH.js.map
106
+ //# sourceMappingURL=chunk-UG2YICWH.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/placa/constants.ts","../src/core/placa/detect.ts","../src/core/placa/legacy.ts","../src/core/placa/mercosul.ts","../src/core/placa/convert.ts","../src/core/placa/index.ts"],"names":["failure"],"mappings":"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","file":"chunk-BDYNBRT7.js","sourcesContent":["/**\n * License plate patterns — CONTRAN 729/2018 (legacy + Mercosul).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf\n * @see docs/use-cases/UC-004-validate-placa.md — golden vectors ABC1D23, ABC1234\n */\nexport const PLACA_LENGTH = 7;\nexport const PLACA_LEGACY_PATTERN = /^[A-Z]{3}[0-9]{4}$/;\nexport const PLACA_MERCOSUL_PATTERN = /^[A-Z]{3}[0-9][A-Z0-9][0-9]{2}$/;\nexport const PLACA_LEGACY_TO_MERCOSUL_MAP: Record<string, string> = {\n '0': 'A',\n '1': 'B',\n '2': 'C',\n '3': 'D',\n '4': 'E',\n '5': 'F',\n '6': 'G',\n '7': 'H',\n '8': 'I',\n '9': 'J',\n};\nexport const PLACA_GOLDEN_MERCOSUL = 'ABC1D23';\nexport const PLACA_GOLDEN_LEGACY = 'ABC1234';\nexport const PLACA_GOLDEN_CONVERSION_FROM = 'ABC1234';\nexport const PLACA_GOLDEN_CONVERSION_TO = 'ABC1C34';\nexport const PLACA_OFFICIAL_SOURCE_URL =\n 'https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf';\n","/**\n * License plate format detection — legacy vs Mercosul (CONTRAN).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf\n */\nimport { stripPlaca } from '../../strip/index.js';\nimport { PLACA_LENGTH, PLACA_LEGACY_PATTERN, PLACA_MERCOSUL_PATTERN } from './constants.js';\n\nexport type PlacaFormat = 'legacy' | 'mercosul' | 'unknown';\n\nexport function detectPlacaFormat(input: string): PlacaFormat {\n const stripped = stripPlaca(input);\n if (stripped.length !== PLACA_LENGTH) {\n return 'unknown';\n }\n if (PLACA_LEGACY_PATTERN.test(stripped)) {\n return 'legacy';\n }\n if (PLACA_MERCOSUL_PATTERN.test(stripped)) {\n return 'mercosul';\n }\n return 'unknown';\n}\n","/**\n * License plate — legacy format LLLNNNN (CONTRAN).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf\n */\nimport { stripPlaca } from '../../strip/index.js';\nimport { PLACA_LEGACY_PATTERN } from './constants.js';\n\nexport function isValidPlacaLegacy(input: string): boolean {\n const stripped = stripPlaca(input);\n return PLACA_LEGACY_PATTERN.test(stripped);\n}\n","/**\n * License plate — Mercosul format LLLNLNN (CONTRAN).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf\n */\nimport { stripPlaca } from '../../strip/index.js';\nimport { PLACA_MERCOSUL_PATTERN } from './constants.js';\n\nexport function isValidPlacaMercosul(input: string): boolean {\n const stripped = stripPlaca(input);\n return PLACA_MERCOSUL_PATTERN.test(stripped);\n}\n","/**\n * Legacy → Mercosul plate conversion (CONTRAN digit-to-letter table).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf\n */\nimport type { FormatResult } from '../../types/validation-result.js';\nimport { stripPlaca } from '../../strip/index.js';\nimport { PLACA_LEGACY_TO_MERCOSUL_MAP } from './constants.js';\nimport { detectPlacaFormat } from './detect.js';\n\ntype FailedResult = Extract<FormatResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message };\n}\n\nexport function convertPlacaToMercosul(input: string): FormatResult {\n const stripped = stripPlaca(input);\n if (stripped.length === 0) {\n return failure('EMPTY_INPUT', 'Placa input is empty');\n }\n\n if (detectPlacaFormat(input) !== 'legacy') {\n return failure('UNSUPPORTED_FORMAT', 'Conversion requires a valid legacy plate (LLLNNNN)');\n }\n\n const prefix = stripped.slice(0, 4);\n const mapped = PLACA_LEGACY_TO_MERCOSUL_MAP[stripped.charAt(4)];\n const suffix = stripped.slice(5);\n return { ok: true, formatted: `${prefix}${mapped}${suffix}` };\n}\n","/**\n * License plate validation — legacy (LLLNNNN) + Mercosul (LLLNLNN). CONTRAN 729/2018.\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf\n * @see docs/use-cases/UC-004-validate-placa.md — golden vectors ABC1D23, ABC1234\n */\nimport { stripPlaca } from '../../strip/index.js';\nimport type { DocumentFormat, Placa, ValidationResult } from '../../types/validation-result.js';\nimport { brandPlaca } from '../../types/validation-result.js';\nimport { detectPlacaFormat } from './detect.js';\nimport { PLACA_LENGTH } from './constants.js';\n\nexport {\n PLACA_GOLDEN_CONVERSION_FROM,\n PLACA_GOLDEN_CONVERSION_TO,\n PLACA_GOLDEN_LEGACY,\n PLACA_GOLDEN_MERCOSUL,\n PLACA_OFFICIAL_SOURCE_URL,\n} from './constants.js';\nexport { detectPlacaFormat, type PlacaFormat } from './detect.js';\nexport { isValidPlacaLegacy } from './legacy.js';\nexport { isValidPlacaMercosul } from './mercosul.js';\nexport { convertPlacaToMercosul } from './convert.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(input: string, stripped: string): FailedResult | null {\n if (stripped.length === 0) {\n return failure('EMPTY_INPUT', 'Placa input is empty');\n }\n\n const withoutSeparators = input.replace(/[-\\s]/g, '');\n if (/[^A-Za-z0-9]/.test(withoutSeparators)) {\n return failure('INVALID_CHARACTER', 'Placa contains invalid characters');\n }\n\n if (stripped.length !== PLACA_LENGTH) {\n return failure('INVALID_LENGTH', `Placa must have ${PLACA_LENGTH} characters after normalization`);\n }\n\n return null;\n}\n\nexport function isValidPlaca(input: string): boolean {\n return validatePlaca(input).ok;\n}\n\nexport function validatePlaca(input: string): ValidationResult<Placa> {\n const stripped = stripPlaca(input);\n const structural = validateStructure(input, stripped);\n if (structural) {\n return structural;\n }\n\n const format = detectPlacaFormat(input);\n if (format === 'unknown') {\n return failure('UNSUPPORTED_FORMAT', 'Placa does not match legacy or Mercosul format');\n }\n\n return { ok: true, value: brandPlaca(stripped), format: format as DocumentFormat };\n}\n"]}
1
+ {"version":3,"sources":["../src/core/placa/constants.ts","../src/core/placa/detect.ts","../src/core/placa/legacy.ts","../src/core/placa/mercosul.ts","../src/core/placa/convert.ts","../src/core/placa/index.ts"],"names":["failure"],"mappings":"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","file":"chunk-UG2YICWH.js","sourcesContent":["/**\n * License plate patterns — CONTRAN 729/2018 (legacy + Mercosul).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf\n * @see docs/use-cases/UC-004-validate-placa.md — golden vectors ABC1D23, ABC1234\n */\nexport const PLACA_LENGTH = 7;\nexport const PLACA_LEGACY_PATTERN = /^[A-Z]{3}[0-9]{4}$/;\nexport const PLACA_MERCOSUL_PATTERN = /^[A-Z]{3}[0-9][A-Z0-9][0-9]{2}$/;\nexport const PLACA_LEGACY_TO_MERCOSUL_MAP: Record<string, string> = {\n '0': 'A',\n '1': 'B',\n '2': 'C',\n '3': 'D',\n '4': 'E',\n '5': 'F',\n '6': 'G',\n '7': 'H',\n '8': 'I',\n '9': 'J',\n};\nexport const PLACA_GOLDEN_MERCOSUL = 'ABC1D23';\nexport const PLACA_GOLDEN_LEGACY = 'ABC1234';\nexport const PLACA_GOLDEN_CONVERSION_FROM = 'ABC1234';\nexport const PLACA_GOLDEN_CONVERSION_TO = 'ABC1C34';\nexport const PLACA_OFFICIAL_SOURCE_URL =\n 'https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf';\n","/**\n * License plate format detection — legacy vs Mercosul (CONTRAN).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf\n */\nimport { stripPlaca } from '../../strip/index.js';\nimport { PLACA_LENGTH, PLACA_LEGACY_PATTERN, PLACA_MERCOSUL_PATTERN } from './constants.js';\n\nexport type PlacaFormat = 'legacy' | 'mercosul' | 'unknown';\n\nexport function detectPlacaFormat(input: string): PlacaFormat {\n const stripped = stripPlaca(input);\n if (stripped.length !== PLACA_LENGTH) {\n return 'unknown';\n }\n if (PLACA_LEGACY_PATTERN.test(stripped)) {\n return 'legacy';\n }\n if (PLACA_MERCOSUL_PATTERN.test(stripped)) {\n return 'mercosul';\n }\n return 'unknown';\n}\n","/**\n * License plate — legacy format LLLNNNN (CONTRAN).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf\n */\nimport { stripPlaca } from '../../strip/index.js';\nimport { PLACA_LEGACY_PATTERN } from './constants.js';\n\nexport function isValidPlacaLegacy(input: string): boolean {\n const stripped = stripPlaca(input);\n return PLACA_LEGACY_PATTERN.test(stripped);\n}\n","/**\n * License plate — Mercosul format LLLNLNN (CONTRAN).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf\n */\nimport { stripPlaca } from '../../strip/index.js';\nimport { PLACA_MERCOSUL_PATTERN } from './constants.js';\n\nexport function isValidPlacaMercosul(input: string): boolean {\n const stripped = stripPlaca(input);\n return PLACA_MERCOSUL_PATTERN.test(stripped);\n}\n","/**\n * Legacy → Mercosul plate conversion (CONTRAN digit-to-letter table).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf\n */\nimport type { FormatResult } from '../../types/validation-result.js';\nimport { stripPlaca } from '../../strip/index.js';\nimport { PLACA_LEGACY_TO_MERCOSUL_MAP } from './constants.js';\nimport { detectPlacaFormat } from './detect.js';\n\ntype FailedResult = Extract<FormatResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message };\n}\n\nexport function convertPlacaToMercosul(input: string): FormatResult {\n const stripped = stripPlaca(input);\n if (stripped.length === 0) {\n return failure('EMPTY_INPUT', 'Placa input is empty');\n }\n\n if (detectPlacaFormat(input) !== 'legacy') {\n return failure('UNSUPPORTED_FORMAT', 'Conversion requires a valid legacy plate (LLLNNNN)');\n }\n\n const prefix = stripped.slice(0, 4);\n const mapped = PLACA_LEGACY_TO_MERCOSUL_MAP[stripped.charAt(4)];\n const suffix = stripped.slice(5);\n return { ok: true, formatted: `${prefix}${mapped}${suffix}` };\n}\n","/**\n * License plate validation — legacy (LLLNNNN) + Mercosul (LLLNLNN). CONTRAN 729/2018.\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7292018consolidada.pdf\n * @see docs/use-cases/UC-004-validate-placa.md — golden vectors ABC1D23, ABC1234\n */\nimport { stripPlaca } from '../../strip/index.js';\nimport type { DocumentFormat, Placa, ValidationResult } from '../../types/validation-result.js';\nimport { brandPlaca } from '../../types/validation-result.js';\nimport { detectPlacaFormat } from './detect.js';\nimport { PLACA_LENGTH } from './constants.js';\n\nexport {\n PLACA_GOLDEN_CONVERSION_FROM,\n PLACA_GOLDEN_CONVERSION_TO,\n PLACA_GOLDEN_LEGACY,\n PLACA_GOLDEN_MERCOSUL,\n PLACA_OFFICIAL_SOURCE_URL,\n} from './constants.js';\nexport { detectPlacaFormat, type PlacaFormat } from './detect.js';\nexport { isValidPlacaLegacy } from './legacy.js';\nexport { isValidPlacaMercosul } from './mercosul.js';\nexport { convertPlacaToMercosul } from './convert.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(input: string, stripped: string): FailedResult | null {\n if (stripped.length === 0) {\n return failure('EMPTY_INPUT', 'Placa input is empty');\n }\n\n const withoutSeparators = input.replace(/[-\\s]/g, '');\n if (/[^A-Za-z0-9]/.test(withoutSeparators)) {\n return failure('INVALID_CHARACTER', 'Placa contains invalid characters');\n }\n\n if (stripped.length !== PLACA_LENGTH) {\n return failure('INVALID_LENGTH', `Placa must have ${PLACA_LENGTH} characters after normalization`);\n }\n\n return null;\n}\n\nexport function isValidPlaca(input: string): boolean {\n return validatePlaca(input).ok;\n}\n\nexport function validatePlaca(input: string): ValidationResult<Placa> {\n const stripped = stripPlaca(input);\n const structural = validateStructure(input, stripped);\n if (structural) {\n return structural;\n }\n\n const format = detectPlacaFormat(input);\n if (format === 'unknown') {\n return failure('UNSUPPORTED_FORMAT', 'Placa does not match legacy or Mercosul format');\n }\n\n return { ok: true, value: brandPlaca(stripped), format: format as DocumentFormat };\n}\n"]}
@@ -6,8 +6,8 @@ var metadata_default = {
6
6
  endpoints: [
7
7
  "https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv"
8
8
  ],
9
- capturadoEm: "2026-06-26",
10
- atualizadoEm: "2026-06-26T13:07:59.162Z",
9
+ capturadoEm: "2026-06-30",
10
+ atualizadoEm: "2026-06-30T06:52:28.251Z",
11
11
  contagens: {
12
12
  bancos: 469
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:07:59.162Z"
23
+ ultimaExecucao: "2026-06-30T06:52:28.251Z"
24
24
  },
25
25
  documentacao: "docs/OFFICIAL-SOURCES.md#bacen-banks"
26
26
  };
27
27
 
28
28
  export { metadata_default };
29
- //# sourceMappingURL=chunk-X5TJG22D.js.map
30
- //# sourceMappingURL=chunk-X5TJG22D.js.map
29
+ //# sourceMappingURL=chunk-VHG4CIYB.js.map
30
+ //# sourceMappingURL=chunk-VHG4CIYB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bancos/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAQ,wBAAA;AAAA,EACR,KAAA,EAAS,wCAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,MAAA,EAAU;AAAA,GACZ;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-X5TJG22D.js","sourcesContent":["{\n \"id\": \"bancos\",\n \"nome\": \"Bacen STR Participants\",\n \"fonte\": \"Banco Central — Participantes STR\",\n \"endpoints\": [\n \"https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv\"\n ],\n \"capturadoEm\": \"2026-06-26\",\n \"atualizadoEm\": \"2026-06-26T13:07:59.162Z\",\n \"contagens\": {\n \"bancos\": 469\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:07:59.162Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#bacen-banks\"\n}\n"]}
1
+ {"version":3,"sources":["../src/bancos/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAQ,wBAAA;AAAA,EACR,KAAA,EAAS,wCAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,MAAA,EAAU;AAAA,GACZ;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-VHG4CIYB.js","sourcesContent":["{\n \"id\": \"bancos\",\n \"nome\": \"Bacen STR Participants\",\n \"fonte\": \"Banco Central — Participantes STR\",\n \"endpoints\": [\n \"https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv\"\n ],\n \"capturadoEm\": \"2026-06-30\",\n \"atualizadoEm\": \"2026-06-30T06:52:28.251Z\",\n \"contagens\": {\n \"bancos\": 469\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-30T06:52:28.251Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#bacen-banks\"\n}\n"]}
@@ -1,10 +1,11 @@
1
1
  import { stripProcessoJudicial } from './chunk-A4QBLVVO.js';
2
- import { normalizeTelefoneDigits, extractTelefoneDigits } from './chunk-HZ4UGWFE.js';
2
+ import { normalizeTelefoneDigits, extractTelefoneDigits } from './chunk-OZHEHUBV.js';
3
3
  import { stripPisPasep } from './chunk-HORKZQIH.js';
4
4
  import { stripInscricaoEstadual } from './chunk-OHBSYBG7.js';
5
5
  import { stripIeSpRural } from './chunk-FGOPYU2L.js';
6
- import { stripTituloEleitor, stripRenavam, stripCnh, stripPlaca, stripCep } from './chunk-YYHS5WQN.js';
6
+ import { stripTituloEleitor, stripRenavam, stripCnh, stripPlaca, stripCep } from './chunk-6BWOYNQD.js';
7
7
  import { stripNfeChave } from './chunk-4SNBZFS5.js';
8
+ import { stripPixKey } from './chunk-JUQMINSZ.js';
8
9
  import { stripCpf } from './chunk-UCJPSJN5.js';
9
10
  import { stripCnpj } from './chunk-EB3G4IG6.js';
10
11
 
@@ -66,6 +67,19 @@ function ieProdutorRuralFix(value, fixes) {
66
67
  }
67
68
  return { value: stripIeSpRural(upper), fixes };
68
69
  }
70
+ function pixFix(value, fixes) {
71
+ const stripped = stripPixKey(value);
72
+ if (value !== value.toLowerCase() && stripped === value.toLowerCase()) {
73
+ fixes.push("lowercased");
74
+ }
75
+ if (stripped.replace(/\D/g, "") !== value.replace(/\D/g, "")) {
76
+ fixes.push("removed_non_digits");
77
+ }
78
+ if (/[\s()-]/.test(value)) {
79
+ fixes.push("removed_mask_chars");
80
+ }
81
+ return { value: stripped, fixes };
82
+ }
69
83
  function applyFixes(raw, type) {
70
84
  const { value: trimmed, fixes } = trimFix(raw);
71
85
  switch (type) {
@@ -92,6 +106,8 @@ function applyFixes(raw, type) {
92
106
  return telefoneFix(trimmed, fixes);
93
107
  case "inscricao-estadual-produtor-rural":
94
108
  return ieProdutorRuralFix(trimmed, fixes);
109
+ case "pix":
110
+ return pixFix(trimmed, fixes);
95
111
  default: {
96
112
  const _exhaustive = type;
97
113
  return { value: _exhaustive, fixes };
@@ -133,6 +149,8 @@ function stripForType(value, type) {
133
149
  return stripInscricaoEstadual(value);
134
150
  case "inscricao-estadual-produtor-rural":
135
151
  return stripIeSpRural(value);
152
+ case "pix":
153
+ return stripPixKey(value);
136
154
  default: {
137
155
  const _exhaustive = type;
138
156
  return _exhaustive;
@@ -141,5 +159,5 @@ function stripForType(value, type) {
141
159
  }
142
160
 
143
161
  export { applyFixes, stripForType };
144
- //# sourceMappingURL=chunk-BLSDFC3C.js.map
145
- //# sourceMappingURL=chunk-BLSDFC3C.js.map
162
+ //# sourceMappingURL=chunk-XYNX7PUL.js.map
163
+ //# sourceMappingURL=chunk-XYNX7PUL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/sanitize/fixes.ts"],"names":[],"mappings":"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","file":"chunk-XYNX7PUL.js","sourcesContent":["import { stripCep } from '../strip/cep.js';\nimport { stripCnh } from '../strip/cnh.js';\nimport { stripCnpj } from '../strip/cnpj.js';\nimport { stripCpf } from '../strip/cpf.js';\nimport { stripIeSpRural } from '../strip/inscricao-estadual-produtor-rural.js';\nimport { stripInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { stripNfeChave } from '../strip/nfe-chave.js';\nimport { stripPisPasep } from '../strip/pis-pasep.js';\nimport { stripPlaca } from '../strip/placa.js';\nimport { stripPixKey } from '../strip/pix.js';\nimport { stripProcessoJudicial } from '../strip/processo-judicial.js';\nimport { stripRenavam } from '../strip/renavam.js';\nimport { stripTituloEleitor } from '../strip/titulo-eleitor.js';\nimport { extractTelefoneDigits, normalizeTelefoneDigits } from '../strip/telefone.js';\n\nexport type SanitizableDocumentType =\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\nexport type FixResult = {\n value: string;\n fixes: string[];\n};\n\nfunction trimFix(raw: string): FixResult {\n const trimmed = raw.trim();\n const fixes: string[] = [];\n if (trimmed !== raw) {\n fixes.push('trimmed');\n }\n return { value: trimmed, fixes };\n}\n\nfunction digitsFix(value: string, fixes: string[]): FixResult {\n const digits = value.replace(/\\D/g, '');\n if (digits !== value) {\n fixes.push('removed_non_digits');\n }\n return { value: digits, fixes };\n}\n\nfunction upperAndStripSeparators(value: string, fixes: string[]): FixResult {\n const upper = value.toUpperCase();\n if (upper !== value) {\n fixes.push('uppercased');\n }\n const stripped = upper.replace(/[^A-Z0-9]/g, '');\n if (stripped !== upper) {\n fixes.push('removed_separators');\n }\n return { value: stripped, fixes };\n}\n\nfunction placaFix(value: string, fixes: string[]): FixResult {\n const upper = value.toUpperCase();\n if (upper !== value) {\n fixes.push('uppercased');\n }\n if (/[-.\\s/]/.test(value)) {\n fixes.push('removed_separators');\n }\n return { value: stripPlaca(upper), fixes };\n}\n\nfunction telefoneFix(value: string, fixes: string[]): FixResult {\n if (/[\\s()-]/.test(value)) {\n fixes.push('removed_mask_chars');\n }\n const digitsOnly = extractTelefoneDigits(value);\n const normalized = normalizeTelefoneDigits(value);\n if (normalized !== digitsOnly && normalized.length > 0) {\n fixes.push('normalized_national');\n }\n return { value: normalized, fixes };\n}\n\nfunction ieProdutorRuralFix(value: string, fixes: string[]): FixResult {\n const upper = value.toUpperCase();\n if (upper !== value) {\n fixes.push('uppercased');\n }\n if (/^[Pp]/.test(upper)) {\n fixes.push('preserved_p_prefix');\n }\n return { value: stripIeSpRural(upper), fixes };\n}\n\nfunction pixFix(value: string, fixes: string[]): FixResult {\n const stripped = stripPixKey(value);\n if (value !== value.toLowerCase() && stripped === value.toLowerCase()) {\n fixes.push('lowercased');\n }\n if (stripped.replace(/\\D/g, '') !== value.replace(/\\D/g, '')) {\n fixes.push('removed_non_digits');\n }\n if (/[\\s()-]/.test(value)) {\n fixes.push('removed_mask_chars');\n }\n return { value: stripped, fixes };\n}\n\nexport function applyFixes(raw: string, type: SanitizableDocumentType): FixResult {\n const { value: trimmed, fixes } = trimFix(raw);\n\n switch (type) {\n case 'cpf':\n case 'cep':\n case 'pis-pasep':\n case 'cnh':\n case 'renavam':\n case 'nfe-chave':\n case 'cartao-credito':\n case 'ean':\n case 'boleto':\n case 'titulo-eleitor':\n case 'processo-judicial':\n case 'inscricao-estadual':\n return digitsFix(trimmed, fixes);\n case 'rg':\n return upperAndStripSeparators(trimmed, fixes);\n case 'cnpj':\n return upperAndStripSeparators(trimmed, fixes);\n case 'placa':\n return placaFix(trimmed, fixes);\n case 'telefone':\n return telefoneFix(trimmed, fixes);\n case 'inscricao-estadual-produtor-rural':\n return ieProdutorRuralFix(trimmed, fixes);\n case 'pix':\n return pixFix(trimmed, fixes);\n default: {\n const _exhaustive: never = type;\n return { value: _exhaustive, fixes };\n }\n }\n}\n\n/** Validates canonical strip output matches fix pipeline (used in tests). */\nexport function stripForType(value: string, type: SanitizableDocumentType): string {\n switch (type) {\n case 'cpf':\n return stripCpf(value);\n case 'cnpj':\n return stripCnpj(value);\n case 'cep':\n return stripCep(value);\n case 'placa':\n return stripPlaca(value);\n case 'pis-pasep':\n return stripPisPasep(value);\n case 'telefone':\n return normalizeTelefoneDigits(value);\n case 'cnh':\n return stripCnh(value);\n case 'renavam':\n return stripRenavam(value);\n case 'titulo-eleitor':\n return stripTituloEleitor(value);\n case 'processo-judicial':\n return stripProcessoJudicial(value);\n case 'rg':\n return value.toUpperCase().replace(/[^A-Z0-9]/g, '');\n case 'nfe-chave':\n return stripNfeChave(value);\n case 'boleto':\n return value.replace(/\\D/g, '');\n case 'cartao-credito':\n case 'ean':\n return value.replace(/\\D/g, '');\n case 'inscricao-estadual':\n return stripInscricaoEstadual(value);\n case 'inscricao-estadual-produtor-rural':\n return stripIeSpRural(value);\n case 'pix':\n return stripPixKey(value);\n default: {\n const _exhaustive: never = type;\n return _exhaustive;\n }\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { validateRenavam, RENAVAM_NUMERIC_PATTERN, RENAVAM_LENGTH } from './chunk-F6LVFAJT.js';
1
+ import { validateRenavam, RENAVAM_NUMERIC_PATTERN, RENAVAM_LENGTH } from './chunk-4NS47CJG.js';
2
2
 
3
3
  // src/core/renavam/mask.ts
4
4
  function applyRenavamCanonicalFormat(canonical) {
@@ -18,5 +18,5 @@ function formatRenavam(input) {
18
18
  }
19
19
 
20
20
  export { formatRenavam };
21
- //# sourceMappingURL=chunk-N6CALNFU.js.map
22
- //# sourceMappingURL=chunk-N6CALNFU.js.map
21
+ //# sourceMappingURL=chunk-YC4GZZJP.js.map
22
+ //# sourceMappingURL=chunk-YC4GZZJP.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/renavam/mask.ts","../src/format/renavam.ts"],"names":[],"mappings":";;;AAMO,SAAS,4BAA4B,SAAA,EAA2B;AACrE,EAAA,IAAI,CAAC,uBAAA,CAAwB,IAAA,CAAK,SAAS,CAAA,EAAG;AAC5C,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,cAAc,CAAA,iBAAA,CAAmB,CAAA;AAAA,EAChF;AACA,EAAA,OAAO,SAAA;AACT;;;ACPO,SAAS,cAAc,KAAA,EAA6B;AACzD,EAAA,MAAM,MAAA,GAAS,gBAAgB,KAAK,CAAA;AACpC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,2BAAA,CAA4B,MAAA,CAAO,KAAK,CAAA,EAAE;AAC1E","file":"chunk-N6CALNFU.js","sourcesContent":["import { RENAVAM_LENGTH, RENAVAM_NUMERIC_PATTERN } from './constants.js';\n\n/**\n * Official system format — 11 contiguous digits (BR-RENAVAM-005).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/arquivos-senatran/portarias/2013/portaria0272013.pdf\n */\nexport function applyRenavamCanonicalFormat(canonical: string): string {\n if (!RENAVAM_NUMERIC_PATTERN.test(canonical)) {\n throw new Error(`RENAVAM must have exactly ${RENAVAM_LENGTH} digits to format`);\n }\n return canonical;\n}\n","import { applyRenavamCanonicalFormat } from '../core/renavam/mask.js';\nimport { validateRenavam } from '../core/renavam/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatRenavam(input: string): FormatResult {\n const result = validateRenavam(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyRenavamCanonicalFormat(result.value) };\n}\n"]}
1
+ {"version":3,"sources":["../src/core/renavam/mask.ts","../src/format/renavam.ts"],"names":[],"mappings":";;;AAMO,SAAS,4BAA4B,SAAA,EAA2B;AACrE,EAAA,IAAI,CAAC,uBAAA,CAAwB,IAAA,CAAK,SAAS,CAAA,EAAG;AAC5C,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,cAAc,CAAA,iBAAA,CAAmB,CAAA;AAAA,EAChF;AACA,EAAA,OAAO,SAAA;AACT;;;ACPO,SAAS,cAAc,KAAA,EAA6B;AACzD,EAAA,MAAM,MAAA,GAAS,gBAAgB,KAAK,CAAA;AACpC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,2BAAA,CAA4B,MAAA,CAAO,KAAK,CAAA,EAAE;AAC1E","file":"chunk-YC4GZZJP.js","sourcesContent":["import { RENAVAM_LENGTH, RENAVAM_NUMERIC_PATTERN } from './constants.js';\n\n/**\n * Official system format — 11 contiguous digits (BR-RENAVAM-005).\n * @see https://www.gov.br/transportes/pt-br/assuntos/transito/arquivos-senatran/portarias/2013/portaria0272013.pdf\n */\nexport function applyRenavamCanonicalFormat(canonical: string): string {\n if (!RENAVAM_NUMERIC_PATTERN.test(canonical)) {\n throw new Error(`RENAVAM must have exactly ${RENAVAM_LENGTH} digits to format`);\n }\n return canonical;\n}\n","import { applyRenavamCanonicalFormat } from '../core/renavam/mask.js';\nimport { validateRenavam } from '../core/renavam/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatRenavam(input: string): FormatResult {\n const result = validateRenavam(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyRenavamCanonicalFormat(result.value) };\n}\n"]}
@@ -1,17 +1,17 @@
1
1
  import { formatProcessoJudicial } from './chunk-MAMBSTTO.js';
2
- import { formatTelefone } from './chunk-S4WEXFHC.js';
3
- import { formatTituloEleitor } from './chunk-4HQ4J2J5.js';
4
- import { formatRenavam } from './chunk-N6CALNFU.js';
2
+ import { formatTelefone } from './chunk-2COBLRJZ.js';
3
+ import { formatTituloEleitor } from './chunk-A255RZZ7.js';
4
+ import { formatPlaca } from './chunk-KCRWHMDY.js';
5
+ import { formatRenavam } from './chunk-YC4GZZJP.js';
5
6
  import { formatNfeChave } from './chunk-6KHTKD5U.js';
6
7
  import { formatPisPasep } from './chunk-INPLK35M.js';
7
- import { formatPixKey } from './chunk-NQIKXTMI.js';
8
- import { formatPlaca } from './chunk-2BNGYQFQ.js';
8
+ import { formatPixKey } from './chunk-LKDZEPWZ.js';
9
9
  import { formatIeProdutorRural } from './chunk-5ZJMYR63.js';
10
- import { formatCpf } from './chunk-7HEMXLDS.js';
10
+ import { formatCpf } from './chunk-GQRHLW5W.js';
11
11
  import { formatEan } from './chunk-WIBYIZ4N.js';
12
- import { formatCep } from './chunk-56ZN3TBH.js';
13
- import { formatCnh } from './chunk-3FDHWX2H.js';
14
- import { formatCnpj } from './chunk-ZL5RDZJM.js';
12
+ import { formatCep } from './chunk-DXKHCIMV.js';
13
+ import { formatCnh } from './chunk-BTRWDUZF.js';
14
+ import { formatCnpj } from './chunk-HEPUV3XR.js';
15
15
  import { formatRg } from './chunk-6F3A3NT4.js';
16
16
  import { formatInscricaoEstadual } from './chunk-OHBSYBG7.js';
17
17
  import { formatBoleto } from './chunk-S6ER3Y3B.js';
@@ -119,5 +119,5 @@ function dispatchMask(raw, type, options) {
119
119
  }
120
120
 
121
121
  export { MASKABLE_DOCUMENT_TYPES, isMaskableDocumentType, mask, maskRuntime };
122
- //# sourceMappingURL=chunk-MOMQLTSD.js.map
123
- //# sourceMappingURL=chunk-MOMQLTSD.js.map
122
+ //# sourceMappingURL=chunk-YFLJB247.js.map
123
+ //# sourceMappingURL=chunk-YFLJB247.js.map