@br-validators/core 0.12.0-alpha.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/README.md +84 -12
  2. package/dist/bancos.d.ts +41 -0
  3. package/dist/bancos.js +3328 -0
  4. package/dist/bancos.js.map +1 -0
  5. package/dist/batch.d.ts +28 -0
  6. package/dist/batch.js +30 -0
  7. package/dist/batch.js.map +1 -0
  8. package/dist/boleto.d.ts +58 -5
  9. package/dist/boleto.js +6 -3
  10. package/dist/brcode.d.ts +15 -3
  11. package/dist/brcode.js +8 -8
  12. package/dist/cartao-credito.d.ts +2 -2
  13. package/dist/cartao-credito.js +3 -3
  14. package/dist/cep.d.ts +2 -2
  15. package/dist/cep.js +4 -4
  16. package/dist/{chunk-WPL47PWJ.js → chunk-3LMDBXU6.js} +3 -3
  17. package/dist/{chunk-WPL47PWJ.js.map → chunk-3LMDBXU6.js.map} +1 -1
  18. package/dist/chunk-4J5IMD7B.js +3 -0
  19. package/dist/chunk-4J5IMD7B.js.map +1 -0
  20. package/dist/{chunk-BFZPCEYB.js → chunk-54UWHK5L.js} +3 -3
  21. package/dist/{chunk-BFZPCEYB.js.map → chunk-54UWHK5L.js.map} +1 -1
  22. package/dist/chunk-5V6N4JWQ.js +135 -0
  23. package/dist/chunk-5V6N4JWQ.js.map +1 -0
  24. package/dist/{chunk-F6PTZY4O.js → chunk-63G7QO73.js} +3 -3
  25. package/dist/{chunk-F6PTZY4O.js.map → chunk-63G7QO73.js.map} +1 -1
  26. package/dist/{chunk-3QP6R46N.js → chunk-665E36SC.js} +4 -4
  27. package/dist/{chunk-3QP6R46N.js.map → chunk-665E36SC.js.map} +1 -1
  28. package/dist/{chunk-AK5GVYQ5.js → chunk-ANWQBKGN.js} +3 -3
  29. package/dist/{chunk-AK5GVYQ5.js.map → chunk-ANWQBKGN.js.map} +1 -1
  30. package/dist/{chunk-D36RM7OD.js → chunk-AO6UTQ4A.js} +3 -3
  31. package/dist/{chunk-D36RM7OD.js.map → chunk-AO6UTQ4A.js.map} +1 -1
  32. package/dist/chunk-ASQ2XIN2.js +99 -0
  33. package/dist/chunk-ASQ2XIN2.js.map +1 -0
  34. package/dist/chunk-AU6TW3GH.js +136 -0
  35. package/dist/chunk-AU6TW3GH.js.map +1 -0
  36. package/dist/{chunk-XW5G2RAL.js → chunk-B6A7VF4R.js} +3 -3
  37. package/dist/{chunk-XW5G2RAL.js.map → chunk-B6A7VF4R.js.map} +1 -1
  38. package/dist/{chunk-Q7B5VOPW.js → chunk-BA3FAVK4.js} +243 -37
  39. package/dist/chunk-BA3FAVK4.js.map +1 -0
  40. package/dist/{chunk-Y6IW2LMW.js → chunk-CDNOUZEI.js} +3 -3
  41. package/dist/{chunk-Y6IW2LMW.js.map → chunk-CDNOUZEI.js.map} +1 -1
  42. package/dist/{chunk-XUO7FV6Z.js → chunk-CSRBRKXY.js} +3 -3
  43. package/dist/{chunk-XUO7FV6Z.js.map → chunk-CSRBRKXY.js.map} +1 -1
  44. package/dist/{chunk-DJUANFIK.js → chunk-CSVGWTCG.js} +3 -3
  45. package/dist/{chunk-DJUANFIK.js.map → chunk-CSVGWTCG.js.map} +1 -1
  46. package/dist/chunk-E2EFGMWA.js +200 -0
  47. package/dist/chunk-E2EFGMWA.js.map +1 -0
  48. package/dist/chunk-EFEE6CMO.js +24091 -0
  49. package/dist/chunk-EFEE6CMO.js.map +1 -0
  50. package/dist/{chunk-KSLDM5AD.js → chunk-EVULAGR5.js} +3 -3
  51. package/dist/{chunk-KSLDM5AD.js.map → chunk-EVULAGR5.js.map} +1 -1
  52. package/dist/{chunk-YXELVV37.js → chunk-FBARVLLP.js} +4 -4
  53. package/dist/{chunk-YXELVV37.js.map → chunk-FBARVLLP.js.map} +1 -1
  54. package/dist/chunk-FOP5LO7W.js +131 -0
  55. package/dist/chunk-FOP5LO7W.js.map +1 -0
  56. package/dist/{chunk-MK7OJUF5.js → chunk-H3MLGGFI.js} +8 -8
  57. package/dist/{chunk-MK7OJUF5.js.map → chunk-H3MLGGFI.js.map} +1 -1
  58. package/dist/{chunk-WLE2ENQA.js → chunk-I66ZRSEN.js} +3 -3
  59. package/dist/{chunk-WLE2ENQA.js.map → chunk-I66ZRSEN.js.map} +1 -1
  60. package/dist/{chunk-GRDUTHNX.js → chunk-IYOPXJLY.js} +3 -3
  61. package/dist/{chunk-GRDUTHNX.js.map → chunk-IYOPXJLY.js.map} +1 -1
  62. package/dist/chunk-JCWQDTZB.js +41 -0
  63. package/dist/chunk-JCWQDTZB.js.map +1 -0
  64. package/dist/{chunk-4Y2FBO57.js → chunk-JKDU7QYP.js} +3 -3
  65. package/dist/{chunk-4Y2FBO57.js.map → chunk-JKDU7QYP.js.map} +1 -1
  66. package/dist/{chunk-KH7DWOUA.js → chunk-JLCQ7MGC.js} +3 -3
  67. package/dist/{chunk-KH7DWOUA.js.map → chunk-JLCQ7MGC.js.map} +1 -1
  68. package/dist/chunk-KBNWI6GE.js +3 -0
  69. package/dist/chunk-KBNWI6GE.js.map +1 -0
  70. package/dist/chunk-KLPONHBL.js +3 -0
  71. package/dist/chunk-KLPONHBL.js.map +1 -0
  72. package/dist/chunk-KTEQPYYN.js +31 -0
  73. package/dist/chunk-KTEQPYYN.js.map +1 -0
  74. package/dist/{chunk-CDGRHI7W.js → chunk-LAEUXOF6.js} +3 -3
  75. package/dist/{chunk-CDGRHI7W.js.map → chunk-LAEUXOF6.js.map} +1 -1
  76. package/dist/chunk-LRUZVPLR.js +93 -0
  77. package/dist/chunk-LRUZVPLR.js.map +1 -0
  78. package/dist/{chunk-ZAUZRIOU.js → chunk-MESOO5GZ.js} +3 -3
  79. package/dist/{chunk-ZAUZRIOU.js.map → chunk-MESOO5GZ.js.map} +1 -1
  80. package/dist/chunk-MKYCKCZ6.js +100 -0
  81. package/dist/chunk-MKYCKCZ6.js.map +1 -0
  82. package/dist/chunk-N5CER3QZ.js +128 -0
  83. package/dist/chunk-N5CER3QZ.js.map +1 -0
  84. package/dist/chunk-N6RQICAP.js +220 -0
  85. package/dist/chunk-N6RQICAP.js.map +1 -0
  86. package/dist/{chunk-MSLJF2FM.js → chunk-NUQSMT4Y.js} +2 -2
  87. package/dist/chunk-NUQSMT4Y.js.map +1 -0
  88. package/dist/{chunk-KQDLIGSG.js → chunk-P2KNN6ZR.js} +3 -3
  89. package/dist/{chunk-KQDLIGSG.js.map → chunk-P2KNN6ZR.js.map} +1 -1
  90. package/dist/{chunk-JZNTCZMV.js → chunk-PCP77SLS.js} +34 -18
  91. package/dist/chunk-PCP77SLS.js.map +1 -0
  92. package/dist/{chunk-G2Y63PIF.js → chunk-PNPESCSP.js} +3 -3
  93. package/dist/{chunk-G2Y63PIF.js.map → chunk-PNPESCSP.js.map} +1 -1
  94. package/dist/{chunk-LYBFUKHR.js → chunk-RMTHCPIV.js} +4 -4
  95. package/dist/{chunk-LYBFUKHR.js.map → chunk-RMTHCPIV.js.map} +1 -1
  96. package/dist/{chunk-2JJS46FM.js → chunk-TE6NSONR.js} +3 -3
  97. package/dist/{chunk-2JJS46FM.js.map → chunk-TE6NSONR.js.map} +1 -1
  98. package/dist/{chunk-NHLLC6WH.js → chunk-TJCE4TVX.js} +4 -4
  99. package/dist/{chunk-NHLLC6WH.js.map → chunk-TJCE4TVX.js.map} +1 -1
  100. package/dist/chunk-UCNPXHIJ.js +32 -0
  101. package/dist/chunk-UCNPXHIJ.js.map +1 -0
  102. package/dist/{chunk-WCQUQ2WX.js → chunk-V7UJ55KW.js} +47 -5
  103. package/dist/chunk-V7UJ55KW.js.map +1 -0
  104. package/dist/{chunk-IQGRFAQV.js → chunk-VSW3NBJQ.js} +3 -3
  105. package/dist/{chunk-IQGRFAQV.js.map → chunk-VSW3NBJQ.js.map} +1 -1
  106. package/dist/{chunk-6QJFMOIX.js → chunk-VWVQWN2G.js} +3 -3
  107. package/dist/{chunk-6QJFMOIX.js.map → chunk-VWVQWN2G.js.map} +1 -1
  108. package/dist/chunk-XADVBV73.js +30 -0
  109. package/dist/chunk-XADVBV73.js.map +1 -0
  110. package/dist/{chunk-FXLVNCG3.js → chunk-XWHGXSQV.js} +3 -3
  111. package/dist/{chunk-FXLVNCG3.js.map → chunk-XWHGXSQV.js.map} +1 -1
  112. package/dist/{chunk-G32U6YQ5.js → chunk-YD5MPZWY.js} +3 -3
  113. package/dist/{chunk-G32U6YQ5.js.map → chunk-YD5MPZWY.js.map} +1 -1
  114. package/dist/{chunk-US4OLTJ2.js → chunk-YNVMVDFN.js} +3 -3
  115. package/dist/{chunk-US4OLTJ2.js.map → chunk-YNVMVDFN.js.map} +1 -1
  116. package/dist/cnh.d.ts +2 -2
  117. package/dist/cnh.js +4 -4
  118. package/dist/cnpj.d.ts +2 -2
  119. package/dist/cnpj.js +5 -5
  120. package/dist/compare.d.ts +16 -0
  121. package/dist/compare.js +33 -0
  122. package/dist/compare.js.map +1 -0
  123. package/dist/cpf.d.ts +2 -2
  124. package/dist/cpf.js +4 -4
  125. package/dist/data-catalog.d.ts +14 -0
  126. package/dist/data-catalog.js +25 -0
  127. package/dist/data-catalog.js.map +1 -0
  128. package/dist/detect.d.ts +1 -1
  129. package/dist/detect.js +23 -20
  130. package/dist/diff.d.ts +16 -0
  131. package/dist/diff.js +33 -0
  132. package/dist/diff.js.map +1 -0
  133. package/dist/generate.d.ts +24 -3
  134. package/dist/generate.js +37 -27
  135. package/dist/ibge.d.ts +65 -0
  136. package/dist/ibge.js +28174 -0
  137. package/dist/ibge.js.map +1 -0
  138. package/dist/{index-CZLo9YOT.d.ts → index-BEJFgDXj.d.ts} +1 -1
  139. package/dist/index.d.ts +15 -9
  140. package/dist/index.js +61 -49
  141. package/dist/index.js.map +1 -1
  142. package/dist/{inscricao-estadual-produtor-rural-CfWUaggb.d.ts → inscricao-estadual-produtor-rural-BXFVQscj.d.ts} +1 -1
  143. package/dist/inscricao-estadual-produtor-rural.d.ts +2 -2
  144. package/dist/inscricao-estadual-produtor-rural.js +3 -3
  145. package/dist/inscricao-estadual.d.ts +3 -3
  146. package/dist/inscricao-estadual.js +4 -4
  147. package/dist/mask.d.ts +13 -0
  148. package/dist/mask.js +41 -0
  149. package/dist/mask.js.map +1 -0
  150. package/dist/nfe-chave.d.ts +2 -2
  151. package/dist/nfe-chave.js +4 -3
  152. package/dist/pis-pasep.d.ts +2 -2
  153. package/dist/pis-pasep.js +3 -3
  154. package/dist/{pix-ddldLlb7.d.ts → pix-B4habHLG.d.ts} +1 -1
  155. package/dist/pix.d.ts +2 -2
  156. package/dist/pix.js +9 -8
  157. package/dist/placa.d.ts +2 -2
  158. package/dist/placa.js +4 -4
  159. package/dist/renavam.d.ts +2 -2
  160. package/dist/renavam.js +4 -4
  161. package/dist/sanitize.d.ts +2 -2
  162. package/dist/sanitize.js +21 -17
  163. package/dist/telefone.d.ts +34 -3
  164. package/dist/telefone.js +4 -3
  165. package/dist/titulo-eleitor.d.ts +2 -2
  166. package/dist/titulo-eleitor.js +4 -4
  167. package/dist/types-CBIZxgfG.d.ts +28 -0
  168. package/dist/types-MXifBcV5.d.ts +10 -0
  169. package/dist/{validation-result-BhQE-1_O.d.ts → validation-result-BaI2Xder.d.ts} +24 -5
  170. package/package.json +36 -1
  171. package/dist/chunk-4W4OKLSZ.js +0 -366
  172. package/dist/chunk-4W4OKLSZ.js.map +0 -1
  173. package/dist/chunk-5UL3M7IU.js +0 -192
  174. package/dist/chunk-5UL3M7IU.js.map +0 -1
  175. package/dist/chunk-CSZCIOGA.js +0 -187
  176. package/dist/chunk-CSZCIOGA.js.map +0 -1
  177. package/dist/chunk-JZNTCZMV.js.map +0 -1
  178. package/dist/chunk-MSLJF2FM.js.map +0 -1
  179. package/dist/chunk-Q7B5VOPW.js.map +0 -1
  180. package/dist/chunk-WCQUQ2WX.js.map +0 -1
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=chunk-KBNWI6GE.js.map
3
+ //# sourceMappingURL=chunk-KBNWI6GE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-KBNWI6GE.js"}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=chunk-KLPONHBL.js.map
3
+ //# sourceMappingURL=chunk-KLPONHBL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-KLPONHBL.js"}
@@ -0,0 +1,31 @@
1
+ // src/core/telefone/data/ddd-metadata.json
2
+ var ddd_metadata_default = {
3
+ id: "telefone-ddd",
4
+ nome: "Anatel DDD Geographic Lookup",
5
+ fonte: "Anatel Plano de Numera\xE7\xE3o + IBGE municipios",
6
+ endpoints: [
7
+ "https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais",
8
+ "packages/br-validators/src/ibge/data/municipios.json"
9
+ ],
10
+ capturadoEm: "2026-06-23",
11
+ atualizadoEm: "2026-06-23T14:34:40.909Z",
12
+ contagens: {
13
+ ddds: 67
14
+ },
15
+ alteracoes: {
16
+ adicionados: 67,
17
+ removidos: 0,
18
+ alterados: 0,
19
+ comparadoCom: null
20
+ },
21
+ verificacao: {
22
+ agendamento: "semanal",
23
+ workflow: "data-refresh-bot.yml",
24
+ ultimaExecucao: "2026-06-23T14:34:40.909Z"
25
+ },
26
+ documentacao: "docs/OFFICIAL-SOURCES.md#anatel-ddd-lookup"
27
+ };
28
+
29
+ export { ddd_metadata_default };
30
+ //# sourceMappingURL=chunk-KTEQPYYN.js.map
31
+ //# sourceMappingURL=chunk-KTEQPYYN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/telefone/data/ddd-metadata.json"],"names":[],"mappings":";AAAA,IAAA,oBAAA,GAAA;AAAA,EACE,EAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAQ,8BAAA;AAAA,EACR,KAAA,EAAS,mDAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX,8EAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,IAAA,EAAQ;AAAA,GACV;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,EAAA;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-KTEQPYYN.js","sourcesContent":["{\n \"id\": \"telefone-ddd\",\n \"nome\": \"Anatel DDD Geographic Lookup\",\n \"fonte\": \"Anatel Plano de Numeração + IBGE municipios\",\n \"endpoints\": [\n \"https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais\",\n \"packages/br-validators/src/ibge/data/municipios.json\"\n ],\n \"capturadoEm\": \"2026-06-23\",\n \"atualizadoEm\": \"2026-06-23T14:34:40.909Z\",\n \"contagens\": {\n \"ddds\": 67\n },\n \"alteracoes\": {\n \"adicionados\": 67,\n \"removidos\": 0,\n \"alterados\": 0,\n \"comparadoCom\": null\n },\n \"verificacao\": {\n \"agendamento\": \"semanal\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-23T14:34:40.909Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#anatel-ddd-lookup\"\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { validateRenavam, RENAVAM_NUMERIC_PATTERN, RENAVAM_LENGTH } from './chunk-WLE2ENQA.js';
1
+ import { validateRenavam, RENAVAM_NUMERIC_PATTERN, RENAVAM_LENGTH } from './chunk-I66ZRSEN.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-CDGRHI7W.js.map
22
- //# sourceMappingURL=chunk-CDGRHI7W.js.map
21
+ //# sourceMappingURL=chunk-LAEUXOF6.js.map
22
+ //# sourceMappingURL=chunk-LAEUXOF6.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-CDGRHI7W.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-LAEUXOF6.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"]}
@@ -0,0 +1,93 @@
1
+ import { normalizeForPlatform } from './chunk-FOP5LO7W.js';
2
+
3
+ // src/diff/index.ts
4
+ function diff(a, b, type, options = {}) {
5
+ const left = normalizeForPlatform(a, type, options);
6
+ const right = normalizeForPlatform(b, type, options);
7
+ if (left === right) {
8
+ return { changed: false, fields: [] };
9
+ }
10
+ const leftFields = splitFields(left, type);
11
+ const rightFields = splitFields(right, type);
12
+ const keys = /* @__PURE__ */ new Set([...Object.keys(leftFields), ...Object.keys(rightFields)]);
13
+ const fields = [];
14
+ for (const field of keys) {
15
+ const leftValue = leftFields[field];
16
+ const rightValue = rightFields[field];
17
+ if (leftValue !== rightValue) {
18
+ fields.push({ field, a: leftValue, b: rightValue });
19
+ }
20
+ }
21
+ return { changed: fields.length > 0, fields };
22
+ }
23
+ function splitFields(value, type) {
24
+ switch (type) {
25
+ case "cpf":
26
+ return {
27
+ base: value.slice(0, 9),
28
+ dv: value.slice(9, 11)
29
+ };
30
+ case "cnpj":
31
+ return {
32
+ base: value.slice(0, 12),
33
+ dv: value.slice(12, 14)
34
+ };
35
+ case "cep":
36
+ return {
37
+ prefix: value.slice(0, 5),
38
+ suffix: value.slice(5, 8)
39
+ };
40
+ case "telefone":
41
+ return { ddd: value.slice(0, 2), subscriber: value.slice(2) };
42
+ case "pis-pasep":
43
+ return {
44
+ base: value.slice(0, 10),
45
+ dv: value.slice(10, 11)
46
+ };
47
+ case "cnh":
48
+ return {
49
+ base: value.slice(0, 9),
50
+ dv1: value.slice(9, 10),
51
+ dv2: value.slice(10, 11)
52
+ };
53
+ case "renavam":
54
+ return {
55
+ base: value.slice(0, 10),
56
+ dv: value.slice(10, 11)
57
+ };
58
+ case "titulo-eleitor":
59
+ return {
60
+ sequential: value.slice(0, 8),
61
+ uf: value.slice(8, 10),
62
+ dv: value.slice(10, 12)
63
+ };
64
+ case "nfe-chave":
65
+ return {
66
+ cUF: value.slice(0, 2),
67
+ aamm: value.slice(2, 6),
68
+ cnpj: value.slice(6, 20),
69
+ mod: value.slice(20, 22),
70
+ serie: value.slice(22, 25),
71
+ nNF: value.slice(25, 34),
72
+ tpEmis: value.slice(34, 35),
73
+ cNF: value.slice(35, 43),
74
+ cDV: value.slice(43, 44)
75
+ };
76
+ case "placa":
77
+ return { value };
78
+ case "boleto":
79
+ case "cartao-credito":
80
+ case "inscricao-estadual":
81
+ case "inscricao-estadual-produtor-rural":
82
+ case "pix":
83
+ case "brcode":
84
+ return { value };
85
+ default: {
86
+ return { value };
87
+ }
88
+ }
89
+ }
90
+
91
+ export { diff };
92
+ //# sourceMappingURL=chunk-LRUZVPLR.js.map
93
+ //# sourceMappingURL=chunk-LRUZVPLR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/diff/index.ts"],"names":[],"mappings":"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","file":"chunk-LRUZVPLR.js","sourcesContent":["/**\n * Field-level document diff — per-type structural decomposition (BR-DIFF-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { normalizeForPlatform } from '../platform/normalize.js';\nimport type { PlatformDocumentType, PlatformOptions } from '../platform/types.js';\n\nexport type DiffField = {\n field: string;\n a: string;\n b: string;\n};\n\nexport type DiffResult = {\n changed: boolean;\n fields: DiffField[];\n};\n\nexport function diff(\n a: string,\n b: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): DiffResult {\n const left = normalizeForPlatform(a, type, options);\n const right = normalizeForPlatform(b, type, options);\n\n if (left === right) {\n return { changed: false, fields: [] };\n }\n\n const leftFields = splitFields(left, type);\n const rightFields = splitFields(right, type);\n const keys = new Set([...Object.keys(leftFields), ...Object.keys(rightFields)]);\n const fields: DiffField[] = [];\n\n for (const field of keys) {\n const leftValue = leftFields[field];\n const rightValue = rightFields[field];\n if (leftValue !== rightValue) {\n fields.push({ field, a: leftValue, b: rightValue });\n }\n }\n\n return { changed: fields.length > 0, fields };\n}\n\nfunction splitFields(value: string, type: PlatformDocumentType): Record<string, string> {\n switch (type) {\n case 'cpf':\n return {\n base: value.slice(0, 9),\n dv: value.slice(9, 11),\n };\n case 'cnpj':\n return {\n base: value.slice(0, 12),\n dv: value.slice(12, 14),\n };\n case 'cep':\n return {\n prefix: value.slice(0, 5),\n suffix: value.slice(5, 8),\n };\n case 'telefone':\n return { ddd: value.slice(0, 2), subscriber: value.slice(2) };\n case 'pis-pasep':\n return {\n base: value.slice(0, 10),\n dv: value.slice(10, 11),\n };\n case 'cnh':\n return {\n base: value.slice(0, 9),\n dv1: value.slice(9, 10),\n dv2: value.slice(10, 11),\n };\n case 'renavam':\n return {\n base: value.slice(0, 10),\n dv: value.slice(10, 11),\n };\n case 'titulo-eleitor':\n return {\n sequential: value.slice(0, 8),\n uf: value.slice(8, 10),\n dv: value.slice(10, 12),\n };\n case 'nfe-chave':\n return {\n cUF: value.slice(0, 2),\n aamm: value.slice(2, 6),\n cnpj: value.slice(6, 20),\n mod: value.slice(20, 22),\n serie: value.slice(22, 25),\n nNF: value.slice(25, 34),\n tpEmis: value.slice(34, 35),\n cNF: value.slice(35, 43),\n cDV: value.slice(43, 44),\n };\n case 'placa':\n return { value };\n case 'boleto':\n case 'cartao-credito':\n case 'inscricao-estadual':\n case 'inscricao-estadual-produtor-rural':\n case 'pix':\n case 'brcode':\n return { value };\n default: {\n const _exhaustive: never = type;\n void _exhaustive;\n return { value };\n }\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { validateCep, CEP_MASK_PATTERN } from './chunk-2JJS46FM.js';
1
+ import { validateCep, CEP_MASK_PATTERN } from './chunk-TE6NSONR.js';
2
2
 
3
3
  // src/core/cep/mask.ts
4
4
  function applyCepMask(canonical) {
@@ -19,5 +19,5 @@ function formatCep(input) {
19
19
  }
20
20
 
21
21
  export { formatCep };
22
- //# sourceMappingURL=chunk-ZAUZRIOU.js.map
23
- //# sourceMappingURL=chunk-ZAUZRIOU.js.map
22
+ //# sourceMappingURL=chunk-MESOO5GZ.js.map
23
+ //# sourceMappingURL=chunk-MESOO5GZ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/cep/mask.ts","../src/format/cep.ts"],"names":[],"mappings":";;;AAGO,SAAS,aAAa,SAAA,EAA2B;AACtD,EAAA,MAAM,KAAA,GAAQ,gBAAA,CAAiB,IAAA,CAAK,SAAS,CAAA;AAC7C,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,EAChE;AACA,EAAA,OAAO,GAAG,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAChC;;;ACLO,SAAS,UAAU,KAAA,EAA6B;AACrD,EAAA,MAAM,MAAA,GAAS,YAAY,KAAK,CAAA;AAChC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,YAAA,CAAa,MAAA,CAAO,KAAK,CAAA,EAAE;AAC3D","file":"chunk-ZAUZRIOU.js","sourcesContent":["import { CEP_MASK_PATTERN } from './constants.js';\n\n/** Mask XXXXX-XXX (BR-CEP-004). */\nexport function applyCepMask(canonical: string): string {\n const match = CEP_MASK_PATTERN.exec(canonical);\n if (!match) {\n throw new Error('CEP must have exactly 8 digits to apply mask');\n }\n return `${match[1]}-${match[2]}`;\n}\n","import { applyCepMask } from '../core/cep/mask.js';\nimport { validateCep } from '../core/cep/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatCep(input: string): FormatResult {\n const result = validateCep(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyCepMask(result.value) };\n}\n"]}
1
+ {"version":3,"sources":["../src/core/cep/mask.ts","../src/format/cep.ts"],"names":[],"mappings":";;;AAGO,SAAS,aAAa,SAAA,EAA2B;AACtD,EAAA,MAAM,KAAA,GAAQ,gBAAA,CAAiB,IAAA,CAAK,SAAS,CAAA;AAC7C,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,EAChE;AACA,EAAA,OAAO,GAAG,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAChC;;;ACLO,SAAS,UAAU,KAAA,EAA6B;AACrD,EAAA,MAAM,MAAA,GAAS,YAAY,KAAK,CAAA;AAChC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,YAAA,CAAa,MAAA,CAAO,KAAK,CAAA,EAAE;AAC3D","file":"chunk-MESOO5GZ.js","sourcesContent":["import { CEP_MASK_PATTERN } from './constants.js';\n\n/** Mask XXXXX-XXX (BR-CEP-004). */\nexport function applyCepMask(canonical: string): string {\n const match = CEP_MASK_PATTERN.exec(canonical);\n if (!match) {\n throw new Error('CEP must have exactly 8 digits to apply mask');\n }\n return `${match[1]}-${match[2]}`;\n}\n","import { applyCepMask } from '../core/cep/mask.js';\nimport { validateCep } from '../core/cep/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatCep(input: string): FormatResult {\n const result = validateCep(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyCepMask(result.value) };\n}\n"]}
@@ -0,0 +1,100 @@
1
+ import { applyFixes } from './chunk-5V6N4JWQ.js';
2
+ import { validateRenavam } from './chunk-I66ZRSEN.js';
3
+ import { validateTelefone } from './chunk-EFEE6CMO.js';
4
+ import { validateTituloEleitor } from './chunk-CSVGWTCG.js';
5
+ import { validateInscricaoEstadual } from './chunk-665E36SC.js';
6
+ import { validateIeSpRural } from './chunk-CDNOUZEI.js';
7
+ import { validateNfeChave } from './chunk-AO6UTQ4A.js';
8
+ import { validatePisPasep } from './chunk-JLCQ7MGC.js';
9
+ import { validatePlaca } from './chunk-3LMDBXU6.js';
10
+ import { validateBoleto } from './chunk-AU6TW3GH.js';
11
+ import { validateCpf } from './chunk-63G7QO73.js';
12
+ import { validateCartaoCredito } from './chunk-ANWQBKGN.js';
13
+ import { validateCep } from './chunk-TE6NSONR.js';
14
+ import { validateCnh } from './chunk-YNVMVDFN.js';
15
+ import { validateCnpj } from './chunk-FBARVLLP.js';
16
+
17
+ // src/sanitize/index.ts
18
+ function sanitize(raw, type, options = {}) {
19
+ const { value: fixed, fixes } = applyFixes(raw, type);
20
+ if (type === "inscricao-estadual" && !options.uf) {
21
+ return {
22
+ ok: false,
23
+ code: "UNSUPPORTED_FORMAT",
24
+ message: "UF is required for inscricao-estadual sanitization"
25
+ };
26
+ }
27
+ const validation = validateFixed(fixed, type, options.uf);
28
+ if (!validation.ok) {
29
+ return { ok: false, code: validation.code, message: validation.message };
30
+ }
31
+ return { ok: true, value: validation.value, fixes };
32
+ }
33
+ function validateFixed(value, type, uf) {
34
+ switch (type) {
35
+ case "cpf": {
36
+ const result = validateCpf(value);
37
+ return result.ok ? { ok: true, value: result.value } : result;
38
+ }
39
+ case "cnpj": {
40
+ const result = validateCnpj(value);
41
+ return result.ok ? { ok: true, value: result.value } : result;
42
+ }
43
+ case "cep": {
44
+ const result = validateCep(value);
45
+ return result.ok ? { ok: true, value: result.value } : result;
46
+ }
47
+ case "placa": {
48
+ const result = validatePlaca(value);
49
+ return result.ok ? { ok: true, value: result.value } : result;
50
+ }
51
+ case "pis-pasep": {
52
+ const result = validatePisPasep(value);
53
+ return result.ok ? { ok: true, value: result.value } : result;
54
+ }
55
+ case "telefone": {
56
+ const result = validateTelefone(value);
57
+ return result.ok ? { ok: true, value: result.value } : result;
58
+ }
59
+ case "cnh": {
60
+ const result = validateCnh(value);
61
+ return result.ok ? { ok: true, value: result.value } : result;
62
+ }
63
+ case "renavam": {
64
+ const result = validateRenavam(value);
65
+ return result.ok ? { ok: true, value: result.value } : result;
66
+ }
67
+ case "titulo-eleitor": {
68
+ const result = validateTituloEleitor(value);
69
+ return result.ok ? { ok: true, value: result.value } : result;
70
+ }
71
+ case "nfe-chave": {
72
+ const result = validateNfeChave(value);
73
+ return result.ok ? { ok: true, value: result.value } : result;
74
+ }
75
+ case "boleto": {
76
+ const result = validateBoleto(value);
77
+ return result.ok ? { ok: true, value: result.value } : result;
78
+ }
79
+ case "cartao-credito": {
80
+ const result = validateCartaoCredito(value);
81
+ return result.ok ? { ok: true, value: result.value } : result;
82
+ }
83
+ case "inscricao-estadual": {
84
+ const result = validateInscricaoEstadual(value, { uf });
85
+ return result.ok ? { ok: true, value: result.value } : result;
86
+ }
87
+ case "inscricao-estadual-produtor-rural": {
88
+ const result = validateIeSpRural(value);
89
+ return result.ok ? { ok: true, value: result.value } : result;
90
+ }
91
+ default: {
92
+ const _exhaustive = type;
93
+ return { ok: false, code: "UNSUPPORTED_FORMAT", message: `Unsupported type: ${String(_exhaustive)}` };
94
+ }
95
+ }
96
+ }
97
+
98
+ export { sanitize };
99
+ //# sourceMappingURL=chunk-MKYCKCZ6.js.map
100
+ //# sourceMappingURL=chunk-MKYCKCZ6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/sanitize/index.ts"],"names":[],"mappings":"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","file":"chunk-MKYCKCZ6.js","sourcesContent":["/**\n * ETL-style document sanitization — applies fixes then validates (BR-SANITIZE-001).\n * @see docs/VALIDATION-RULES.md\n */\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/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 { validateRenavam } from '../core/renavam/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport type { UfCode, ValidationErrorCode } from '../types/validation-result.js';\nimport { applyFixes } from './fixes.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 | 'nfe-chave'\n | 'boleto'\n | 'cartao-credito'\n | 'inscricao-estadual'\n | 'inscricao-estadual-produtor-rural';\n\nexport type SanitizeOptions = {\n uf?: UfCode;\n};\n\nexport type SanitizeSuccess = {\n ok: true;\n value: string;\n fixes: string[];\n};\n\nexport type SanitizeFailure = {\n ok: false;\n code: ValidationErrorCode;\n message: string;\n};\n\nexport type SanitizeResult = SanitizeSuccess | SanitizeFailure;\n\nexport type { FixResult } from './fixes.js';\n\ntype ValidateFixedResult =\n | { ok: true; value: string }\n | { ok: false; code: ValidationErrorCode; message: string };\n\nexport function sanitize(\n raw: string,\n type: SanitizableDocumentType,\n options: SanitizeOptions = {},\n): SanitizeResult {\n const { value: fixed, fixes } = applyFixes(raw, type);\n\n if (type === 'inscricao-estadual' && !options.uf) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'UF is required for inscricao-estadual sanitization',\n };\n }\n\n const validation = validateFixed(fixed, type, options.uf);\n if (!validation.ok) {\n return { ok: false, code: validation.code, message: validation.message };\n }\n\n return { ok: true, value: validation.value, fixes };\n}\n\nfunction validateFixed(value: string, type: SanitizableDocumentType, uf?: UfCode): ValidateFixedResult {\n switch (type) {\n case 'cpf': {\n const result = validateCpf(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnpj': {\n const result = validateCnpj(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cep': {\n const result = validateCep(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'placa': {\n const result = validatePlaca(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'pis-pasep': {\n const result = validatePisPasep(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'telefone': {\n const result = validateTelefone(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnh': {\n const result = validateCnh(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'renavam': {\n const result = validateRenavam(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'titulo-eleitor': {\n const result = validateTituloEleitor(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'nfe-chave': {\n const result = validateNfeChave(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'boleto': {\n const result = validateBoleto(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cartao-credito': {\n const result = validateCartaoCredito(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual': {\n const result = validateInscricaoEstadual(value, { uf: uf as UfCode });\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual-produtor-rural': {\n const result = validateIeSpRural(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n default: {\n const _exhaustive: never = type;\n return { ok: false, code: 'UNSUPPORTED_FORMAT', message: `Unsupported type: ${String(_exhaustive)}` };\n }\n }\n}\n"]}
@@ -0,0 +1,128 @@
1
+ import { validateRenavam } from './chunk-I66ZRSEN.js';
2
+ import { validateTelefone } from './chunk-EFEE6CMO.js';
3
+ import { validateTituloEleitor } from './chunk-CSVGWTCG.js';
4
+ import { validateInscricaoEstadual } from './chunk-665E36SC.js';
5
+ import { validateIeSpRural } from './chunk-CDNOUZEI.js';
6
+ import { validateNfeChave } from './chunk-AO6UTQ4A.js';
7
+ import { validatePisPasep } from './chunk-JLCQ7MGC.js';
8
+ import { validatePlaca } from './chunk-3LMDBXU6.js';
9
+ import { validateBoleto } from './chunk-AU6TW3GH.js';
10
+ import { validateBrCode } from './chunk-V7UJ55KW.js';
11
+ import { validatePixKey } from './chunk-H3MLGGFI.js';
12
+ import { validateCpf } from './chunk-63G7QO73.js';
13
+ import { validateCartaoCredito } from './chunk-ANWQBKGN.js';
14
+ import { validateCep } from './chunk-TE6NSONR.js';
15
+ import { validateCnh } from './chunk-YNVMVDFN.js';
16
+ import { validateCnpj } from './chunk-FBARVLLP.js';
17
+
18
+ // src/platform/validate-dispatch.ts
19
+ function validateForPlatform(input, type, options = {}) {
20
+ if (type === "inscricao-estadual" && !options.uf) {
21
+ return {
22
+ ok: false,
23
+ code: "UNSUPPORTED_FORMAT",
24
+ message: "UF is required for inscricao-estadual validation"
25
+ };
26
+ }
27
+ switch (type) {
28
+ case "cpf": {
29
+ const result = validateCpf(input);
30
+ return result.ok ? { ok: true, value: result.value } : result;
31
+ }
32
+ case "cnpj": {
33
+ const result = validateCnpj(input);
34
+ return result.ok ? { ok: true, value: result.value } : result;
35
+ }
36
+ case "cep": {
37
+ const result = validateCep(input);
38
+ return result.ok ? { ok: true, value: result.value } : result;
39
+ }
40
+ case "placa": {
41
+ const result = validatePlaca(input);
42
+ return result.ok ? { ok: true, value: result.value } : result;
43
+ }
44
+ case "pis-pasep": {
45
+ const result = validatePisPasep(input);
46
+ return result.ok ? { ok: true, value: result.value } : result;
47
+ }
48
+ case "telefone": {
49
+ const result = validateTelefone(input);
50
+ return result.ok ? { ok: true, value: result.value } : result;
51
+ }
52
+ case "cnh": {
53
+ const result = validateCnh(input);
54
+ return result.ok ? { ok: true, value: result.value } : result;
55
+ }
56
+ case "renavam": {
57
+ const result = validateRenavam(input);
58
+ return result.ok ? { ok: true, value: result.value } : result;
59
+ }
60
+ case "titulo-eleitor": {
61
+ const result = validateTituloEleitor(input);
62
+ return result.ok ? { ok: true, value: result.value } : result;
63
+ }
64
+ case "nfe-chave": {
65
+ const result = validateNfeChave(input);
66
+ return result.ok ? { ok: true, value: result.value } : result;
67
+ }
68
+ case "boleto": {
69
+ const result = validateBoleto(input);
70
+ return result.ok ? { ok: true, value: result.value } : result;
71
+ }
72
+ case "cartao-credito": {
73
+ const result = validateCartaoCredito(input);
74
+ return result.ok ? { ok: true, value: result.value } : result;
75
+ }
76
+ case "inscricao-estadual": {
77
+ const result = validateInscricaoEstadual(input, { uf: options.uf });
78
+ return result.ok ? { ok: true, value: result.value } : result;
79
+ }
80
+ case "inscricao-estadual-produtor-rural": {
81
+ const result = validateIeSpRural(input);
82
+ return result.ok ? { ok: true, value: result.value } : result;
83
+ }
84
+ case "pix": {
85
+ const result = validatePixKey(input);
86
+ return result.ok ? { ok: true, value: result.value } : result;
87
+ }
88
+ case "brcode": {
89
+ const result = validateBrCode(input);
90
+ return result.ok ? { ok: true, value: result.value } : result;
91
+ }
92
+ default: {
93
+ const _exhaustive = type;
94
+ return {
95
+ ok: false,
96
+ code: "UNSUPPORTED_FORMAT",
97
+ message: `Unsupported type: ${String(_exhaustive)}`
98
+ };
99
+ }
100
+ }
101
+ }
102
+
103
+ // src/batch/index.ts
104
+ function batch(inputs, type, options = {}) {
105
+ const valid = [];
106
+ const invalid = [];
107
+ inputs.forEach((input, index) => {
108
+ const result = validateForPlatform(input, type, options);
109
+ if (result.ok) {
110
+ valid.push({ index, input, value: result.value });
111
+ } else {
112
+ invalid.push({ index, input, code: result.code, message: result.message });
113
+ }
114
+ });
115
+ return {
116
+ valid,
117
+ invalid,
118
+ summary: {
119
+ total: inputs.length,
120
+ valid: valid.length,
121
+ invalid: invalid.length
122
+ }
123
+ };
124
+ }
125
+
126
+ export { batch };
127
+ //# sourceMappingURL=chunk-N5CER3QZ.js.map
128
+ //# sourceMappingURL=chunk-N5CER3QZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/platform/validate-dispatch.ts","../src/batch/index.ts"],"names":[],"mappings":"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","file":"chunk-N5CER3QZ.js","sourcesContent":["import { validateBrCode } from '../core/brcode/index.js';\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/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 { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport type { UfCode, ValidationErrorCode } from '../types/validation-result.js';\nimport type { PlatformDocumentType, PlatformOptions } from './types.js';\n\nexport type ValidateDispatchSuccess = { ok: true; value: string };\nexport type ValidateDispatchFailure = {\n ok: false;\n code: ValidationErrorCode;\n message: string;\n};\nexport type ValidateDispatchResult = ValidateDispatchSuccess | ValidateDispatchFailure;\n\nexport function validateForPlatform(\n input: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): ValidateDispatchResult {\n if (type === 'inscricao-estadual' && !options.uf) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'UF is required for inscricao-estadual validation',\n };\n }\n\n switch (type) {\n case 'cpf': {\n const result = validateCpf(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnpj': {\n const result = validateCnpj(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cep': {\n const result = validateCep(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'placa': {\n const result = validatePlaca(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'pis-pasep': {\n const result = validatePisPasep(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'telefone': {\n const result = validateTelefone(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnh': {\n const result = validateCnh(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'renavam': {\n const result = validateRenavam(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'titulo-eleitor': {\n const result = validateTituloEleitor(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'nfe-chave': {\n const result = validateNfeChave(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'boleto': {\n const result = validateBoleto(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cartao-credito': {\n const result = validateCartaoCredito(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual': {\n const result = validateInscricaoEstadual(input, { uf: options.uf as UfCode });\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual-produtor-rural': {\n const result = validateIeSpRural(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'pix': {\n const result = validatePixKey(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'brcode': {\n const result = validateBrCode(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n default: {\n const _exhaustive: never = type;\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: `Unsupported type: ${String(_exhaustive)}`,\n };\n }\n }\n}\n","/**\n * Batch validation — maps `validate*` per row, never throws (BR-BATCH-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { validateForPlatform } from '../platform/validate-dispatch.js';\nimport type { PlatformDocumentType, PlatformOptions } from '../platform/types.js';\nimport type { ValidationErrorCode } from '../types/validation-result.js';\n\nexport type BatchValidEntry = {\n index: number;\n input: string;\n value: string;\n};\n\nexport type BatchInvalidEntry = {\n index: number;\n input: string;\n code: ValidationErrorCode;\n message: string;\n};\n\nexport type BatchSummary = {\n total: number;\n valid: number;\n invalid: number;\n};\n\nexport type BatchResult = {\n valid: BatchValidEntry[];\n invalid: BatchInvalidEntry[];\n summary: BatchSummary;\n};\n\nexport function batch(\n inputs: readonly string[],\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): BatchResult {\n const valid: BatchValidEntry[] = [];\n const invalid: BatchInvalidEntry[] = [];\n\n inputs.forEach((input, index) => {\n const result = validateForPlatform(input, type, options);\n if (result.ok) {\n valid.push({ index, input, value: result.value });\n } else {\n invalid.push({ index, input, code: result.code, message: result.message });\n }\n });\n\n return {\n valid,\n invalid,\n summary: {\n total: inputs.length,\n valid: valid.length,\n invalid: invalid.length,\n },\n };\n}\n"]}