@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.
- package/README.md +84 -12
- package/dist/bancos.d.ts +41 -0
- package/dist/bancos.js +3328 -0
- package/dist/bancos.js.map +1 -0
- package/dist/batch.d.ts +28 -0
- package/dist/batch.js +30 -0
- package/dist/batch.js.map +1 -0
- package/dist/boleto.d.ts +58 -5
- package/dist/boleto.js +6 -3
- package/dist/brcode.d.ts +15 -3
- package/dist/brcode.js +8 -8
- package/dist/cartao-credito.d.ts +2 -2
- package/dist/cartao-credito.js +3 -3
- package/dist/cep.d.ts +2 -2
- package/dist/cep.js +4 -4
- package/dist/{chunk-WPL47PWJ.js → chunk-3LMDBXU6.js} +3 -3
- package/dist/{chunk-WPL47PWJ.js.map → chunk-3LMDBXU6.js.map} +1 -1
- package/dist/chunk-4J5IMD7B.js +3 -0
- package/dist/chunk-4J5IMD7B.js.map +1 -0
- package/dist/{chunk-BFZPCEYB.js → chunk-54UWHK5L.js} +3 -3
- package/dist/{chunk-BFZPCEYB.js.map → chunk-54UWHK5L.js.map} +1 -1
- package/dist/chunk-5V6N4JWQ.js +135 -0
- package/dist/chunk-5V6N4JWQ.js.map +1 -0
- package/dist/{chunk-F6PTZY4O.js → chunk-63G7QO73.js} +3 -3
- package/dist/{chunk-F6PTZY4O.js.map → chunk-63G7QO73.js.map} +1 -1
- package/dist/{chunk-3QP6R46N.js → chunk-665E36SC.js} +4 -4
- package/dist/{chunk-3QP6R46N.js.map → chunk-665E36SC.js.map} +1 -1
- package/dist/{chunk-AK5GVYQ5.js → chunk-ANWQBKGN.js} +3 -3
- package/dist/{chunk-AK5GVYQ5.js.map → chunk-ANWQBKGN.js.map} +1 -1
- package/dist/{chunk-D36RM7OD.js → chunk-AO6UTQ4A.js} +3 -3
- package/dist/{chunk-D36RM7OD.js.map → chunk-AO6UTQ4A.js.map} +1 -1
- package/dist/chunk-ASQ2XIN2.js +99 -0
- package/dist/chunk-ASQ2XIN2.js.map +1 -0
- package/dist/chunk-AU6TW3GH.js +136 -0
- package/dist/chunk-AU6TW3GH.js.map +1 -0
- package/dist/{chunk-XW5G2RAL.js → chunk-B6A7VF4R.js} +3 -3
- package/dist/{chunk-XW5G2RAL.js.map → chunk-B6A7VF4R.js.map} +1 -1
- package/dist/{chunk-Q7B5VOPW.js → chunk-BA3FAVK4.js} +243 -37
- package/dist/chunk-BA3FAVK4.js.map +1 -0
- package/dist/{chunk-Y6IW2LMW.js → chunk-CDNOUZEI.js} +3 -3
- package/dist/{chunk-Y6IW2LMW.js.map → chunk-CDNOUZEI.js.map} +1 -1
- package/dist/{chunk-XUO7FV6Z.js → chunk-CSRBRKXY.js} +3 -3
- package/dist/{chunk-XUO7FV6Z.js.map → chunk-CSRBRKXY.js.map} +1 -1
- package/dist/{chunk-DJUANFIK.js → chunk-CSVGWTCG.js} +3 -3
- package/dist/{chunk-DJUANFIK.js.map → chunk-CSVGWTCG.js.map} +1 -1
- package/dist/chunk-E2EFGMWA.js +200 -0
- package/dist/chunk-E2EFGMWA.js.map +1 -0
- package/dist/chunk-EFEE6CMO.js +24091 -0
- package/dist/chunk-EFEE6CMO.js.map +1 -0
- package/dist/{chunk-KSLDM5AD.js → chunk-EVULAGR5.js} +3 -3
- package/dist/{chunk-KSLDM5AD.js.map → chunk-EVULAGR5.js.map} +1 -1
- package/dist/{chunk-YXELVV37.js → chunk-FBARVLLP.js} +4 -4
- package/dist/{chunk-YXELVV37.js.map → chunk-FBARVLLP.js.map} +1 -1
- package/dist/chunk-FOP5LO7W.js +131 -0
- package/dist/chunk-FOP5LO7W.js.map +1 -0
- package/dist/{chunk-MK7OJUF5.js → chunk-H3MLGGFI.js} +8 -8
- package/dist/{chunk-MK7OJUF5.js.map → chunk-H3MLGGFI.js.map} +1 -1
- package/dist/{chunk-WLE2ENQA.js → chunk-I66ZRSEN.js} +3 -3
- package/dist/{chunk-WLE2ENQA.js.map → chunk-I66ZRSEN.js.map} +1 -1
- package/dist/{chunk-GRDUTHNX.js → chunk-IYOPXJLY.js} +3 -3
- package/dist/{chunk-GRDUTHNX.js.map → chunk-IYOPXJLY.js.map} +1 -1
- package/dist/chunk-JCWQDTZB.js +41 -0
- package/dist/chunk-JCWQDTZB.js.map +1 -0
- package/dist/{chunk-4Y2FBO57.js → chunk-JKDU7QYP.js} +3 -3
- package/dist/{chunk-4Y2FBO57.js.map → chunk-JKDU7QYP.js.map} +1 -1
- package/dist/{chunk-KH7DWOUA.js → chunk-JLCQ7MGC.js} +3 -3
- package/dist/{chunk-KH7DWOUA.js.map → chunk-JLCQ7MGC.js.map} +1 -1
- package/dist/chunk-KBNWI6GE.js +3 -0
- package/dist/chunk-KBNWI6GE.js.map +1 -0
- package/dist/chunk-KLPONHBL.js +3 -0
- package/dist/chunk-KLPONHBL.js.map +1 -0
- package/dist/chunk-KTEQPYYN.js +31 -0
- package/dist/chunk-KTEQPYYN.js.map +1 -0
- package/dist/{chunk-CDGRHI7W.js → chunk-LAEUXOF6.js} +3 -3
- package/dist/{chunk-CDGRHI7W.js.map → chunk-LAEUXOF6.js.map} +1 -1
- package/dist/chunk-LRUZVPLR.js +93 -0
- package/dist/chunk-LRUZVPLR.js.map +1 -0
- package/dist/{chunk-ZAUZRIOU.js → chunk-MESOO5GZ.js} +3 -3
- package/dist/{chunk-ZAUZRIOU.js.map → chunk-MESOO5GZ.js.map} +1 -1
- package/dist/chunk-MKYCKCZ6.js +100 -0
- package/dist/chunk-MKYCKCZ6.js.map +1 -0
- package/dist/chunk-N5CER3QZ.js +128 -0
- package/dist/chunk-N5CER3QZ.js.map +1 -0
- package/dist/chunk-N6RQICAP.js +220 -0
- package/dist/chunk-N6RQICAP.js.map +1 -0
- package/dist/{chunk-MSLJF2FM.js → chunk-NUQSMT4Y.js} +2 -2
- package/dist/chunk-NUQSMT4Y.js.map +1 -0
- package/dist/{chunk-KQDLIGSG.js → chunk-P2KNN6ZR.js} +3 -3
- package/dist/{chunk-KQDLIGSG.js.map → chunk-P2KNN6ZR.js.map} +1 -1
- package/dist/{chunk-JZNTCZMV.js → chunk-PCP77SLS.js} +34 -18
- package/dist/chunk-PCP77SLS.js.map +1 -0
- package/dist/{chunk-G2Y63PIF.js → chunk-PNPESCSP.js} +3 -3
- package/dist/{chunk-G2Y63PIF.js.map → chunk-PNPESCSP.js.map} +1 -1
- package/dist/{chunk-LYBFUKHR.js → chunk-RMTHCPIV.js} +4 -4
- package/dist/{chunk-LYBFUKHR.js.map → chunk-RMTHCPIV.js.map} +1 -1
- package/dist/{chunk-2JJS46FM.js → chunk-TE6NSONR.js} +3 -3
- package/dist/{chunk-2JJS46FM.js.map → chunk-TE6NSONR.js.map} +1 -1
- package/dist/{chunk-NHLLC6WH.js → chunk-TJCE4TVX.js} +4 -4
- package/dist/{chunk-NHLLC6WH.js.map → chunk-TJCE4TVX.js.map} +1 -1
- package/dist/chunk-UCNPXHIJ.js +32 -0
- package/dist/chunk-UCNPXHIJ.js.map +1 -0
- package/dist/{chunk-WCQUQ2WX.js → chunk-V7UJ55KW.js} +47 -5
- package/dist/chunk-V7UJ55KW.js.map +1 -0
- package/dist/{chunk-IQGRFAQV.js → chunk-VSW3NBJQ.js} +3 -3
- package/dist/{chunk-IQGRFAQV.js.map → chunk-VSW3NBJQ.js.map} +1 -1
- package/dist/{chunk-6QJFMOIX.js → chunk-VWVQWN2G.js} +3 -3
- package/dist/{chunk-6QJFMOIX.js.map → chunk-VWVQWN2G.js.map} +1 -1
- package/dist/chunk-XADVBV73.js +30 -0
- package/dist/chunk-XADVBV73.js.map +1 -0
- package/dist/{chunk-FXLVNCG3.js → chunk-XWHGXSQV.js} +3 -3
- package/dist/{chunk-FXLVNCG3.js.map → chunk-XWHGXSQV.js.map} +1 -1
- package/dist/{chunk-G32U6YQ5.js → chunk-YD5MPZWY.js} +3 -3
- package/dist/{chunk-G32U6YQ5.js.map → chunk-YD5MPZWY.js.map} +1 -1
- package/dist/{chunk-US4OLTJ2.js → chunk-YNVMVDFN.js} +3 -3
- package/dist/{chunk-US4OLTJ2.js.map → chunk-YNVMVDFN.js.map} +1 -1
- package/dist/cnh.d.ts +2 -2
- package/dist/cnh.js +4 -4
- package/dist/cnpj.d.ts +2 -2
- package/dist/cnpj.js +5 -5
- package/dist/compare.d.ts +16 -0
- package/dist/compare.js +33 -0
- package/dist/compare.js.map +1 -0
- package/dist/cpf.d.ts +2 -2
- package/dist/cpf.js +4 -4
- package/dist/data-catalog.d.ts +14 -0
- package/dist/data-catalog.js +25 -0
- package/dist/data-catalog.js.map +1 -0
- package/dist/detect.d.ts +1 -1
- package/dist/detect.js +23 -20
- package/dist/diff.d.ts +16 -0
- package/dist/diff.js +33 -0
- package/dist/diff.js.map +1 -0
- package/dist/generate.d.ts +24 -3
- package/dist/generate.js +37 -27
- package/dist/ibge.d.ts +65 -0
- package/dist/ibge.js +28174 -0
- package/dist/ibge.js.map +1 -0
- package/dist/{index-CZLo9YOT.d.ts → index-BEJFgDXj.d.ts} +1 -1
- package/dist/index.d.ts +15 -9
- package/dist/index.js +61 -49
- package/dist/index.js.map +1 -1
- package/dist/{inscricao-estadual-produtor-rural-CfWUaggb.d.ts → inscricao-estadual-produtor-rural-BXFVQscj.d.ts} +1 -1
- package/dist/inscricao-estadual-produtor-rural.d.ts +2 -2
- package/dist/inscricao-estadual-produtor-rural.js +3 -3
- package/dist/inscricao-estadual.d.ts +3 -3
- package/dist/inscricao-estadual.js +4 -4
- package/dist/mask.d.ts +13 -0
- package/dist/mask.js +41 -0
- package/dist/mask.js.map +1 -0
- package/dist/nfe-chave.d.ts +2 -2
- package/dist/nfe-chave.js +4 -3
- package/dist/pis-pasep.d.ts +2 -2
- package/dist/pis-pasep.js +3 -3
- package/dist/{pix-ddldLlb7.d.ts → pix-B4habHLG.d.ts} +1 -1
- package/dist/pix.d.ts +2 -2
- package/dist/pix.js +9 -8
- package/dist/placa.d.ts +2 -2
- package/dist/placa.js +4 -4
- package/dist/renavam.d.ts +2 -2
- package/dist/renavam.js +4 -4
- package/dist/sanitize.d.ts +2 -2
- package/dist/sanitize.js +21 -17
- package/dist/telefone.d.ts +34 -3
- package/dist/telefone.js +4 -3
- package/dist/titulo-eleitor.d.ts +2 -2
- package/dist/titulo-eleitor.js +4 -4
- package/dist/types-CBIZxgfG.d.ts +28 -0
- package/dist/types-MXifBcV5.d.ts +10 -0
- package/dist/{validation-result-BhQE-1_O.d.ts → validation-result-BaI2Xder.d.ts} +24 -5
- package/package.json +36 -1
- package/dist/chunk-4W4OKLSZ.js +0 -366
- package/dist/chunk-4W4OKLSZ.js.map +0 -1
- package/dist/chunk-5UL3M7IU.js +0 -192
- package/dist/chunk-5UL3M7IU.js.map +0 -1
- package/dist/chunk-CSZCIOGA.js +0 -187
- package/dist/chunk-CSZCIOGA.js.map +0 -1
- package/dist/chunk-JZNTCZMV.js.map +0 -1
- package/dist/chunk-MSLJF2FM.js.map +0 -1
- package/dist/chunk-Q7B5VOPW.js.map +0 -1
- 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-
|
|
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-
|
|
14
|
-
//# sourceMappingURL=chunk-
|
|
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-
|
|
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"]}
|