@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,99 @@
1
+ import { formatTelefone } from './chunk-PNPESCSP.js';
2
+ import { formatTituloEleitor } from './chunk-EVULAGR5.js';
3
+ import { formatIeProdutorRural } from './chunk-54UWHK5L.js';
4
+ import { formatNfeChave } from './chunk-JKDU7QYP.js';
5
+ import { formatPisPasep } from './chunk-VSW3NBJQ.js';
6
+ import { formatPixKey } from './chunk-IYOPXJLY.js';
7
+ import { formatPlaca } from './chunk-YD5MPZWY.js';
8
+ import { formatRenavam } from './chunk-LAEUXOF6.js';
9
+ import { formatCpf } from './chunk-TJCE4TVX.js';
10
+ import { formatInscricaoEstadual } from './chunk-665E36SC.js';
11
+ import { formatBoleto } from './chunk-XWHGXSQV.js';
12
+ import { formatCartaoCredito } from './chunk-B6A7VF4R.js';
13
+ import { formatCep } from './chunk-MESOO5GZ.js';
14
+ import { formatCnh } from './chunk-VWVQWN2G.js';
15
+ import { formatCnpj } from './chunk-RMTHCPIV.js';
16
+
17
+ // src/mask/index.ts
18
+ var MASKABLE_DOCUMENT_TYPES = [
19
+ "cpf",
20
+ "cnpj",
21
+ "cep",
22
+ "placa",
23
+ "pis-pasep",
24
+ "telefone",
25
+ "cnh",
26
+ "renavam",
27
+ "titulo-eleitor",
28
+ "nfe-chave",
29
+ "boleto",
30
+ "cartao-credito",
31
+ "inscricao-estadual",
32
+ "inscricao-estadual-produtor-rural",
33
+ "pix"
34
+ ];
35
+ function isMaskableDocumentType(type) {
36
+ return MASKABLE_DOCUMENT_TYPES.includes(type);
37
+ }
38
+ function mask(raw, type, options = {}) {
39
+ if (type === "inscricao-estadual" && !options.uf) {
40
+ return {
41
+ ok: false,
42
+ code: "UNSUPPORTED_FORMAT",
43
+ message: "UF is required for inscricao-estadual masking"
44
+ };
45
+ }
46
+ return dispatchMask(raw, type, options);
47
+ }
48
+ function maskRuntime(type, raw, options = {}) {
49
+ if (!isMaskableDocumentType(type)) {
50
+ return { ok: false, code: "UNSUPPORTED_FORMAT", message: `Unknown document type: ${type}` };
51
+ }
52
+ return mask(raw, type, options);
53
+ }
54
+ function dispatchMask(raw, type, options) {
55
+ switch (type) {
56
+ case "cpf":
57
+ return formatCpf(raw);
58
+ case "cnpj":
59
+ return formatCnpj(raw);
60
+ case "cep":
61
+ return formatCep(raw);
62
+ case "placa":
63
+ return formatPlaca(raw);
64
+ case "pis-pasep":
65
+ return formatPisPasep(raw);
66
+ case "telefone":
67
+ return formatTelefone(raw);
68
+ case "cnh":
69
+ return formatCnh(raw);
70
+ case "renavam":
71
+ return formatRenavam(raw);
72
+ case "titulo-eleitor":
73
+ return formatTituloEleitor(raw);
74
+ case "nfe-chave":
75
+ return formatNfeChave(raw);
76
+ case "boleto":
77
+ return formatBoleto(raw);
78
+ case "cartao-credito":
79
+ return formatCartaoCredito(raw);
80
+ case "inscricao-estadual":
81
+ return formatInscricaoEstadual(raw, { uf: options.uf });
82
+ case "inscricao-estadual-produtor-rural":
83
+ return formatIeProdutorRural(raw);
84
+ case "pix":
85
+ return formatPixKey(raw);
86
+ default: {
87
+ const _exhaustive = type;
88
+ return {
89
+ ok: false,
90
+ code: "UNSUPPORTED_FORMAT",
91
+ message: `Unsupported type: ${String(_exhaustive)}`
92
+ };
93
+ }
94
+ }
95
+ }
96
+
97
+ export { MASKABLE_DOCUMENT_TYPES, isMaskableDocumentType, mask, maskRuntime };
98
+ //# sourceMappingURL=chunk-ASQ2XIN2.js.map
99
+ //# sourceMappingURL=chunk-ASQ2XIN2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mask/index.ts"],"names":[],"mappings":"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","file":"chunk-ASQ2XIN2.js","sourcesContent":["/**\n * Unified display mask — delegates to existing `format*` (BR-MASK-001).\n * @see docs/use-cases/UC-003-format-document.md\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { formatInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { formatBoleto } from '../format/boleto.js';\nimport { formatCartaoCredito } from '../format/cartao-credito.js';\nimport { formatCep } from '../format/cep.js';\nimport { formatCnh } from '../format/cnh.js';\nimport { formatCnpj } from '../format/cnpj.js';\nimport { formatCpf } from '../format/cpf.js';\nimport { formatIeProdutorRural } from '../format/inscricao-estadual-produtor-rural.js';\nimport { formatNfeChave } from '../format/nfe-chave.js';\nimport { formatPisPasep } from '../format/pis-pasep.js';\nimport { formatPixKey } from '../format/pix.js';\nimport { formatPlaca } from '../format/placa.js';\nimport { formatRenavam } from '../format/renavam.js';\nimport { formatTelefone } from '../format/telefone.js';\nimport { formatTituloEleitor } from '../format/titulo-eleitor.js';\nimport type { FormatResult, UfCode } from '../types/validation-result.js';\n\nexport type MaskableDocumentType =\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 | 'pix';\n\nexport const MASKABLE_DOCUMENT_TYPES = [\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 'pix',\n] as const satisfies readonly MaskableDocumentType[];\n\nexport type MaskOptions = {\n uf?: UfCode;\n};\n\nexport function isMaskableDocumentType(type: string): type is MaskableDocumentType {\n return (MASKABLE_DOCUMENT_TYPES as readonly string[]).includes(type);\n}\n\nexport function mask(\n raw: string,\n type: MaskableDocumentType,\n options: MaskOptions = {},\n): FormatResult {\n if (type === 'inscricao-estadual' && !options.uf) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'UF is required for inscricao-estadual masking',\n };\n }\n\n return dispatchMask(raw, type, options);\n}\n\n/** Runtime guard for dynamic callers (non-exhaustive type string). */\nexport function maskRuntime(\n type: string,\n raw: string,\n options: MaskOptions = {},\n): FormatResult {\n if (!isMaskableDocumentType(type)) {\n return { ok: false, code: 'UNSUPPORTED_FORMAT', message: `Unknown document type: ${type}` };\n }\n return mask(raw, type, options);\n}\n\nfunction dispatchMask(raw: string, type: MaskableDocumentType, options: MaskOptions): FormatResult {\n switch (type) {\n case 'cpf':\n return formatCpf(raw);\n case 'cnpj':\n return formatCnpj(raw);\n case 'cep':\n return formatCep(raw);\n case 'placa':\n return formatPlaca(raw);\n case 'pis-pasep':\n return formatPisPasep(raw);\n case 'telefone':\n return formatTelefone(raw);\n case 'cnh':\n return formatCnh(raw);\n case 'renavam':\n return formatRenavam(raw);\n case 'titulo-eleitor':\n return formatTituloEleitor(raw);\n case 'nfe-chave':\n return formatNfeChave(raw);\n case 'boleto':\n return formatBoleto(raw);\n case 'cartao-credito':\n return formatCartaoCredito(raw);\n case 'inscricao-estadual':\n return formatInscricaoEstadual(raw, { uf: options.uf as UfCode });\n case 'inscricao-estadual-produtor-rural':\n return formatIeProdutorRural(raw);\n case 'pix':\n return formatPixKey(raw);\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"]}
@@ -0,0 +1,136 @@
1
+ import { validateArrecadacao, validateCodigoBarras } from './chunk-N6RQICAP.js';
2
+ import { detectBoletoInputKind, validateLinhaDigitavel, convertLinhaToCodigoBarrasDigits, convertCodigoBarrasToLinhaDigits, detectBoletoSituacao } from './chunk-E2EFGMWA.js';
3
+ import { brandCodigoBarras, brandLinhaDigitavel } from './chunk-NUQSMT4Y.js';
4
+
5
+ // src/core/boleto/fator-vencimento.ts
6
+ var FATOR_MIN = 1;
7
+ var FATOR_SEMANTIC_MAX = 9997;
8
+ function validateFatorVencimento(factor) {
9
+ if (!/^\d{4}$/.test(factor)) {
10
+ return {
11
+ ok: false,
12
+ code: "INVALID_LENGTH",
13
+ message: "Due-date factor must have exactly 4 digits"
14
+ };
15
+ }
16
+ if (factor === "0000") {
17
+ return { ok: true, factor, hasDueDate: false };
18
+ }
19
+ const days = Number(factor);
20
+ if (days < FATOR_MIN || days > FATOR_SEMANTIC_MAX) {
21
+ return {
22
+ ok: false,
23
+ code: "UNSUPPORTED_FORMAT",
24
+ message: "Due-date factor is out of the supported range"
25
+ };
26
+ }
27
+ return { ok: true, factor, hasDueDate: true };
28
+ }
29
+
30
+ // src/core/boleto/valor-documento.ts
31
+ function validateValorDocumento(value) {
32
+ if (!/^\d{10}$/.test(value)) {
33
+ return {
34
+ ok: false,
35
+ code: "INVALID_LENGTH",
36
+ message: "Document amount must have exactly 10 digits (centavos)"
37
+ };
38
+ }
39
+ return { ok: true, amountCents: Number(value) };
40
+ }
41
+
42
+ // src/core/boleto/semantic.ts
43
+ function failure(code, message, inputKind) {
44
+ return { ok: false, code, message, inputKind };
45
+ }
46
+ function validateSemanticFields(barcode, options, inputKind) {
47
+ if (detectBoletoSituacao(barcode) !== "situacao-1") {
48
+ return null;
49
+ }
50
+ if (options.validateDueFactor) {
51
+ const factorResult = validateFatorVencimento(barcode.slice(5, 9));
52
+ if (!factorResult.ok) {
53
+ return failure(factorResult.code, factorResult.message, inputKind);
54
+ }
55
+ }
56
+ if (options.validateAmount && detectBoletoSituacao(barcode) === "situacao-1") {
57
+ validateValorDocumento(barcode.slice(9, 19));
58
+ }
59
+ return null;
60
+ }
61
+
62
+ // src/core/boleto/index.ts
63
+ function failure2(code, message, inputKind) {
64
+ return { ok: false, code, message, ...inputKind ? { inputKind } : {} };
65
+ }
66
+ function validateByKind(input, kind, options) {
67
+ const result = kind === "linha-digitavel" ? validateLinhaDigitavel(input) : validateCodigoBarras(input);
68
+ if (!result.ok) {
69
+ return result;
70
+ }
71
+ const barcode = kind === "linha-digitavel" ? convertLinhaToCodigoBarrasDigits(result.value) : result.value;
72
+ const semanticError = validateSemanticFields(barcode, options ?? {}, kind);
73
+ if (semanticError) {
74
+ return semanticError;
75
+ }
76
+ return result;
77
+ }
78
+ function isValidBoleto(input, options) {
79
+ return validateBoleto(input, options).ok;
80
+ }
81
+ function validateBoleto(input, options) {
82
+ const trimmed = input.trim();
83
+ if (trimmed.length === 0) {
84
+ return failure2("EMPTY_INPUT", "Boleto input is empty");
85
+ }
86
+ const detected = detectBoletoInputKind(trimmed);
87
+ if (detected === "arrecadacao") {
88
+ return validateArrecadacao(trimmed);
89
+ }
90
+ if (options?.kind !== void 0) {
91
+ if (detected !== "unknown" && detected !== options.kind) {
92
+ return failure2(
93
+ "UNSUPPORTED_FORMAT",
94
+ `Boleto detected as ${detected} but forced kind is ${options.kind}`,
95
+ options.kind
96
+ );
97
+ }
98
+ return validateByKind(trimmed, options.kind, options);
99
+ }
100
+ if (detected === "unknown") {
101
+ return failure2("UNSUPPORTED_FORMAT", "Boleto input kind could not be determined");
102
+ }
103
+ return validateByKind(trimmed, detected, options);
104
+ }
105
+ function convertLinhaToCodigoBarras(input) {
106
+ const result = validateLinhaDigitavel(input);
107
+ if (!result.ok) {
108
+ return result;
109
+ }
110
+ const barcode = convertLinhaToCodigoBarrasDigits(result.value);
111
+ return {
112
+ ok: true,
113
+ value: brandCodigoBarras(barcode),
114
+ inputKind: "codigo-barras",
115
+ format: "codigo-barras",
116
+ situacao: result.situacao
117
+ };
118
+ }
119
+ function convertCodigoBarrasToLinhaDigitavel(input) {
120
+ const result = validateCodigoBarras(input);
121
+ if (!result.ok) {
122
+ return result;
123
+ }
124
+ const linha = convertCodigoBarrasToLinhaDigits(result.value);
125
+ return {
126
+ ok: true,
127
+ value: brandLinhaDigitavel(linha),
128
+ inputKind: "linha-digitavel",
129
+ format: "linha-digitavel",
130
+ situacao: result.situacao
131
+ };
132
+ }
133
+
134
+ export { convertCodigoBarrasToLinhaDigitavel, convertLinhaToCodigoBarras, isValidBoleto, validateBoleto, validateFatorVencimento, validateValorDocumento };
135
+ //# sourceMappingURL=chunk-AU6TW3GH.js.map
136
+ //# sourceMappingURL=chunk-AU6TW3GH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/boleto/fator-vencimento.ts","../src/core/boleto/valor-documento.ts","../src/core/boleto/semantic.ts","../src/core/boleto/index.ts"],"names":["failure"],"mappings":"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","file":"chunk-AU6TW3GH.js","sourcesContent":["/**\n * Due-date factor semantic validation (Situação 1 only).\n * @see BR-BOLETO-012\n */\nimport type { ValidationErrorCode } from '../../types/validation-result.js';\n\nconst FATOR_MIN = 1;\n/** FEBRABAN factor space; values above this fail optional semantic validation. */\nconst FATOR_SEMANTIC_MAX = 9997;\n\nexport type FatorVencimentoValidationResult =\n | { ok: true; factor: string; hasDueDate: boolean }\n | { ok: false; code: ValidationErrorCode; message: string };\n\nexport function validateFatorVencimento(factor: string): FatorVencimentoValidationResult {\n if (!/^\\d{4}$/.test(factor)) {\n return {\n ok: false,\n code: 'INVALID_LENGTH',\n message: 'Due-date factor must have exactly 4 digits',\n };\n }\n\n if (factor === '0000') {\n return { ok: true, factor, hasDueDate: false };\n }\n\n const days = Number(factor);\n if (days < FATOR_MIN || days > FATOR_SEMANTIC_MAX) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'Due-date factor is out of the supported range',\n };\n }\n\n return { ok: true, factor, hasDueDate: true };\n}\n","/**\n * Document amount semantic validation (Situação 1 only).\n * @see BR-BOLETO-013\n */\nimport type { ValidationErrorCode } from '../../types/validation-result.js';\n\nexport type ValorDocumentoValidationResult =\n | { ok: true; amountCents: number }\n | { ok: false; code: ValidationErrorCode; message: string };\n\nexport function validateValorDocumento(value: string): ValorDocumentoValidationResult {\n if (!/^\\d{10}$/.test(value)) {\n return {\n ok: false,\n code: 'INVALID_LENGTH',\n message: 'Document amount must have exactly 10 digits (centavos)',\n };\n }\n\n return { ok: true, amountCents: Number(value) };\n}\n","/**\n * Optional semantic checks for Situação 1 cobrança fields.\n * @see BR-BOLETO-012, BR-BOLETO-013\n */\nimport type { BoletoInputKind, BoletoValidationResult } from '../../types/validation-result.js';\nimport { detectBoletoSituacao } from './detect-situacao.js';\nimport { validateFatorVencimento } from './fator-vencimento.js';\nimport { validateValorDocumento } from './valor-documento.js';\n\nexport type SemanticValidationOptions = {\n validateDueFactor?: boolean;\n validateAmount?: boolean;\n};\n\ntype FailedResult = Extract<BoletoValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string, inputKind: BoletoInputKind): FailedResult {\n return { ok: false, code, message, inputKind };\n}\n\nexport function validateSemanticFields(\n barcode: string,\n options: SemanticValidationOptions,\n inputKind: BoletoInputKind,\n): FailedResult | null {\n if (detectBoletoSituacao(barcode) !== 'situacao-1') {\n return null;\n }\n\n if (options.validateDueFactor) {\n const factorResult = validateFatorVencimento(barcode.slice(5, 9));\n if (!factorResult.ok) {\n return failure(factorResult.code, factorResult.message, inputKind);\n }\n }\n\n if (options.validateAmount && detectBoletoSituacao(barcode) === 'situacao-1') {\n validateValorDocumento(barcode.slice(9, 19));\n }\n\n return null;\n}\n","/**\n * Boleto validation — linha digitável + código de barras (FEBRABAN cobrança).\n * @see docs/use-cases/UC-007-validate-boleto.md\n */\nimport type { BoletoInputKind, BoletoValidationResult } from '../../types/validation-result.js';\nimport { brandCodigoBarras, brandLinhaDigitavel } from '../../types/validation-result.js';\nimport { validateCodigoBarras } from './codigo-barras.js';\nimport {\n convertCodigoBarrasToLinhaDigits,\n convertLinhaToCodigoBarrasDigits,\n} from './convert.js';\nimport { detectBoletoInputKind } from './detect.js';\nimport { validateLinhaDigitavel } from './linha-digitavel.js';\nimport { validateSemanticFields } from './semantic.js';\nimport { validateArrecadacao } from './arrecadacao.js';\n\nexport {\n BOLETO_CODIGO_BARRAS_LENGTH,\n BOLETO_CODE_ISPB_HOLDER,\n BOLETO_CURRENCY_ISPB,\n BOLETO_CURRENCY_REAL,\n BOLETO_GOLDEN_CODIGO_BARRAS,\n BOLETO_GOLDEN_CODIGO_BARRAS_BB,\n BOLETO_GOLDEN_CODIGO_BARRAS_SITUACAO2,\n BOLETO_GOLDEN_LINHA_BB_STRIPPED,\n BOLETO_GOLDEN_LINHA_MASKED,\n BOLETO_GOLDEN_LINHA_SITUACAO2_STRIPPED,\n BOLETO_GOLDEN_LINHA_STRIPPED,\n BOLETO_LAYOUTS_PORTAL_URL,\n BOLETO_LINHA_LENGTH,\n BOLETO_OFFICIAL_SOURCE_URL,\n BOLETO_ARRECADACAO_LINHA_LENGTH,\n BOLETO_ARRECADACAO_CODIGO_BARRAS_LENGTH,\n BOLETO_ARRECADACAO_PRODUCT_ID,\n BOLETO_ARRECADACAO_OFFICIAL_SOURCE_URL,\n} from './constants.js';\nexport { computeModulo10FieldDv } from './modulo10.js';\nexport { computeModulo11BarcodeDv } from './modulo11.js';\nexport { detectBoletoInputKind, type DetectedBoletoInputKind } from './detect.js';\nexport {\n detectBoletoSituacao,\n toBoletoSituacaoCode,\n type BoletoSituacaoCode,\n type BoletoSituacaoKind,\n} from './detect-situacao.js';\nexport {\n convertCodigoBarrasToLinhaDigits,\n convertLinhaToCodigoBarrasDigits,\n} from './convert.js';\nexport {\n formatLinhaDigitavel,\n stripLinhaDigitavel,\n validateLinhaDigitavel,\n} from './linha-digitavel.js';\nexport { applyLinhaDigitavelMask } from './mask.js';\nexport { stripCodigoBarras, validateCodigoBarras } from './codigo-barras.js';\nexport { validateFatorVencimento, type FatorVencimentoValidationResult } from './fator-vencimento.js';\nexport { validateValorDocumento, type ValorDocumentoValidationResult } from './valor-documento.js';\nexport { validateSemanticFields } from './semantic.js';\nexport {\n buildArrecadacaoGoldenPair,\n isValidArrecadacao,\n linhaArrecadacaoToCodigoBarras,\n stripArrecadacao,\n validateArrecadacao,\n validateArrecadacaoCodigoBarras,\n validateArrecadacaoLinha,\n} from './arrecadacao.js';\nexport type { ArrecadacaoInputKind, ArrecadacaoValidationResult } from './arrecadacao.js';\nexport {\n computeArrecadacaoModulo10Dv,\n computeArrecadacaoModulo11Dv,\n getArrecadacaoDvCalculator,\n isArrecadacaoValueType,\n} from './arrecadacao-modulo.js';\nexport type { ArrecadacaoValueType } from './arrecadacao-modulo.js';\n\nexport type ValidateBoletoOptions = {\n kind?: BoletoInputKind;\n validateDueFactor?: boolean;\n validateAmount?: boolean;\n};\n\ntype FailedResult = Extract<BoletoValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string, inputKind?: BoletoInputKind): FailedResult {\n return { ok: false, code, message, ...(inputKind ? { inputKind } : {}) };\n}\n\nfunction validateByKind(input: string, kind: BoletoInputKind, options?: ValidateBoletoOptions): BoletoValidationResult {\n const result = kind === 'linha-digitavel' ? validateLinhaDigitavel(input) : validateCodigoBarras(input);\n if (!result.ok) {\n return result;\n }\n\n const barcode =\n kind === 'linha-digitavel'\n ? convertLinhaToCodigoBarrasDigits(result.value)\n : result.value;\n\n const semanticError = validateSemanticFields(barcode, options ?? {}, kind);\n if (semanticError) {\n return semanticError;\n }\n\n return result;\n}\n\nexport function isValidBoleto(input: string, options?: ValidateBoletoOptions): boolean {\n return validateBoleto(input, options).ok;\n}\n\nexport function validateBoleto(input: string, options?: ValidateBoletoOptions): BoletoValidationResult {\n const trimmed = input.trim();\n if (trimmed.length === 0) {\n return failure('EMPTY_INPUT', 'Boleto input is empty');\n }\n\n const detected = detectBoletoInputKind(trimmed);\n\n if (detected === 'arrecadacao') {\n return validateArrecadacao(trimmed);\n }\n\n if (options?.kind !== undefined) {\n if (detected !== 'unknown' && detected !== options.kind) {\n return failure(\n 'UNSUPPORTED_FORMAT',\n `Boleto detected as ${detected} but forced kind is ${options.kind}`,\n options.kind,\n );\n }\n return validateByKind(trimmed, options.kind, options);\n }\n\n if (detected === 'unknown') {\n return failure('UNSUPPORTED_FORMAT', 'Boleto input kind could not be determined');\n }\n\n return validateByKind(trimmed, detected, options);\n}\n\nexport function convertLinhaToCodigoBarras(input: string): BoletoValidationResult {\n const result = validateLinhaDigitavel(input);\n if (!result.ok) {\n return result;\n }\n const barcode = convertLinhaToCodigoBarrasDigits(result.value);\n return {\n ok: true,\n value: brandCodigoBarras(barcode),\n inputKind: 'codigo-barras',\n format: 'codigo-barras',\n situacao: result.situacao,\n };\n}\n\nexport function convertCodigoBarrasToLinhaDigitavel(input: string): BoletoValidationResult {\n const result = validateCodigoBarras(input);\n if (!result.ok) {\n return result;\n }\n const linha = convertCodigoBarrasToLinhaDigits(result.value);\n return {\n ok: true,\n value: brandLinhaDigitavel(linha),\n inputKind: 'linha-digitavel',\n format: 'linha-digitavel',\n situacao: result.situacao,\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { validateCartaoCredito, applyCartaoCreditoMask } from './chunk-AK5GVYQ5.js';
1
+ import { validateCartaoCredito, applyCartaoCreditoMask } from './chunk-ANWQBKGN.js';
2
2
 
3
3
  // src/format/cartao-credito.ts
4
4
  function formatCartaoCredito(input) {
@@ -10,5 +10,5 @@ function formatCartaoCredito(input) {
10
10
  }
11
11
 
12
12
  export { formatCartaoCredito };
13
- //# sourceMappingURL=chunk-XW5G2RAL.js.map
14
- //# sourceMappingURL=chunk-XW5G2RAL.js.map
13
+ //# sourceMappingURL=chunk-B6A7VF4R.js.map
14
+ //# sourceMappingURL=chunk-B6A7VF4R.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/format/cartao-credito.ts"],"names":[],"mappings":";;;AAIO,SAAS,oBAAoB,KAAA,EAA6B;AAC/D,EAAA,MAAM,MAAA,GAAS,sBAAsB,KAAK,CAAA;AAC1C,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,sBAAA,CAAuB,MAAA,CAAO,KAAK,CAAA,EAAE;AACrE","file":"chunk-XW5G2RAL.js","sourcesContent":["import { applyCartaoCreditoMask } from '../core/cartao-credito/mask.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatCartaoCredito(input: string): FormatResult {\n const result = validateCartaoCredito(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyCartaoCreditoMask(result.value) };\n}\n"]}
1
+ {"version":3,"sources":["../src/format/cartao-credito.ts"],"names":[],"mappings":";;;AAIO,SAAS,oBAAoB,KAAA,EAA6B;AAC/D,EAAA,MAAM,MAAA,GAAS,sBAAsB,KAAK,CAAA;AAC1C,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,sBAAA,CAAuB,MAAA,CAAO,KAAK,CAAA,EAAE;AACrE","file":"chunk-B6A7VF4R.js","sourcesContent":["import { applyCartaoCreditoMask } from '../core/cartao-credito/mask.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatCartaoCredito(input: string): FormatResult {\n const result = validateCartaoCredito(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyCartaoCreditoMask(result.value) };\n}\n"]}