@br-validators/core 1.3.0 → 1.6.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 +44 -15
- package/dist/aeroportos.d.ts +46 -0
- package/dist/aeroportos.js +4316 -0
- package/dist/aeroportos.js.map +1 -0
- package/dist/batch.d.ts +3 -3
- package/dist/batch.js +24 -22
- package/dist/boleto.d.ts +2 -2
- package/dist/boleto.js +5 -5
- package/dist/brcode.d.ts +2 -2
- package/dist/brcode.js +7 -7
- 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 +3 -3
- package/dist/cest.d.ts +44 -0
- package/dist/cest.js +8253 -0
- package/dist/cest.js.map +1 -0
- package/dist/{chunk-NT3TNF3R.js → chunk-24JBIV3A.js} +3 -3
- package/dist/{chunk-NT3TNF3R.js.map → chunk-24JBIV3A.js.map} +1 -1
- package/dist/{chunk-XHDRWM46.js → chunk-26MSDS43.js} +3 -3
- package/dist/{chunk-XHDRWM46.js.map → chunk-26MSDS43.js.map} +1 -1
- package/dist/{chunk-3LMDBXU6.js → chunk-2JSOXG2M.js} +3 -3
- package/dist/{chunk-3LMDBXU6.js.map → chunk-2JSOXG2M.js.map} +1 -1
- package/dist/{chunk-AU6TW3GH.js → chunk-3DLNIUBY.js} +5 -5
- package/dist/{chunk-AU6TW3GH.js.map → chunk-3DLNIUBY.js.map} +1 -1
- package/dist/{chunk-OOUEURR7.js → chunk-3JAYOBSG.js} +3 -3
- package/dist/{chunk-OOUEURR7.js.map → chunk-3JAYOBSG.js.map} +1 -1
- package/dist/chunk-3WXLMV7Q.js +3 -0
- package/dist/chunk-3WXLMV7Q.js.map +1 -0
- package/dist/chunk-475HS4CJ.js +30 -0
- package/dist/chunk-475HS4CJ.js.map +1 -0
- package/dist/{chunk-NUQSMT4Y.js → chunk-4NFEM2SU.js} +9 -3
- package/dist/chunk-4NFEM2SU.js.map +1 -0
- package/dist/chunk-6EF7GQRS.js +30 -0
- package/dist/chunk-6EF7GQRS.js.map +1 -0
- package/dist/{chunk-ZTDLGGYE.js → chunk-6VNCWSHA.js} +34 -17
- package/dist/chunk-6VNCWSHA.js.map +1 -0
- package/dist/{chunk-MZDCVTN6.js → chunk-72EZ2VUO.js} +4 -4
- package/dist/{chunk-MZDCVTN6.js.map → chunk-72EZ2VUO.js.map} +1 -1
- package/dist/chunk-7JCJGLA3.js +30 -0
- package/dist/chunk-7JCJGLA3.js.map +1 -0
- package/dist/{chunk-VKG7UEN5.js → chunk-A5UHVGRB.js} +3 -3
- package/dist/{chunk-VKG7UEN5.js.map → chunk-A5UHVGRB.js.map} +1 -1
- package/dist/{chunk-EN7PVDYB.js → chunk-C7WXL7UR.js} +4 -4
- package/dist/{chunk-EN7PVDYB.js.map → chunk-C7WXL7UR.js.map} +1 -1
- package/dist/{chunk-DYX5XSJ6.js → chunk-CGN5ST5W.js} +5 -3
- package/dist/{chunk-DYX5XSJ6.js.map → chunk-CGN5ST5W.js.map} +1 -1
- package/dist/{chunk-P6TOL5VY.js → chunk-CJKVA7VS.js} +3 -3
- package/dist/{chunk-P6TOL5VY.js.map → chunk-CJKVA7VS.js.map} +1 -1
- package/dist/{chunk-KGCLQ7QX.js → chunk-CNJ4DIYS.js} +3 -3
- package/dist/{chunk-KGCLQ7QX.js.map → chunk-CNJ4DIYS.js.map} +1 -1
- package/dist/{chunk-N6RQICAP.js → chunk-CYBWPBXJ.js} +4 -4
- package/dist/{chunk-N6RQICAP.js.map → chunk-CYBWPBXJ.js.map} +1 -1
- package/dist/{chunk-SDEJD2J7.js → chunk-DLXE3RNI.js} +3 -3
- package/dist/{chunk-SDEJD2J7.js.map → chunk-DLXE3RNI.js.map} +1 -1
- package/dist/chunk-DVA6QQUF.js +22 -0
- package/dist/chunk-DVA6QQUF.js.map +1 -0
- package/dist/{chunk-54UWHK5L.js → chunk-EGDZGSHA.js} +3 -3
- package/dist/{chunk-54UWHK5L.js.map → chunk-EGDZGSHA.js.map} +1 -1
- package/dist/chunk-EKOSTVIA.js +30 -0
- package/dist/chunk-EKOSTVIA.js.map +1 -0
- package/dist/{chunk-O3T7PUBI.js → chunk-F5OHOWZU.js} +3 -3
- package/dist/{chunk-O3T7PUBI.js.map → chunk-F5OHOWZU.js.map} +1 -1
- package/dist/chunk-F7IEPT22.js +30 -0
- package/dist/chunk-F7IEPT22.js.map +1 -0
- package/dist/{chunk-RMTHCPIV.js → chunk-FLZGOGER.js} +4 -4
- package/dist/{chunk-RMTHCPIV.js.map → chunk-FLZGOGER.js.map} +1 -1
- package/dist/chunk-FUYDR7JI.js +44 -0
- package/dist/chunk-FUYDR7JI.js.map +1 -0
- package/dist/chunk-G557DGIX.js +398 -0
- package/dist/chunk-G557DGIX.js.map +1 -0
- package/dist/{chunk-ITHT54NC.js → chunk-HZWERBZB.js} +37 -17
- package/dist/chunk-HZWERBZB.js.map +1 -0
- package/dist/{chunk-AO6UTQ4A.js → chunk-IJ2DAVSD.js} +3 -3
- package/dist/{chunk-AO6UTQ4A.js.map → chunk-IJ2DAVSD.js.map} +1 -1
- package/dist/chunk-ILKF7HP7.js +31 -0
- package/dist/chunk-ILKF7HP7.js.map +1 -0
- package/dist/{chunk-MAM4U3UR.js → chunk-IRERFIL5.js} +3 -3
- package/dist/{chunk-MAM4U3UR.js.map → chunk-IRERFIL5.js.map} +1 -1
- package/dist/{chunk-CSRBRKXY.js → chunk-ISMIJ5DH.js} +3 -3
- package/dist/{chunk-CSRBRKXY.js.map → chunk-ISMIJ5DH.js.map} +1 -1
- package/dist/{chunk-L7PF4KD6.js → chunk-LBAWZ4EV.js} +3 -3
- package/dist/{chunk-L7PF4KD6.js.map → chunk-LBAWZ4EV.js.map} +1 -1
- package/dist/{chunk-QK27VDVB.js → chunk-LCY6USO2.js} +35 -18
- package/dist/chunk-LCY6USO2.js.map +1 -0
- package/dist/{chunk-XWHGXSQV.js → chunk-LPGSPM53.js} +3 -3
- package/dist/{chunk-XWHGXSQV.js.map → chunk-LPGSPM53.js.map} +1 -1
- package/dist/{chunk-5EJAENH5.js → chunk-MDFK6L72.js} +3 -3
- package/dist/{chunk-5EJAENH5.js.map → chunk-MDFK6L72.js.map} +1 -1
- package/dist/chunk-NQIDHQ6U.js +3 -0
- package/dist/chunk-NQIDHQ6U.js.map +1 -0
- package/dist/chunk-NTVB7R3A.js +30 -0
- package/dist/chunk-NTVB7R3A.js.map +1 -0
- package/dist/chunk-O4AO4YWC.js +30 -0
- package/dist/chunk-O4AO4YWC.js.map +1 -0
- package/dist/{chunk-S4WWYHQM.js → chunk-OH4CXHFH.js} +13 -3
- package/dist/chunk-OH4CXHFH.js.map +1 -0
- package/dist/{chunk-B6A7VF4R.js → chunk-OWD47AWI.js} +3 -3
- package/dist/{chunk-B6A7VF4R.js.map → chunk-OWD47AWI.js.map} +1 -1
- package/dist/{chunk-QB7SZS2C.js → chunk-OY53JDPO.js} +40 -19
- package/dist/chunk-OY53JDPO.js.map +1 -0
- package/dist/{chunk-665E36SC.js → chunk-P3EJRH4P.js} +4 -4
- package/dist/{chunk-665E36SC.js.map → chunk-P3EJRH4P.js.map} +1 -1
- package/dist/{chunk-GWAYWBHN.js → chunk-PTZR6C7Y.js} +14 -6
- package/dist/chunk-PTZR6C7Y.js.map +1 -0
- package/dist/{chunk-E2EFGMWA.js → chunk-QSSKPIG5.js} +3 -3
- package/dist/{chunk-E2EFGMWA.js.map → chunk-QSSKPIG5.js.map} +1 -1
- package/dist/{chunk-FBARVLLP.js → chunk-RSJK46ZE.js} +3 -3
- package/dist/{chunk-FBARVLLP.js.map → chunk-RSJK46ZE.js.map} +1 -1
- package/dist/chunk-RWO34ORS.js +33 -0
- package/dist/chunk-RWO34ORS.js.map +1 -0
- package/dist/{chunk-JSNXKBZA.js → chunk-SH6K4PUU.js} +3 -3
- package/dist/{chunk-JSNXKBZA.js.map → chunk-SH6K4PUU.js.map} +1 -1
- package/dist/{chunk-EQV33L7H.js → chunk-T5NFIPTU.js} +3 -3
- package/dist/{chunk-EQV33L7H.js.map → chunk-T5NFIPTU.js.map} +1 -1
- package/dist/{chunk-CDNOUZEI.js → chunk-TAOFFAG3.js} +3 -3
- package/dist/{chunk-CDNOUZEI.js.map → chunk-TAOFFAG3.js.map} +1 -1
- package/dist/{chunk-YD5MPZWY.js → chunk-TTDHGQEC.js} +3 -3
- package/dist/{chunk-YD5MPZWY.js.map → chunk-TTDHGQEC.js.map} +1 -1
- package/dist/{chunk-JLCQ7MGC.js → chunk-ULNZHOMA.js} +3 -3
- package/dist/{chunk-JLCQ7MGC.js.map → chunk-ULNZHOMA.js.map} +1 -1
- package/dist/{chunk-KLONQL76.js → chunk-UTSZKJAL.js} +7 -7
- package/dist/{chunk-KLONQL76.js.map → chunk-UTSZKJAL.js.map} +1 -1
- package/dist/{chunk-ANWQBKGN.js → chunk-VDCITFZG.js} +3 -3
- package/dist/{chunk-ANWQBKGN.js.map → chunk-VDCITFZG.js.map} +1 -1
- package/dist/chunk-VE2XZSKP.js +150 -0
- package/dist/chunk-VE2XZSKP.js.map +1 -0
- package/dist/{chunk-NHFSEWO2.js → chunk-VJT3UGN2.js} +34 -19
- package/dist/chunk-VJT3UGN2.js.map +1 -0
- package/dist/{chunk-SKDMG3FK.js → chunk-W2K4RQ3M.js} +33 -33
- package/dist/{chunk-SKDMG3FK.js.map → chunk-W2K4RQ3M.js.map} +1 -1
- package/dist/{chunk-VSW3NBJQ.js → chunk-WAYYRZ2L.js} +3 -3
- package/dist/{chunk-VSW3NBJQ.js.map → chunk-WAYYRZ2L.js.map} +1 -1
- package/dist/{chunk-JKDU7QYP.js → chunk-Z7KH65RZ.js} +3 -3
- package/dist/{chunk-JKDU7QYP.js.map → chunk-Z7KH65RZ.js.map} +1 -1
- package/dist/chunk-ZWAYSR5K.js +30 -0
- package/dist/chunk-ZWAYSR5K.js.map +1 -0
- package/dist/cnh.d.ts +2 -2
- package/dist/cnh.js +3 -3
- package/dist/cnpj.d.ts +2 -2
- package/dist/cnpj.js +4 -4
- package/dist/compare.d.ts +3 -3
- package/dist/compare.js +26 -24
- package/dist/cpf.d.ts +2 -2
- package/dist/cpf.js +4 -4
- package/dist/data-catalog.js +33 -11
- package/dist/data-catalog.js.map +1 -1
- package/dist/detect.d.ts +2 -2
- package/dist/detect.js +22 -21
- package/dist/diff.d.ts +3 -3
- package/dist/diff.js +26 -24
- package/dist/generate.d.ts +1 -1
- package/dist/generate.js +35 -35
- package/dist/incoterms.d.ts +36 -0
- package/dist/incoterms.js +87 -0
- package/dist/incoterms.js.map +1 -0
- package/dist/{index-BEJFgDXj.d.ts → index-CJ5ACErT.d.ts} +2 -2
- package/dist/index.d.ts +8 -6
- package/dist/index.js +62 -57
- package/dist/index.js.map +1 -1
- package/dist/{inscricao-estadual-produtor-rural-BXFVQscj.d.ts → inscricao-estadual-produtor-rural-BNAyLQPY.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 +3 -3
- package/dist/mask.js +36 -33
- package/dist/moedas.d.ts +42 -0
- package/dist/moedas.js +977 -0
- package/dist/moedas.js.map +1 -0
- package/dist/natureza-juridica.d.ts +37 -0
- package/dist/natureza-juridica.js +398 -0
- package/dist/natureza-juridica.js.map +1 -0
- package/dist/nbs.d.ts +40 -0
- package/dist/nbs.js +3728 -0
- package/dist/nbs.js.map +1 -0
- package/dist/nfe-chave.d.ts +2 -2
- package/dist/nfe-chave.js +3 -3
- package/dist/paises-bacen.d.ts +35 -0
- package/dist/paises-bacen.js +1044 -0
- package/dist/paises-bacen.js.map +1 -0
- package/dist/pis-pasep.d.ts +2 -2
- package/dist/pis-pasep.js +3 -3
- package/dist/{pix-B4habHLG.d.ts → pix-QsM0lMas.d.ts} +1 -1
- package/dist/pix.d.ts +2 -2
- package/dist/pix.js +7 -7
- package/dist/placa.d.ts +2 -2
- package/dist/placa.js +3 -3
- package/dist/pncp-reference.d.ts +56 -0
- package/dist/pncp-reference.js +1560 -0
- package/dist/pncp-reference.js.map +1 -0
- package/dist/portos.d.ts +48 -0
- package/dist/portos.js +12094 -0
- package/dist/portos.js.map +1 -0
- package/dist/processo-judicial.d.ts +71 -0
- package/dist/processo-judicial.js +6 -0
- package/dist/processo-judicial.js.map +1 -0
- package/dist/renavam.d.ts +2 -2
- package/dist/renavam.js +3 -3
- package/dist/rg.d.ts +69 -0
- package/dist/rg.js +5 -0
- package/dist/rg.js.map +1 -0
- package/dist/sanitize.d.ts +2 -2
- package/dist/sanitize.js +21 -19
- package/dist/telefone.d.ts +2 -2
- package/dist/telefone.js +3 -3
- package/dist/titulo-eleitor.d.ts +2 -2
- package/dist/titulo-eleitor.js +3 -3
- package/dist/transparencia-snapshots.d.ts +61 -0
- package/dist/transparencia-snapshots.js +119 -0
- package/dist/transparencia-snapshots.js.map +1 -0
- package/dist/tse-municipios.d.ts +39 -0
- package/dist/tse-municipios.js +33469 -0
- package/dist/tse-municipios.js.map +1 -0
- package/dist/{types-MXifBcV5.d.ts → types-CQvCmvGu.d.ts} +2 -2
- package/dist/{validation-result-BaI2Xder.d.ts → validation-result-hfVg2-Mc.d.ts} +23 -3
- package/package.json +66 -1
- package/dist/chunk-GWAYWBHN.js.map +0 -1
- package/dist/chunk-ITHT54NC.js.map +0 -1
- package/dist/chunk-NHFSEWO2.js.map +0 -1
- package/dist/chunk-NUQSMT4Y.js.map +0 -1
- package/dist/chunk-QB7SZS2C.js.map +0 -1
- package/dist/chunk-QK27VDVB.js.map +0 -1
- package/dist/chunk-S4WWYHQM.js.map +0 -1
- package/dist/chunk-ZTDLGGYE.js.map +0 -1
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
import { brandRg } from './chunk-4NFEM2SU.js';
|
|
2
|
+
|
|
3
|
+
// src/core/rg/constants.ts
|
|
4
|
+
var RG_OFFICIAL_SOURCE_URL = "http://ghiorzi.org/DVnew.htm";
|
|
5
|
+
var RG_OFFICIAL_SOURCE_URLS = {
|
|
6
|
+
SP: "http://ghiorzi.org/DVnew.htm",
|
|
7
|
+
RJ: "http://ghiorzi.org/DVnew.htm",
|
|
8
|
+
MG: "http://ghiorzi.org/DVnew.htm",
|
|
9
|
+
PR: "https://www.iipar.pr.gov.br/",
|
|
10
|
+
RS: "https://www.estado.rs.gov.br/",
|
|
11
|
+
SC: "https://www.ciasc.sc.gov.br/"
|
|
12
|
+
};
|
|
13
|
+
var RG_SUPPORTED_UFS = ["SP", "RJ", "MG", "PR", "RS", "SC"];
|
|
14
|
+
var RG_SP_GOLDEN = "120300011";
|
|
15
|
+
var RG_SP_GOLDEN_MASKED = "12.030.001-1";
|
|
16
|
+
var RG_SP_GOLDEN_X = "00000005X";
|
|
17
|
+
var RG_SP_GOLDEN_X_MASKED = "00.000.005-X";
|
|
18
|
+
var RG_RJ_GOLDEN = "27998111";
|
|
19
|
+
var RG_RJ_GOLDEN_MASKED = "2.799.811-1";
|
|
20
|
+
var RG_MG_GOLDEN = "27998111";
|
|
21
|
+
var RG_MG_GOLDEN_MASKED = "2.799.811-1";
|
|
22
|
+
var RG_MG_GOLDEN_PREFIXED = "M27998111";
|
|
23
|
+
var RG_PR_GOLDEN = "12345678";
|
|
24
|
+
var RG_RS_GOLDEN = "1234567890";
|
|
25
|
+
var RG_SC_GOLDEN = "123456789";
|
|
26
|
+
var RG_UF_RULES = {
|
|
27
|
+
SP: {
|
|
28
|
+
uf: "SP",
|
|
29
|
+
canonicalLength: 9,
|
|
30
|
+
baseLength: 8,
|
|
31
|
+
dvAlgorithm: "mod11-remainder",
|
|
32
|
+
allowsCheckDigitX: true,
|
|
33
|
+
supportsMask: true
|
|
34
|
+
},
|
|
35
|
+
RJ: {
|
|
36
|
+
uf: "RJ",
|
|
37
|
+
canonicalLength: 8,
|
|
38
|
+
baseLength: 7,
|
|
39
|
+
dvAlgorithm: "mod10-alternating",
|
|
40
|
+
allowsCheckDigitX: false,
|
|
41
|
+
supportsMask: true
|
|
42
|
+
},
|
|
43
|
+
MG: {
|
|
44
|
+
uf: "MG",
|
|
45
|
+
canonicalLength: 8,
|
|
46
|
+
baseLength: 7,
|
|
47
|
+
dvAlgorithm: "mod10-alternating",
|
|
48
|
+
allowsCheckDigitX: false,
|
|
49
|
+
allowsLetterPrefix: "M",
|
|
50
|
+
supportsMask: true
|
|
51
|
+
},
|
|
52
|
+
PR: {
|
|
53
|
+
uf: "PR",
|
|
54
|
+
canonicalLength: 8,
|
|
55
|
+
baseLength: 8,
|
|
56
|
+
dvAlgorithm: "format-only",
|
|
57
|
+
allowsCheckDigitX: false,
|
|
58
|
+
supportsMask: false
|
|
59
|
+
},
|
|
60
|
+
RS: {
|
|
61
|
+
uf: "RS",
|
|
62
|
+
canonicalLength: 10,
|
|
63
|
+
baseLength: 10,
|
|
64
|
+
dvAlgorithm: "format-only",
|
|
65
|
+
allowsCheckDigitX: false,
|
|
66
|
+
supportsMask: false
|
|
67
|
+
},
|
|
68
|
+
SC: {
|
|
69
|
+
uf: "SC",
|
|
70
|
+
canonicalLength: 9,
|
|
71
|
+
baseLength: 9,
|
|
72
|
+
dvAlgorithm: "format-only",
|
|
73
|
+
allowsCheckDigitX: false,
|
|
74
|
+
supportsMask: true
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// src/core/rg/modulo-rg.ts
|
|
79
|
+
var SP_WEIGHTS = [9, 8, 7, 6, 5, 4, 3, 2];
|
|
80
|
+
function computeRgSpCheckDigit(base8) {
|
|
81
|
+
let sum = 0;
|
|
82
|
+
for (let i = 0; i < SP_WEIGHTS.length; i++) {
|
|
83
|
+
sum += Number(base8.charAt(i)) * SP_WEIGHTS[i];
|
|
84
|
+
}
|
|
85
|
+
const remainder = sum % 11;
|
|
86
|
+
return remainder === 10 ? "X" : String(remainder);
|
|
87
|
+
}
|
|
88
|
+
function reduceMod10Digit(product) {
|
|
89
|
+
if (product > 9) {
|
|
90
|
+
return Math.floor(product / 10) + product % 10;
|
|
91
|
+
}
|
|
92
|
+
return product;
|
|
93
|
+
}
|
|
94
|
+
function computeRgMod10AlternatingCheckDigit(base) {
|
|
95
|
+
let sum = 0;
|
|
96
|
+
for (let i = base.length - 1, position = 0; i >= 0; i--, position++) {
|
|
97
|
+
const weight = position % 2 === 0 ? 2 : 1;
|
|
98
|
+
sum += reduceMod10Digit(Number(base.charAt(i)) * weight);
|
|
99
|
+
}
|
|
100
|
+
const digit = (10 - sum % 10) % 10;
|
|
101
|
+
return String(digit);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// src/core/rg/rg-common.ts
|
|
105
|
+
function rgFailure(uf, code, message) {
|
|
106
|
+
return { ok: false, code, message, uf };
|
|
107
|
+
}
|
|
108
|
+
function rgSuccess(canonical, uf, format, checkDigitValidated) {
|
|
109
|
+
return {
|
|
110
|
+
ok: true,
|
|
111
|
+
value: brandRg(canonical),
|
|
112
|
+
uf,
|
|
113
|
+
format,
|
|
114
|
+
checkDigitValidated
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function checkRgTrimmedEmpty(trimmed, uf) {
|
|
118
|
+
if (trimmed.length === 0) {
|
|
119
|
+
return { ok: false, code: "EMPTY_INPUT", message: "RG input is empty", uf };
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
function normalizeRgCheckDigit(digit) {
|
|
124
|
+
return digit.toUpperCase();
|
|
125
|
+
}
|
|
126
|
+
function matchesRgCheckDigit(expected, actual) {
|
|
127
|
+
return normalizeRgCheckDigit(expected) === normalizeRgCheckDigit(actual);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// src/core/rg/mg.ts
|
|
131
|
+
var UF = "MG";
|
|
132
|
+
var RULES = RG_UF_RULES.MG;
|
|
133
|
+
var MG_CHAR_PATTERN = /^[Mm0-9.\-\s]+$/;
|
|
134
|
+
function stripRgMg(input) {
|
|
135
|
+
const withoutSeparators = input.replace(/[.\-\s]/g, "");
|
|
136
|
+
const upper = withoutSeparators.toUpperCase();
|
|
137
|
+
if (upper.startsWith("M")) {
|
|
138
|
+
return `M${upper.slice(1).replace(/\D/g, "")}`;
|
|
139
|
+
}
|
|
140
|
+
return upper.replace(/\D/g, "");
|
|
141
|
+
}
|
|
142
|
+
function validateRgMg(input) {
|
|
143
|
+
const trimmed = input.trim();
|
|
144
|
+
const empty = checkRgTrimmedEmpty(trimmed, UF);
|
|
145
|
+
if (empty) return empty;
|
|
146
|
+
if (!MG_CHAR_PATTERN.test(trimmed)) {
|
|
147
|
+
return rgFailure(UF, "INVALID_CHARACTER", "MG RG contains invalid characters");
|
|
148
|
+
}
|
|
149
|
+
const hasPrefix = /^[Mm]/.test(trimmed.replace(/[.\-\s]/g, ""));
|
|
150
|
+
const stripped = stripRgMg(trimmed);
|
|
151
|
+
const digits = hasPrefix ? stripped.slice(1) : stripped;
|
|
152
|
+
if (digits.length !== RULES.canonicalLength) {
|
|
153
|
+
return rgFailure(
|
|
154
|
+
UF,
|
|
155
|
+
"INVALID_LENGTH",
|
|
156
|
+
`MG RG must have ${RULES.canonicalLength} digits after normalization`
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
const base = digits.slice(0, RULES.baseLength);
|
|
160
|
+
const expected = computeRgMod10AlternatingCheckDigit(base);
|
|
161
|
+
if (digits.charAt(RULES.baseLength) !== expected) {
|
|
162
|
+
return rgFailure(UF, "INVALID_CHECK_DIGIT", "MG RG check digit is invalid");
|
|
163
|
+
}
|
|
164
|
+
const branded = hasPrefix ? `M${digits}` : digits;
|
|
165
|
+
return rgSuccess(branded, UF, "rg", true);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// src/core/rg/pr.ts
|
|
169
|
+
var UF2 = "PR";
|
|
170
|
+
var RULES2 = RG_UF_RULES.PR;
|
|
171
|
+
function stripRgPr(input) {
|
|
172
|
+
return input.replace(/\D/g, "");
|
|
173
|
+
}
|
|
174
|
+
function validateRgPr(input) {
|
|
175
|
+
const trimmed = input.trim();
|
|
176
|
+
const empty = checkRgTrimmedEmpty(trimmed, UF2);
|
|
177
|
+
if (empty) return empty;
|
|
178
|
+
if (!/^[0-9.\-\s]+$/.test(trimmed)) {
|
|
179
|
+
return rgFailure(UF2, "INVALID_CHARACTER", "PR RG contains invalid characters");
|
|
180
|
+
}
|
|
181
|
+
const canonical = stripRgPr(trimmed);
|
|
182
|
+
if (canonical.length !== RULES2.canonicalLength) {
|
|
183
|
+
return rgFailure(
|
|
184
|
+
UF2,
|
|
185
|
+
"INVALID_LENGTH",
|
|
186
|
+
`PR RG must have ${RULES2.canonicalLength} digits after normalization`
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
return rgSuccess(canonical, UF2, "rg", false);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// src/core/rg/rj.ts
|
|
193
|
+
var UF3 = "RJ";
|
|
194
|
+
var RULES3 = RG_UF_RULES.RJ;
|
|
195
|
+
function stripRgRj(input) {
|
|
196
|
+
return input.replace(/\D/g, "");
|
|
197
|
+
}
|
|
198
|
+
function validateRgRj(input) {
|
|
199
|
+
const trimmed = input.trim();
|
|
200
|
+
const empty = checkRgTrimmedEmpty(trimmed, UF3);
|
|
201
|
+
if (empty) return empty;
|
|
202
|
+
if (!/^[0-9.\-\s]+$/.test(trimmed)) {
|
|
203
|
+
return rgFailure(UF3, "INVALID_CHARACTER", "RJ RG contains invalid characters");
|
|
204
|
+
}
|
|
205
|
+
const canonical = stripRgRj(trimmed);
|
|
206
|
+
if (canonical.length !== RULES3.canonicalLength) {
|
|
207
|
+
return rgFailure(
|
|
208
|
+
UF3,
|
|
209
|
+
"INVALID_LENGTH",
|
|
210
|
+
`RJ RG must have ${RULES3.canonicalLength} digits after normalization`
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
const base = canonical.slice(0, RULES3.baseLength);
|
|
214
|
+
const expected = computeRgMod10AlternatingCheckDigit(base);
|
|
215
|
+
if (canonical.charAt(RULES3.baseLength) !== expected) {
|
|
216
|
+
return rgFailure(UF3, "INVALID_CHECK_DIGIT", "RJ RG check digit is invalid");
|
|
217
|
+
}
|
|
218
|
+
return rgSuccess(canonical, UF3, "rg", true);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// src/core/rg/rs.ts
|
|
222
|
+
var UF4 = "RS";
|
|
223
|
+
var RULES4 = RG_UF_RULES.RS;
|
|
224
|
+
function stripRgRs(input) {
|
|
225
|
+
return input.replace(/\D/g, "");
|
|
226
|
+
}
|
|
227
|
+
function validateRgRs(input) {
|
|
228
|
+
const trimmed = input.trim();
|
|
229
|
+
const empty = checkRgTrimmedEmpty(trimmed, UF4);
|
|
230
|
+
if (empty) return empty;
|
|
231
|
+
if (!/^[0-9.\-\s/]+$/.test(trimmed)) {
|
|
232
|
+
return rgFailure(UF4, "INVALID_CHARACTER", "RS RG contains invalid characters");
|
|
233
|
+
}
|
|
234
|
+
const canonical = stripRgRs(trimmed);
|
|
235
|
+
if (canonical.length !== RULES4.canonicalLength) {
|
|
236
|
+
return rgFailure(
|
|
237
|
+
UF4,
|
|
238
|
+
"INVALID_LENGTH",
|
|
239
|
+
`RS RG must have ${RULES4.canonicalLength} digits after normalization`
|
|
240
|
+
);
|
|
241
|
+
}
|
|
242
|
+
return rgSuccess(canonical, UF4, "rg", false);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// src/core/rg/sc.ts
|
|
246
|
+
var UF5 = "SC";
|
|
247
|
+
var RULES5 = RG_UF_RULES.SC;
|
|
248
|
+
function stripRgSc(input) {
|
|
249
|
+
return input.replace(/\D/g, "");
|
|
250
|
+
}
|
|
251
|
+
function validateRgSc(input) {
|
|
252
|
+
const trimmed = input.trim();
|
|
253
|
+
const empty = checkRgTrimmedEmpty(trimmed, UF5);
|
|
254
|
+
if (empty) return empty;
|
|
255
|
+
if (!/^[0-9.\-\s]+$/.test(trimmed)) {
|
|
256
|
+
return rgFailure(UF5, "INVALID_CHARACTER", "SC RG contains invalid characters");
|
|
257
|
+
}
|
|
258
|
+
const canonical = stripRgSc(trimmed);
|
|
259
|
+
if (canonical.length !== RULES5.canonicalLength) {
|
|
260
|
+
return rgFailure(
|
|
261
|
+
UF5,
|
|
262
|
+
"INVALID_LENGTH",
|
|
263
|
+
`SC RG must have ${RULES5.canonicalLength} digits after normalization`
|
|
264
|
+
);
|
|
265
|
+
}
|
|
266
|
+
return rgSuccess(canonical, UF5, "rg", false);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// src/core/rg/sp.ts
|
|
270
|
+
var UF6 = "SP";
|
|
271
|
+
var RULES6 = RG_UF_RULES.SP;
|
|
272
|
+
var SP_CHAR_PATTERN = /^[0-9.\-\sXx]+$/;
|
|
273
|
+
function stripRgSp(input) {
|
|
274
|
+
return input.replace(/[.\-\s]/g, "").toUpperCase();
|
|
275
|
+
}
|
|
276
|
+
function validateRgSp(input) {
|
|
277
|
+
const trimmed = input.trim();
|
|
278
|
+
const empty = checkRgTrimmedEmpty(trimmed, UF6);
|
|
279
|
+
if (empty) return empty;
|
|
280
|
+
if (!SP_CHAR_PATTERN.test(trimmed)) {
|
|
281
|
+
return rgFailure(UF6, "INVALID_CHARACTER", "SP RG contains invalid characters");
|
|
282
|
+
}
|
|
283
|
+
const canonical = stripRgSp(trimmed);
|
|
284
|
+
if (canonical.length !== RULES6.canonicalLength) {
|
|
285
|
+
return rgFailure(
|
|
286
|
+
UF6,
|
|
287
|
+
"INVALID_LENGTH",
|
|
288
|
+
`SP RG must have ${RULES6.canonicalLength} characters after normalization`
|
|
289
|
+
);
|
|
290
|
+
}
|
|
291
|
+
const base = canonical.slice(0, RULES6.baseLength);
|
|
292
|
+
if (!/^\d{8}$/.test(base)) {
|
|
293
|
+
return rgFailure(UF6, "INVALID_CHARACTER", "SP RG base must be 8 digits");
|
|
294
|
+
}
|
|
295
|
+
const expected = computeRgSpCheckDigit(base);
|
|
296
|
+
const actual = canonical.charAt(RULES6.baseLength);
|
|
297
|
+
if (!matchesRgCheckDigit(expected, actual)) {
|
|
298
|
+
return rgFailure(UF6, "INVALID_CHECK_DIGIT", "SP RG check digit is invalid");
|
|
299
|
+
}
|
|
300
|
+
return rgSuccess(canonical, UF6, "rg", true);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// src/core/rg/mask.ts
|
|
304
|
+
function applyRgSpStyleMask(canonical) {
|
|
305
|
+
if (canonical.length !== 9) {
|
|
306
|
+
throw new Error("RG must have 9 characters for SP-style mask");
|
|
307
|
+
}
|
|
308
|
+
return `${canonical.slice(0, 2)}.${canonical.slice(2, 5)}.${canonical.slice(5, 8)}-${canonical.slice(8)}`;
|
|
309
|
+
}
|
|
310
|
+
function applyRgRjStyleMask(canonical) {
|
|
311
|
+
if (canonical.length !== 8) {
|
|
312
|
+
throw new Error("RG must have 8 digits for RJ-style mask");
|
|
313
|
+
}
|
|
314
|
+
return `${canonical.charAt(0)}.${canonical.slice(1, 4)}.${canonical.slice(4, 7)}-${canonical.charAt(7)}`;
|
|
315
|
+
}
|
|
316
|
+
function applyRgScMask(canonical) {
|
|
317
|
+
if (canonical.length !== 9) {
|
|
318
|
+
throw new Error("RG must have 9 digits for SC mask");
|
|
319
|
+
}
|
|
320
|
+
return `${canonical.slice(0, 3)}.${canonical.slice(3, 6)}.${canonical.slice(6)}`;
|
|
321
|
+
}
|
|
322
|
+
function applyRgMask(canonical, uf) {
|
|
323
|
+
if (uf === "SP") {
|
|
324
|
+
return applyRgSpStyleMask(canonical);
|
|
325
|
+
}
|
|
326
|
+
if (uf === "RJ" || uf === "MG") {
|
|
327
|
+
const digits = canonical.startsWith("M") ? canonical.slice(1) : canonical;
|
|
328
|
+
const masked = applyRgRjStyleMask(digits);
|
|
329
|
+
return canonical.startsWith("M") ? `M${masked}` : masked;
|
|
330
|
+
}
|
|
331
|
+
if (uf === "SC") {
|
|
332
|
+
return applyRgScMask(canonical);
|
|
333
|
+
}
|
|
334
|
+
return canonical;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
// src/core/rg/index.ts
|
|
338
|
+
var VALIDATORS = {
|
|
339
|
+
SP: validateRgSp,
|
|
340
|
+
RJ: validateRgRj,
|
|
341
|
+
MG: validateRgMg,
|
|
342
|
+
PR: validateRgPr,
|
|
343
|
+
RS: validateRgRs,
|
|
344
|
+
SC: validateRgSc
|
|
345
|
+
};
|
|
346
|
+
var STRIPPERS = {
|
|
347
|
+
SP: stripRgSp,
|
|
348
|
+
RJ: stripRgRj,
|
|
349
|
+
MG: stripRgMg,
|
|
350
|
+
PR: stripRgPr,
|
|
351
|
+
RS: stripRgRs,
|
|
352
|
+
SC: stripRgSc
|
|
353
|
+
};
|
|
354
|
+
function failure(code, message) {
|
|
355
|
+
return { ok: false, code, message };
|
|
356
|
+
}
|
|
357
|
+
function isSupportedRgUf(uf) {
|
|
358
|
+
return uf !== void 0 && RG_SUPPORTED_UFS.includes(uf);
|
|
359
|
+
}
|
|
360
|
+
function getRgOfficialSourceUrl(uf) {
|
|
361
|
+
return RG_OFFICIAL_SOURCE_URLS[uf];
|
|
362
|
+
}
|
|
363
|
+
function getRgUfSupport() {
|
|
364
|
+
return RG_SUPPORTED_UFS;
|
|
365
|
+
}
|
|
366
|
+
function getRgUfRules(uf) {
|
|
367
|
+
return RG_UF_RULES[uf];
|
|
368
|
+
}
|
|
369
|
+
function stripRg(input, options) {
|
|
370
|
+
if (!isSupportedRgUf(options.uf)) {
|
|
371
|
+
return input.replace(/\D/g, "");
|
|
372
|
+
}
|
|
373
|
+
return STRIPPERS[options.uf](input);
|
|
374
|
+
}
|
|
375
|
+
function isValidRg(input, options) {
|
|
376
|
+
return validateRg(input, options).ok;
|
|
377
|
+
}
|
|
378
|
+
function validateRg(input, options) {
|
|
379
|
+
if (!isSupportedRgUf(options.uf)) {
|
|
380
|
+
return failure("UF_NOT_IMPLEMENTED", `UF ${String(options.uf)} is not implemented for RG validation`);
|
|
381
|
+
}
|
|
382
|
+
return VALIDATORS[options.uf](input);
|
|
383
|
+
}
|
|
384
|
+
function formatRg(input, options) {
|
|
385
|
+
const result = validateRg(input, options);
|
|
386
|
+
if (!result.ok) {
|
|
387
|
+
return { ok: false, code: result.code, message: result.message };
|
|
388
|
+
}
|
|
389
|
+
const rules = RG_UF_RULES[options.uf];
|
|
390
|
+
if (!rules.supportsMask) {
|
|
391
|
+
return { ok: true, formatted: result.value };
|
|
392
|
+
}
|
|
393
|
+
return { ok: true, formatted: applyRgMask(result.value, options.uf) };
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
export { RG_MG_GOLDEN, RG_MG_GOLDEN_MASKED, RG_MG_GOLDEN_PREFIXED, RG_OFFICIAL_SOURCE_URL, RG_OFFICIAL_SOURCE_URLS, RG_PR_GOLDEN, RG_RJ_GOLDEN, RG_RJ_GOLDEN_MASKED, RG_RS_GOLDEN, RG_SC_GOLDEN, RG_SP_GOLDEN, RG_SP_GOLDEN_MASKED, RG_SP_GOLDEN_X, RG_SP_GOLDEN_X_MASKED, RG_SUPPORTED_UFS, RG_UF_RULES, computeRgMod10AlternatingCheckDigit, computeRgSpCheckDigit, formatRg, getRgOfficialSourceUrl, getRgUfRules, getRgUfSupport, isValidRg, stripRg, validateRg, validateRgMg, validateRgPr, validateRgRj, validateRgRs, validateRgSc, validateRgSp };
|
|
397
|
+
//# sourceMappingURL=chunk-G557DGIX.js.map
|
|
398
|
+
//# sourceMappingURL=chunk-G557DGIX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/rg/constants.ts","../src/core/rg/modulo-rg.ts","../src/core/rg/rg-common.ts","../src/core/rg/mg.ts","../src/core/rg/pr.ts","../src/core/rg/rj.ts","../src/core/rg/rs.ts","../src/core/rg/sc.ts","../src/core/rg/sp.ts","../src/core/rg/mask.ts","../src/core/rg/index.ts"],"names":["UF","RULES"],"mappings":";;;AAOO,IAAM,sBAAA,GAAyB;AAE/B,IAAM,uBAAA,GAAoD;AAAA,EAC/D,EAAA,EAAI,8BAAA;AAAA,EACJ,EAAA,EAAI,8BAAA;AAAA,EACJ,EAAA,EAAI,8BAAA;AAAA,EACJ,EAAA,EAAI,8BAAA;AAAA,EACJ,EAAA,EAAI,+BAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,IAAM,mBAAmB,CAAC,IAAA,EAAM,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI;AAE5D,IAAM,YAAA,GAAe;AACrB,IAAM,mBAAA,GAAsB;AAC5B,IAAM,cAAA,GAAiB;AACvB,IAAM,qBAAA,GAAwB;AAE9B,IAAM,YAAA,GAAe;AACrB,IAAM,mBAAA,GAAsB;AAE5B,IAAM,YAAA,GAAe;AACrB,IAAM,mBAAA,GAAsB;AAC5B,IAAM,qBAAA,GAAwB;AAE9B,IAAM,YAAA,GAAe;AAErB,IAAM,YAAA,GAAe;AAErB,IAAM,YAAA,GAAe;AAErB,IAAM,WAAA,GAA2C;AAAA,EACtD,EAAA,EAAI;AAAA,IACF,EAAA,EAAI,IAAA;AAAA,IACJ,eAAA,EAAiB,CAAA;AAAA,IACjB,UAAA,EAAY,CAAA;AAAA,IACZ,WAAA,EAAa,iBAAA;AAAA,IACb,iBAAA,EAAmB,IAAA;AAAA,IACnB,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,EAAA,EAAI,IAAA;AAAA,IACJ,eAAA,EAAiB,CAAA;AAAA,IACjB,UAAA,EAAY,CAAA;AAAA,IACZ,WAAA,EAAa,mBAAA;AAAA,IACb,iBAAA,EAAmB,KAAA;AAAA,IACnB,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,EAAA,EAAI,IAAA;AAAA,IACJ,eAAA,EAAiB,CAAA;AAAA,IACjB,UAAA,EAAY,CAAA;AAAA,IACZ,WAAA,EAAa,mBAAA;AAAA,IACb,iBAAA,EAAmB,KAAA;AAAA,IACnB,kBAAA,EAAoB,GAAA;AAAA,IACpB,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,EAAA,EAAI,IAAA;AAAA,IACJ,eAAA,EAAiB,CAAA;AAAA,IACjB,UAAA,EAAY,CAAA;AAAA,IACZ,WAAA,EAAa,aAAA;AAAA,IACb,iBAAA,EAAmB,KAAA;AAAA,IACnB,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,EAAA,EAAI,IAAA;AAAA,IACJ,eAAA,EAAiB,EAAA;AAAA,IACjB,UAAA,EAAY,EAAA;AAAA,IACZ,WAAA,EAAa,aAAA;AAAA,IACb,iBAAA,EAAmB,KAAA;AAAA,IACnB,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,EAAA,EAAI,IAAA;AAAA,IACJ,eAAA,EAAiB,CAAA;AAAA,IACjB,UAAA,EAAY,CAAA;AAAA,IACZ,WAAA,EAAa,aAAA;AAAA,IACb,iBAAA,EAAmB,KAAA;AAAA,IACnB,YAAA,EAAc;AAAA;AAElB;;;ACnFA,IAAM,UAAA,GAAa,CAAC,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAGnC,SAAS,sBAAsB,KAAA,EAAuB;AAC3D,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAC1C,IAAA,GAAA,IAAO,OAAO,KAAA,CAAM,MAAA,CAAO,CAAC,CAAC,CAAA,GAAI,WAAW,CAAC,CAAA;AAAA,EAC/C;AACA,EAAA,MAAM,YAAY,GAAA,GAAM,EAAA;AACxB,EAAA,OAAO,SAAA,KAAc,EAAA,GAAK,GAAA,GAAM,MAAA,CAAO,SAAS,CAAA;AAClD;AAEA,SAAS,iBAAiB,OAAA,EAAyB;AACjD,EAAA,IAAI,UAAU,CAAA,EAAG;AACf,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,EAAE,IAAK,OAAA,GAAU,EAAA;AAAA,EAC/C;AACA,EAAA,OAAO,OAAA;AACT;AAGO,SAAS,oCAAoC,IAAA,EAAsB;AACxE,EAAA,IAAI,GAAA,GAAM,CAAA;AACV,EAAA,KAAA,IAAS,CAAA,GAAI,KAAK,MAAA,GAAS,CAAA,EAAG,WAAW,CAAA,EAAG,CAAA,IAAK,CAAA,EAAG,CAAA,EAAA,EAAK,QAAA,EAAA,EAAY;AACnE,IAAA,MAAM,MAAA,GAAS,QAAA,GAAW,CAAA,KAAM,CAAA,GAAI,CAAA,GAAI,CAAA;AACxC,IAAA,GAAA,IAAO,iBAAiB,MAAA,CAAO,IAAA,CAAK,OAAO,CAAC,CAAC,IAAI,MAAM,CAAA;AAAA,EACzD;AACA,EAAA,MAAM,KAAA,GAAA,CAAS,EAAA,GAAM,GAAA,GAAM,EAAA,IAAO,EAAA;AAClC,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;;;AC1BO,SAAS,SAAA,CAAU,EAAA,EAAc,IAAA,EAA8B,OAAA,EAAiC;AACrG,EAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,SAAS,EAAA,EAAG;AACxC;AAEO,SAAS,SAAA,CACd,SAAA,EACA,EAAA,EACA,MAAA,EACA,mBAAA,EAC2C;AAC3C,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO,QAAQ,SAAS,CAAA;AAAA,IACxB,EAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,SAAS,mBAAA,CAAoB,SAAiB,EAAA,EAAqC;AACxF,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,MAAM,aAAA,EAAe,OAAA,EAAS,qBAAqB,EAAA,EAAG;AAAA,EAC5E;AACA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,sBAAsB,KAAA,EAAuB;AAC3D,EAAA,OAAO,MAAM,WAAA,EAAY;AAC3B;AAEO,SAAS,mBAAA,CAAoB,UAAkB,MAAA,EAAyB;AAC7E,EAAA,OAAO,qBAAA,CAAsB,QAAQ,CAAA,KAAM,qBAAA,CAAsB,MAAM,CAAA;AACzE;;;AC/BA,IAAM,EAAA,GAAK,IAAA;AACX,IAAM,QAAQ,WAAA,CAAY,EAAA;AAC1B,IAAM,eAAA,GAAkB,iBAAA;AAEjB,SAAS,UAAU,KAAA,EAAuB;AAC/C,EAAA,MAAM,iBAAA,GAAoB,KAAA,CAAM,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA;AACtD,EAAA,MAAM,KAAA,GAAQ,kBAAkB,WAAA,EAAY;AAC5C,EAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,EAAG;AACzB,IAAA,OAAO,CAAA,CAAA,EAAI,MAAM,KAAA,CAAM,CAAC,EAAE,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAC,CAAA,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAChC;AAEO,SAAS,aAAa,KAAA,EAAmC;AAC9D,EAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,EAAA,MAAM,KAAA,GAAQ,mBAAA,CAAoB,OAAA,EAAS,EAAE,CAAA;AAC7C,EAAA,IAAI,OAAO,OAAO,KAAA;AAElB,EAAA,IAAI,CAAC,eAAA,CAAgB,IAAA,CAAK,OAAO,CAAA,EAAG;AAClC,IAAA,OAAO,SAAA,CAAU,EAAA,EAAI,mBAAA,EAAqB,mCAAmC,CAAA;AAAA,EAC/E;AAEA,EAAA,MAAM,YAAY,OAAA,CAAQ,IAAA,CAAK,QAAQ,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAC,CAAA;AAC9D,EAAA,MAAM,QAAA,GAAW,UAAU,OAAO,CAAA;AAClC,EAAA,MAAM,MAAA,GAAS,SAAA,GAAY,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA,GAAI,QAAA;AAC/C,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,KAAA,CAAM,eAAA,EAAiB;AAC3C,IAAA,OAAO,SAAA;AAAA,MACL,EAAA;AAAA,MACA,gBAAA;AAAA,MACA,CAAA,gBAAA,EAAmB,MAAM,eAAe,CAAA,2BAAA;AAAA,KAC1C;AAAA,EACF;AAEA,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,MAAM,UAAU,CAAA;AAC7C,EAAA,MAAM,QAAA,GAAW,oCAAoC,IAAI,CAAA;AACzD,EAAA,IAAI,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,UAAU,MAAM,QAAA,EAAU;AAChD,IAAA,OAAO,SAAA,CAAU,EAAA,EAAI,qBAAA,EAAuB,8BAA8B,CAAA;AAAA,EAC5E;AAEA,EAAA,MAAM,OAAA,GAAU,SAAA,GAAY,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,GAAK,MAAA;AAC3C,EAAA,OAAO,SAAA,CAAU,OAAA,EAAS,EAAA,EAAI,IAAA,EAAM,IAAI,CAAA;AAC1C;;;ACzCA,IAAMA,GAAAA,GAAK,IAAA;AACX,IAAMC,SAAQ,WAAA,CAAY,EAAA;AAEnB,SAAS,UAAU,KAAA,EAAuB;AAC/C,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAChC;AAEO,SAAS,aAAa,KAAA,EAAmC;AAC9D,EAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,EAAA,MAAM,KAAA,GAAQ,mBAAA,CAAoB,OAAA,EAASD,GAAE,CAAA;AAC7C,EAAA,IAAI,OAAO,OAAO,KAAA;AAElB,EAAA,IAAI,CAAC,eAAA,CAAgB,IAAA,CAAK,OAAO,CAAA,EAAG;AAClC,IAAA,OAAO,SAAA,CAAUA,GAAAA,EAAI,mBAAA,EAAqB,mCAAmC,CAAA;AAAA,EAC/E;AAEA,EAAA,MAAM,SAAA,GAAY,UAAU,OAAO,CAAA;AACnC,EAAA,IAAI,SAAA,CAAU,MAAA,KAAWC,MAAAA,CAAM,eAAA,EAAiB;AAC9C,IAAA,OAAO,SAAA;AAAA,MACLD,GAAAA;AAAA,MACA,gBAAA;AAAA,MACA,CAAA,gBAAA,EAAmBC,OAAM,eAAe,CAAA,2BAAA;AAAA,KAC1C;AAAA,EACF;AAEA,EAAA,OAAO,SAAA,CAAU,SAAA,EAAWD,GAAAA,EAAI,IAAA,EAAM,KAAK,CAAA;AAC7C;;;AC1BA,IAAMA,GAAAA,GAAK,IAAA;AACX,IAAMC,SAAQ,WAAA,CAAY,EAAA;AAEnB,SAAS,UAAU,KAAA,EAAuB;AAC/C,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAChC;AAEO,SAAS,aAAa,KAAA,EAAmC;AAC9D,EAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,EAAA,MAAM,KAAA,GAAQ,mBAAA,CAAoB,OAAA,EAASD,GAAE,CAAA;AAC7C,EAAA,IAAI,OAAO,OAAO,KAAA;AAElB,EAAA,IAAI,CAAC,eAAA,CAAgB,IAAA,CAAK,OAAO,CAAA,EAAG;AAClC,IAAA,OAAO,SAAA,CAAUA,GAAAA,EAAI,mBAAA,EAAqB,mCAAmC,CAAA;AAAA,EAC/E;AAEA,EAAA,MAAM,SAAA,GAAY,UAAU,OAAO,CAAA;AACnC,EAAA,IAAI,SAAA,CAAU,MAAA,KAAWC,MAAAA,CAAM,eAAA,EAAiB;AAC9C,IAAA,OAAO,SAAA;AAAA,MACLD,GAAAA;AAAA,MACA,gBAAA;AAAA,MACA,CAAA,gBAAA,EAAmBC,OAAM,eAAe,CAAA,2BAAA;AAAA,KAC1C;AAAA,EACF;AAEA,EAAA,MAAM,IAAA,GAAO,SAAA,CAAU,KAAA,CAAM,CAAA,EAAGA,OAAM,UAAU,CAAA;AAChD,EAAA,MAAM,QAAA,GAAW,oCAAoC,IAAI,CAAA;AACzD,EAAA,IAAI,SAAA,CAAU,MAAA,CAAOA,MAAAA,CAAM,UAAU,MAAM,QAAA,EAAU;AACnD,IAAA,OAAO,SAAA,CAAUD,GAAAA,EAAI,qBAAA,EAAuB,8BAA8B,CAAA;AAAA,EAC5E;AAEA,EAAA,OAAO,SAAA,CAAU,SAAA,EAAWA,GAAAA,EAAI,IAAA,EAAM,IAAI,CAAA;AAC5C;;;AChCA,IAAMA,GAAAA,GAAK,IAAA;AACX,IAAMC,SAAQ,WAAA,CAAY,EAAA;AAEnB,SAAS,UAAU,KAAA,EAAuB;AAC/C,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAChC;AAEO,SAAS,aAAa,KAAA,EAAmC;AAC9D,EAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,EAAA,MAAM,KAAA,GAAQ,mBAAA,CAAoB,OAAA,EAASD,GAAE,CAAA;AAC7C,EAAA,IAAI,OAAO,OAAO,KAAA;AAElB,EAAA,IAAI,CAAC,gBAAA,CAAiB,IAAA,CAAK,OAAO,CAAA,EAAG;AACnC,IAAA,OAAO,SAAA,CAAUA,GAAAA,EAAI,mBAAA,EAAqB,mCAAmC,CAAA;AAAA,EAC/E;AAEA,EAAA,MAAM,SAAA,GAAY,UAAU,OAAO,CAAA;AACnC,EAAA,IAAI,SAAA,CAAU,MAAA,KAAWC,MAAAA,CAAM,eAAA,EAAiB;AAC9C,IAAA,OAAO,SAAA;AAAA,MACLD,GAAAA;AAAA,MACA,gBAAA;AAAA,MACA,CAAA,gBAAA,EAAmBC,OAAM,eAAe,CAAA,2BAAA;AAAA,KAC1C;AAAA,EACF;AAEA,EAAA,OAAO,SAAA,CAAU,SAAA,EAAWD,GAAAA,EAAI,IAAA,EAAM,KAAK,CAAA;AAC7C;;;AC1BA,IAAMA,GAAAA,GAAK,IAAA;AACX,IAAMC,SAAQ,WAAA,CAAY,EAAA;AAEnB,SAAS,UAAU,KAAA,EAAuB;AAC/C,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAChC;AAEO,SAAS,aAAa,KAAA,EAAmC;AAC9D,EAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,EAAA,MAAM,KAAA,GAAQ,mBAAA,CAAoB,OAAA,EAASD,GAAE,CAAA;AAC7C,EAAA,IAAI,OAAO,OAAO,KAAA;AAElB,EAAA,IAAI,CAAC,eAAA,CAAgB,IAAA,CAAK,OAAO,CAAA,EAAG;AAClC,IAAA,OAAO,SAAA,CAAUA,GAAAA,EAAI,mBAAA,EAAqB,mCAAmC,CAAA;AAAA,EAC/E;AAEA,EAAA,MAAM,SAAA,GAAY,UAAU,OAAO,CAAA;AACnC,EAAA,IAAI,SAAA,CAAU,MAAA,KAAWC,MAAAA,CAAM,eAAA,EAAiB;AAC9C,IAAA,OAAO,SAAA;AAAA,MACLD,GAAAA;AAAA,MACA,gBAAA;AAAA,MACA,CAAA,gBAAA,EAAmBC,OAAM,eAAe,CAAA,2BAAA;AAAA,KAC1C;AAAA,EACF;AAEA,EAAA,OAAO,SAAA,CAAU,SAAA,EAAWD,GAAAA,EAAI,IAAA,EAAM,KAAK,CAAA;AAC7C;;;ACrBA,IAAMA,GAAAA,GAAK,IAAA;AACX,IAAMC,SAAQ,WAAA,CAAY,EAAA;AAC1B,IAAM,eAAA,GAAkB,iBAAA;AAEjB,SAAS,UAAU,KAAA,EAAuB;AAC/C,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,UAAA,EAAY,EAAE,EAAE,WAAA,EAAY;AACnD;AAEO,SAAS,aAAa,KAAA,EAAmC;AAC9D,EAAA,MAAM,OAAA,GAAU,MAAM,IAAA,EAAK;AAC3B,EAAA,MAAM,KAAA,GAAQ,mBAAA,CAAoB,OAAA,EAASD,GAAE,CAAA;AAC7C,EAAA,IAAI,OAAO,OAAO,KAAA;AAElB,EAAA,IAAI,CAAC,eAAA,CAAgB,IAAA,CAAK,OAAO,CAAA,EAAG;AAClC,IAAA,OAAO,SAAA,CAAUA,GAAAA,EAAI,mBAAA,EAAqB,mCAAmC,CAAA;AAAA,EAC/E;AAEA,EAAA,MAAM,SAAA,GAAY,UAAU,OAAO,CAAA;AACnC,EAAA,IAAI,SAAA,CAAU,MAAA,KAAWC,MAAAA,CAAM,eAAA,EAAiB;AAC9C,IAAA,OAAO,SAAA;AAAA,MACLD,GAAAA;AAAA,MACA,gBAAA;AAAA,MACA,CAAA,gBAAA,EAAmBC,OAAM,eAAe,CAAA,+BAAA;AAAA,KAC1C;AAAA,EACF;AAEA,EAAA,MAAM,IAAA,GAAO,SAAA,CAAU,KAAA,CAAM,CAAA,EAAGA,OAAM,UAAU,CAAA;AAChD,EAAA,IAAI,CAAC,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA,EAAG;AACzB,IAAA,OAAO,SAAA,CAAUD,GAAAA,EAAI,mBAAA,EAAqB,6BAA6B,CAAA;AAAA,EACzE;AAEA,EAAA,MAAM,QAAA,GAAW,sBAAsB,IAAI,CAAA;AAC3C,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,MAAA,CAAOC,MAAAA,CAAM,UAAU,CAAA;AAChD,EAAA,IAAI,CAAC,mBAAA,CAAoB,QAAA,EAAU,MAAM,CAAA,EAAG;AAC1C,IAAA,OAAO,SAAA,CAAUD,GAAAA,EAAI,qBAAA,EAAuB,8BAA8B,CAAA;AAAA,EAC5E;AAEA,EAAA,OAAO,SAAA,CAAU,SAAA,EAAWA,GAAAA,EAAI,IAAA,EAAM,IAAI,CAAA;AAC5C;;;AChDO,SAAS,mBAAmB,SAAA,EAA2B;AAC5D,EAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,EAC/D;AACA,EAAA,OAAO,CAAA,EAAG,UAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,MAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACzG;AAGO,SAAS,mBAAmB,SAAA,EAA2B;AAC5D,EAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAAA,EAC3D;AACA,EAAA,OAAO,CAAA,EAAG,UAAU,MAAA,CAAO,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,MAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,MAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,MAAA,CAAO,CAAC,CAAC,CAAA,CAAA;AACxG;AAGO,SAAS,cAAc,SAAA,EAA2B;AACvD,EAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,IAAA,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAAA,EACrD;AACA,EAAA,OAAO,GAAG,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA,EAAI,SAAA,CAAU,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAChF;AAEO,SAAS,WAAA,CAAY,WAAmB,EAAA,EAAsC;AACnF,EAAA,IAAI,OAAO,IAAA,EAAM;AACf,IAAA,OAAO,mBAAmB,SAAS,CAAA;AAAA,EACrC;AACA,EAAA,IAAI,EAAA,KAAO,IAAA,IAAQ,EAAA,KAAO,IAAA,EAAM;AAC9B,IAAA,MAAM,MAAA,GAAS,UAAU,UAAA,CAAW,GAAG,IAAI,SAAA,CAAU,KAAA,CAAM,CAAC,CAAA,GAAI,SAAA;AAChE,IAAA,MAAM,MAAA,GAAS,mBAAmB,MAAM,CAAA;AACxC,IAAA,OAAO,UAAU,UAAA,CAAW,GAAG,CAAA,GAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,GAAK,MAAA;AAAA,EACpD;AACA,EAAA,IAAI,OAAO,IAAA,EAAM;AACf,IAAA,OAAO,cAAc,SAAS,CAAA;AAAA,EAChC;AACA,EAAA,OAAO,SAAA;AACT;;;ACYA,IAAM,UAAA,GAA4C;AAAA,EAChD,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI,YAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,SAAA,GAA0C;AAAA,EAC9C,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,SAAS,OAAA,CAAQ,MAA4B,OAAA,EAA+B;AAC1E,EAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,OAAA,EAAQ;AACpC;AAEA,SAAS,gBAAgB,EAAA,EAAwC;AAC/D,EAAA,OAAO,EAAA,KAAO,MAAA,IAAc,gBAAA,CAAuC,QAAA,CAAS,EAAE,CAAA;AAChF;AAEO,SAAS,uBAAuB,EAAA,EAAsB;AAC3D,EAAA,OAAO,wBAAwB,EAAE,CAAA;AACnC;AAEO,SAAS,cAAA,GAAsC;AACpD,EAAA,OAAO,gBAAA;AACT;AAEO,SAAS,aAAa,EAAA,EAAc;AACzC,EAAA,OAAO,YAAY,EAAE,CAAA;AACvB;AAEO,SAAS,OAAA,CAAQ,OAAe,OAAA,EAAoC;AACzE,EAAA,IAAI,CAAC,eAAA,CAAgB,OAAA,CAAQ,EAAE,CAAA,EAAG;AAChC,IAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,EAChC;AACA,EAAA,OAAO,SAAA,CAAU,OAAA,CAAQ,EAAE,CAAA,CAAE,KAAK,CAAA;AACpC;AAEO,SAAS,SAAA,CAAU,OAAe,OAAA,EAAqC;AAC5E,EAAA,OAAO,UAAA,CAAW,KAAA,EAAO,OAAO,CAAA,CAAE,EAAA;AACpC;AAEO,SAAS,UAAA,CAAW,OAAe,OAAA,EAAgD;AACxF,EAAA,IAAI,CAAC,eAAA,CAAgB,OAAA,CAAQ,EAAE,CAAA,EAAG;AAChC,IAAA,OAAO,QAAQ,oBAAA,EAAsB,CAAA,GAAA,EAAM,OAAO,OAAA,CAAQ,EAAE,CAAC,CAAA,qCAAA,CAAuC,CAAA;AAAA,EACtG;AACA,EAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,EAAE,CAAA,CAAE,KAAK,CAAA;AACrC;AAEO,SAAS,QAAA,CAAS,OAAe,OAAA,EAA0C;AAChF,EAAA,MAAM,MAAA,GAAS,UAAA,CAAW,KAAA,EAAO,OAAO,CAAA;AACxC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AAEA,EAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,OAAA,CAAQ,EAAE,CAAA;AACpC,EAAA,IAAI,CAAC,MAAM,YAAA,EAAc;AACvB,IAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,OAAO,KAAA,EAAM;AAAA,EAC7C;AAEA,EAAA,OAAO,EAAE,IAAI,IAAA,EAAM,SAAA,EAAW,YAAY,MAAA,CAAO,KAAA,EAAO,OAAA,CAAQ,EAAE,CAAA,EAAE;AACtE","file":"chunk-G557DGIX.js","sourcesContent":["/**\n * RG (Registro Geral) — per-UF rules (phase 1: SP, RJ, MG, RS, PR, SC).\n * @see http://ghiorzi.org/DVnew.htm — SSP-SP, IFP-RJ, MaSP-MG check digits\n */\nimport type { RgUfCode } from '../../types/validation-result.js';\nimport type { RgUfRules } from './types.js';\n\nexport const RG_OFFICIAL_SOURCE_URL = 'http://ghiorzi.org/DVnew.htm';\n\nexport const RG_OFFICIAL_SOURCE_URLS: Record<RgUfCode, string> = {\n SP: 'http://ghiorzi.org/DVnew.htm',\n RJ: 'http://ghiorzi.org/DVnew.htm',\n MG: 'http://ghiorzi.org/DVnew.htm',\n PR: 'https://www.iipar.pr.gov.br/',\n RS: 'https://www.estado.rs.gov.br/',\n SC: 'https://www.ciasc.sc.gov.br/',\n};\n\nexport const RG_SUPPORTED_UFS = ['SP', 'RJ', 'MG', 'PR', 'RS', 'SC'] as const satisfies readonly RgUfCode[];\n\nexport const RG_SP_GOLDEN = '120300011';\nexport const RG_SP_GOLDEN_MASKED = '12.030.001-1';\nexport const RG_SP_GOLDEN_X = '00000005X';\nexport const RG_SP_GOLDEN_X_MASKED = '00.000.005-X';\n\nexport const RG_RJ_GOLDEN = '27998111';\nexport const RG_RJ_GOLDEN_MASKED = '2.799.811-1';\n\nexport const RG_MG_GOLDEN = '27998111';\nexport const RG_MG_GOLDEN_MASKED = '2.799.811-1';\nexport const RG_MG_GOLDEN_PREFIXED = 'M27998111';\n\nexport const RG_PR_GOLDEN = '12345678';\n\nexport const RG_RS_GOLDEN = '1234567890';\n\nexport const RG_SC_GOLDEN = '123456789';\n\nexport const RG_UF_RULES: Record<RgUfCode, RgUfRules> = {\n SP: {\n uf: 'SP',\n canonicalLength: 9,\n baseLength: 8,\n dvAlgorithm: 'mod11-remainder',\n allowsCheckDigitX: true,\n supportsMask: true,\n },\n RJ: {\n uf: 'RJ',\n canonicalLength: 8,\n baseLength: 7,\n dvAlgorithm: 'mod10-alternating',\n allowsCheckDigitX: false,\n supportsMask: true,\n },\n MG: {\n uf: 'MG',\n canonicalLength: 8,\n baseLength: 7,\n dvAlgorithm: 'mod10-alternating',\n allowsCheckDigitX: false,\n allowsLetterPrefix: 'M',\n supportsMask: true,\n },\n PR: {\n uf: 'PR',\n canonicalLength: 8,\n baseLength: 8,\n dvAlgorithm: 'format-only',\n allowsCheckDigitX: false,\n supportsMask: false,\n },\n RS: {\n uf: 'RS',\n canonicalLength: 10,\n baseLength: 10,\n dvAlgorithm: 'format-only',\n allowsCheckDigitX: false,\n supportsMask: false,\n },\n SC: {\n uf: 'SC',\n canonicalLength: 9,\n baseLength: 9,\n dvAlgorithm: 'format-only',\n allowsCheckDigitX: false,\n supportsMask: true,\n },\n};\n","/**\n * RG check-digit helpers — Ghiorzi DV reference (SSP-SP, IFP-RJ, MaSP-MG).\n * @see http://ghiorzi.org/DVnew.htm\n */\n\nconst SP_WEIGHTS = [9, 8, 7, 6, 5, 4, 3, 2] as const;\n\n/** SSP-SP: remainder mod 11; 10 → X. */\nexport function computeRgSpCheckDigit(base8: string): string {\n let sum = 0;\n for (let i = 0; i < SP_WEIGHTS.length; i++) {\n sum += Number(base8.charAt(i)) * SP_WEIGHTS[i];\n }\n const remainder = sum % 11;\n return remainder === 10 ? 'X' : String(remainder);\n}\n\nfunction reduceMod10Digit(product: number): number {\n if (product > 9) {\n return Math.floor(product / 10) + (product % 10);\n }\n return product;\n}\n\n/** IFP-RJ / MaSP-MG: alternating 2,1 from unit with noves fora; complement to 10. */\nexport function computeRgMod10AlternatingCheckDigit(base: string): string {\n let sum = 0;\n for (let i = base.length - 1, position = 0; i >= 0; i--, position++) {\n const weight = position % 2 === 0 ? 2 : 1;\n sum += reduceMod10Digit(Number(base.charAt(i)) * weight);\n }\n const digit = (10 - (sum % 10)) % 10;\n return String(digit);\n}\n","import type { DocumentFormat } from '../../types/validation-result.js';\nimport { brandRg } from '../../types/validation-result.js';\nimport type { RgUfCode } from '../../types/validation-result.js';\nimport type { RgValidationResult } from './types.js';\n\nexport type RgFailedResult = Extract<RgValidationResult, { ok: false }>;\n\nexport function rgFailure(uf: RgUfCode, code: RgFailedResult['code'], message: string): RgFailedResult {\n return { ok: false, code, message, uf };\n}\n\nexport function rgSuccess(\n canonical: string,\n uf: RgUfCode,\n format: DocumentFormat,\n checkDigitValidated: boolean,\n): Extract<RgValidationResult, { ok: true }> {\n return {\n ok: true,\n value: brandRg(canonical),\n uf,\n format,\n checkDigitValidated,\n };\n}\n\nexport function checkRgTrimmedEmpty(trimmed: string, uf: RgUfCode): RgFailedResult | null {\n if (trimmed.length === 0) {\n return { ok: false, code: 'EMPTY_INPUT', message: 'RG input is empty', uf };\n }\n return null;\n}\n\nexport function normalizeRgCheckDigit(digit: string): string {\n return digit.toUpperCase();\n}\n\nexport function matchesRgCheckDigit(expected: string, actual: string): boolean {\n return normalizeRgCheckDigit(expected) === normalizeRgCheckDigit(actual);\n}\n","/**\n * Minas Gerais RG — MaSP modulo 10 alternating (Ghiorzi); optional M prefix.\n */\nimport { RG_UF_RULES } from './constants.js';\nimport { computeRgMod10AlternatingCheckDigit } from './modulo-rg.js';\nimport { checkRgTrimmedEmpty, rgFailure, rgSuccess } from './rg-common.js';\nimport type { RgValidationResult } from './types.js';\n\nconst UF = 'MG' as const;\nconst RULES = RG_UF_RULES.MG;\nconst MG_CHAR_PATTERN = /^[Mm0-9.\\-\\s]+$/;\n\nexport function stripRgMg(input: string): string {\n const withoutSeparators = input.replace(/[.\\-\\s]/g, '');\n const upper = withoutSeparators.toUpperCase();\n if (upper.startsWith('M')) {\n return `M${upper.slice(1).replace(/\\D/g, '')}`;\n }\n return upper.replace(/\\D/g, '');\n}\n\nexport function validateRgMg(input: string): RgValidationResult {\n const trimmed = input.trim();\n const empty = checkRgTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n if (!MG_CHAR_PATTERN.test(trimmed)) {\n return rgFailure(UF, 'INVALID_CHARACTER', 'MG RG contains invalid characters');\n }\n\n const hasPrefix = /^[Mm]/.test(trimmed.replace(/[.\\-\\s]/g, ''));\n const stripped = stripRgMg(trimmed);\n const digits = hasPrefix ? stripped.slice(1) : stripped;\n if (digits.length !== RULES.canonicalLength) {\n return rgFailure(\n UF,\n 'INVALID_LENGTH',\n `MG RG must have ${RULES.canonicalLength} digits after normalization`,\n );\n }\n\n const base = digits.slice(0, RULES.baseLength);\n const expected = computeRgMod10AlternatingCheckDigit(base);\n if (digits.charAt(RULES.baseLength) !== expected) {\n return rgFailure(UF, 'INVALID_CHECK_DIGIT', 'MG RG check digit is invalid');\n }\n\n const branded = hasPrefix ? `M${digits}` : digits;\n return rgSuccess(branded, UF, 'rg', true);\n}\n","/**\n * Paraná RG — format-only (8 digits, no published DV algorithm).\n * @see https://www.iipar.pr.gov.br/\n */\nimport { RG_UF_RULES } from './constants.js';\nimport { checkRgTrimmedEmpty, rgFailure, rgSuccess } from './rg-common.js';\nimport type { RgValidationResult } from './types.js';\n\nconst UF = 'PR' as const;\nconst RULES = RG_UF_RULES.PR;\n\nexport function stripRgPr(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function validateRgPr(input: string): RgValidationResult {\n const trimmed = input.trim();\n const empty = checkRgTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n if (!/^[0-9.\\-\\s]+$/.test(trimmed)) {\n return rgFailure(UF, 'INVALID_CHARACTER', 'PR RG contains invalid characters');\n }\n\n const canonical = stripRgPr(trimmed);\n if (canonical.length !== RULES.canonicalLength) {\n return rgFailure(\n UF,\n 'INVALID_LENGTH',\n `PR RG must have ${RULES.canonicalLength} digits after normalization`,\n );\n }\n\n return rgSuccess(canonical, UF, 'rg', false);\n}\n","/**\n * Rio de Janeiro RG — IFP-RJ modulo 10 alternating (Ghiorzi).\n */\nimport { RG_UF_RULES } from './constants.js';\nimport { computeRgMod10AlternatingCheckDigit } from './modulo-rg.js';\nimport { checkRgTrimmedEmpty, rgFailure, rgSuccess } from './rg-common.js';\nimport type { RgValidationResult } from './types.js';\n\nconst UF = 'RJ' as const;\nconst RULES = RG_UF_RULES.RJ;\n\nexport function stripRgRj(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function validateRgRj(input: string): RgValidationResult {\n const trimmed = input.trim();\n const empty = checkRgTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n if (!/^[0-9.\\-\\s]+$/.test(trimmed)) {\n return rgFailure(UF, 'INVALID_CHARACTER', 'RJ RG contains invalid characters');\n }\n\n const canonical = stripRgRj(trimmed);\n if (canonical.length !== RULES.canonicalLength) {\n return rgFailure(\n UF,\n 'INVALID_LENGTH',\n `RJ RG must have ${RULES.canonicalLength} digits after normalization`,\n );\n }\n\n const base = canonical.slice(0, RULES.baseLength);\n const expected = computeRgMod10AlternatingCheckDigit(base);\n if (canonical.charAt(RULES.baseLength) !== expected) {\n return rgFailure(UF, 'INVALID_CHECK_DIGIT', 'RJ RG check digit is invalid');\n }\n\n return rgSuccess(canonical, UF, 'rg', true);\n}\n","/**\n * Rio Grande do Sul RG — format-only (10 digits, IGP-RS).\n * @see https://www.estado.rs.gov.br/\n */\nimport { RG_UF_RULES } from './constants.js';\nimport { checkRgTrimmedEmpty, rgFailure, rgSuccess } from './rg-common.js';\nimport type { RgValidationResult } from './types.js';\n\nconst UF = 'RS' as const;\nconst RULES = RG_UF_RULES.RS;\n\nexport function stripRgRs(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function validateRgRs(input: string): RgValidationResult {\n const trimmed = input.trim();\n const empty = checkRgTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n if (!/^[0-9.\\-\\s/]+$/.test(trimmed)) {\n return rgFailure(UF, 'INVALID_CHARACTER', 'RS RG contains invalid characters');\n }\n\n const canonical = stripRgRs(trimmed);\n if (canonical.length !== RULES.canonicalLength) {\n return rgFailure(\n UF,\n 'INVALID_LENGTH',\n `RS RG must have ${RULES.canonicalLength} digits after normalization`,\n );\n }\n\n return rgSuccess(canonical, UF, 'rg', false);\n}\n","/**\n * Santa Catarina RG — format-only (9 digits; legacy SSP-SC numbering).\n * @see https://www.ciasc.sc.gov.br/\n */\nimport { RG_UF_RULES } from './constants.js';\nimport { checkRgTrimmedEmpty, rgFailure, rgSuccess } from './rg-common.js';\nimport type { RgValidationResult } from './types.js';\n\nconst UF = 'SC' as const;\nconst RULES = RG_UF_RULES.SC;\n\nexport function stripRgSc(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function validateRgSc(input: string): RgValidationResult {\n const trimmed = input.trim();\n const empty = checkRgTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n if (!/^[0-9.\\-\\s]+$/.test(trimmed)) {\n return rgFailure(UF, 'INVALID_CHARACTER', 'SC RG contains invalid characters');\n }\n\n const canonical = stripRgSc(trimmed);\n if (canonical.length !== RULES.canonicalLength) {\n return rgFailure(\n UF,\n 'INVALID_LENGTH',\n `SC RG must have ${RULES.canonicalLength} digits after normalization`,\n );\n }\n\n return rgSuccess(canonical, UF, 'rg', false);\n}\n","/**\n * São Paulo RG — SSP-SP modulo 11 (Ghiorzi).\n */\nimport { RG_UF_RULES } from './constants.js';\nimport { computeRgSpCheckDigit } from './modulo-rg.js';\nimport {\n checkRgTrimmedEmpty,\n matchesRgCheckDigit,\n rgFailure,\n rgSuccess,\n} from './rg-common.js';\nimport type { RgValidationResult } from './types.js';\n\nconst UF = 'SP' as const;\nconst RULES = RG_UF_RULES.SP;\nconst SP_CHAR_PATTERN = /^[0-9.\\-\\sXx]+$/;\n\nexport function stripRgSp(input: string): string {\n return input.replace(/[.\\-\\s]/g, '').toUpperCase();\n}\n\nexport function validateRgSp(input: string): RgValidationResult {\n const trimmed = input.trim();\n const empty = checkRgTrimmedEmpty(trimmed, UF);\n if (empty) return empty;\n\n if (!SP_CHAR_PATTERN.test(trimmed)) {\n return rgFailure(UF, 'INVALID_CHARACTER', 'SP RG contains invalid characters');\n }\n\n const canonical = stripRgSp(trimmed);\n if (canonical.length !== RULES.canonicalLength) {\n return rgFailure(\n UF,\n 'INVALID_LENGTH',\n `SP RG must have ${RULES.canonicalLength} characters after normalization`,\n );\n }\n\n const base = canonical.slice(0, RULES.baseLength);\n if (!/^\\d{8}$/.test(base)) {\n return rgFailure(UF, 'INVALID_CHARACTER', 'SP RG base must be 8 digits');\n }\n\n const expected = computeRgSpCheckDigit(base);\n const actual = canonical.charAt(RULES.baseLength);\n if (!matchesRgCheckDigit(expected, actual)) {\n return rgFailure(UF, 'INVALID_CHECK_DIGIT', 'SP RG check digit is invalid');\n }\n\n return rgSuccess(canonical, UF, 'rg', true);\n}\n","import { RG_UF_RULES } from './constants.js';\n\n/** SP / RJ / MG mask: XX.XXX.XXX-X */\nexport function applyRgSpStyleMask(canonical: string): string {\n if (canonical.length !== 9) {\n throw new Error('RG must have 9 characters for SP-style mask');\n }\n return `${canonical.slice(0, 2)}.${canonical.slice(2, 5)}.${canonical.slice(5, 8)}-${canonical.slice(8)}`;\n}\n\n/** RJ / MG (8 digits): X.XXX.XXX-X */\nexport function applyRgRjStyleMask(canonical: string): string {\n if (canonical.length !== 8) {\n throw new Error('RG must have 8 digits for RJ-style mask');\n }\n return `${canonical.charAt(0)}.${canonical.slice(1, 4)}.${canonical.slice(4, 7)}-${canonical.charAt(7)}`;\n}\n\n/** SC mask: XXX.XXX.XXX */\nexport function applyRgScMask(canonical: string): string {\n if (canonical.length !== 9) {\n throw new Error('RG must have 9 digits for SC mask');\n }\n return `${canonical.slice(0, 3)}.${canonical.slice(3, 6)}.${canonical.slice(6)}`;\n}\n\nexport function applyRgMask(canonical: string, uf: keyof typeof RG_UF_RULES): string {\n if (uf === 'SP') {\n return applyRgSpStyleMask(canonical);\n }\n if (uf === 'RJ' || uf === 'MG') {\n const digits = canonical.startsWith('M') ? canonical.slice(1) : canonical;\n const masked = applyRgRjStyleMask(digits);\n return canonical.startsWith('M') ? `M${masked}` : masked;\n }\n if (uf === 'SC') {\n return applyRgScMask(canonical);\n }\n return canonical;\n}\n","/**\n * RG (Registro Geral) validation — per-UF rules (phase 1).\n * @see docs/GLOSSARY.md — RG identidade\n */\nimport type { FormatResult, RgUfCode } from '../../types/validation-result.js';\nimport {\n RG_OFFICIAL_SOURCE_URLS,\n RG_SUPPORTED_UFS,\n RG_UF_RULES,\n} from './constants.js';\nimport { validateRgMg, stripRgMg } from './mg.js';\nimport { applyRgMask } from './mask.js';\nimport { validateRgPr, stripRgPr } from './pr.js';\nimport { validateRgRj, stripRgRj } from './rj.js';\nimport { validateRgRs, stripRgRs } from './rs.js';\nimport { validateRgSc, stripRgSc } from './sc.js';\nimport { validateRgSp, stripRgSp } from './sp.js';\nimport type { RgValidationResult, ValidateRgOptions } from './types.js';\n\nexport {\n RG_MG_GOLDEN,\n RG_MG_GOLDEN_MASKED,\n RG_MG_GOLDEN_PREFIXED,\n RG_OFFICIAL_SOURCE_URL,\n RG_OFFICIAL_SOURCE_URLS,\n RG_PR_GOLDEN,\n RG_RJ_GOLDEN,\n RG_RJ_GOLDEN_MASKED,\n RG_RS_GOLDEN,\n RG_SC_GOLDEN,\n RG_SP_GOLDEN,\n RG_SP_GOLDEN_MASKED,\n RG_SP_GOLDEN_X,\n RG_SP_GOLDEN_X_MASKED,\n RG_SUPPORTED_UFS,\n RG_UF_RULES,\n} from './constants.js';\nexport { computeRgMod10AlternatingCheckDigit, computeRgSpCheckDigit } from './modulo-rg.js';\nexport { stripRgMg, validateRgMg } from './mg.js';\nexport { applyRgMask, applyRgRjStyleMask, applyRgScMask, applyRgSpStyleMask } from './mask.js';\nexport { stripRgPr, validateRgPr } from './pr.js';\nexport { stripRgRj, validateRgRj } from './rj.js';\nexport { stripRgRs, validateRgRs } from './rs.js';\nexport { stripRgSc, validateRgSc } from './sc.js';\nexport { stripRgSp, validateRgSp } from './sp.js';\nexport type { RgDvAlgorithm, RgUfRules, RgValidationResult, ValidateRgOptions } from './types.js';\n\ntype FailedResult = Extract<RgValidationResult, { ok: false }>;\ntype ValidatorFn = (input: string) => RgValidationResult;\ntype StripperFn = (input: string) => string;\n\nconst VALIDATORS: Record<RgUfCode, ValidatorFn> = {\n SP: validateRgSp,\n RJ: validateRgRj,\n MG: validateRgMg,\n PR: validateRgPr,\n RS: validateRgRs,\n SC: validateRgSc,\n};\n\nconst STRIPPERS: Record<RgUfCode, StripperFn> = {\n SP: stripRgSp,\n RJ: stripRgRj,\n MG: stripRgMg,\n PR: stripRgPr,\n RS: stripRgRs,\n SC: stripRgSc,\n};\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message };\n}\n\nfunction isSupportedRgUf(uf: string | undefined): uf is RgUfCode {\n return uf !== undefined && (RG_SUPPORTED_UFS as readonly string[]).includes(uf);\n}\n\nexport function getRgOfficialSourceUrl(uf: RgUfCode): string {\n return RG_OFFICIAL_SOURCE_URLS[uf];\n}\n\nexport function getRgUfSupport(): readonly RgUfCode[] {\n return RG_SUPPORTED_UFS;\n}\n\nexport function getRgUfRules(uf: RgUfCode) {\n return RG_UF_RULES[uf];\n}\n\nexport function stripRg(input: string, options: ValidateRgOptions): string {\n if (!isSupportedRgUf(options.uf)) {\n return input.replace(/\\D/g, '');\n }\n return STRIPPERS[options.uf](input);\n}\n\nexport function isValidRg(input: string, options: ValidateRgOptions): boolean {\n return validateRg(input, options).ok;\n}\n\nexport function validateRg(input: string, options: ValidateRgOptions): RgValidationResult {\n if (!isSupportedRgUf(options.uf)) {\n return failure('UF_NOT_IMPLEMENTED', `UF ${String(options.uf)} is not implemented for RG validation`);\n }\n return VALIDATORS[options.uf](input);\n}\n\nexport function formatRg(input: string, options: ValidateRgOptions): FormatResult {\n const result = validateRg(input, options);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n\n const rules = RG_UF_RULES[options.uf];\n if (!rules.supportsMask) {\n return { ok: true, formatted: result.value };\n }\n\n return { ok: true, formatted: applyRgMask(result.value, options.uf) };\n}\n"]}
|
|
@@ -1,18 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
1
|
+
import { formatProcessoJudicial } from './chunk-DVA6QQUF.js';
|
|
2
|
+
import { formatTelefone } from './chunk-IRERFIL5.js';
|
|
3
|
+
import { formatTituloEleitor } from './chunk-F5OHOWZU.js';
|
|
4
|
+
import { formatPisPasep } from './chunk-WAYYRZ2L.js';
|
|
5
|
+
import { formatPixKey } from './chunk-SH6K4PUU.js';
|
|
6
|
+
import { formatPlaca } from './chunk-TTDHGQEC.js';
|
|
7
|
+
import { formatRenavam } from './chunk-MDFK6L72.js';
|
|
8
|
+
import { formatNfeChave } from './chunk-Z7KH65RZ.js';
|
|
9
|
+
import { formatIeProdutorRural } from './chunk-EGDZGSHA.js';
|
|
10
|
+
import { formatCnh } from './chunk-T5NFIPTU.js';
|
|
11
|
+
import { formatCnpj } from './chunk-FLZGOGER.js';
|
|
12
|
+
import { formatCpf } from './chunk-C7WXL7UR.js';
|
|
13
|
+
import { formatRg } from './chunk-G557DGIX.js';
|
|
14
|
+
import { formatInscricaoEstadual } from './chunk-P3EJRH4P.js';
|
|
15
|
+
import { formatBoleto } from './chunk-LPGSPM53.js';
|
|
16
|
+
import { formatCartaoCredito } from './chunk-OWD47AWI.js';
|
|
17
|
+
import { formatCep } from './chunk-DLXE3RNI.js';
|
|
18
|
+
|
|
19
|
+
// src/format/rg.ts
|
|
20
|
+
function formatRg2(input, options) {
|
|
21
|
+
return formatRg(input, options);
|
|
22
|
+
}
|
|
16
23
|
|
|
17
24
|
// src/mask/index.ts
|
|
18
25
|
var MASKABLE_DOCUMENT_TYPES = [
|
|
@@ -25,6 +32,8 @@ var MASKABLE_DOCUMENT_TYPES = [
|
|
|
25
32
|
"cnh",
|
|
26
33
|
"renavam",
|
|
27
34
|
"titulo-eleitor",
|
|
35
|
+
"processo-judicial",
|
|
36
|
+
"rg",
|
|
28
37
|
"nfe-chave",
|
|
29
38
|
"boleto",
|
|
30
39
|
"cartao-credito",
|
|
@@ -43,6 +52,13 @@ function mask(raw, type, options = {}) {
|
|
|
43
52
|
message: "UF is required for inscricao-estadual masking"
|
|
44
53
|
};
|
|
45
54
|
}
|
|
55
|
+
if (type === "rg" && !options.uf) {
|
|
56
|
+
return {
|
|
57
|
+
ok: false,
|
|
58
|
+
code: "UNSUPPORTED_FORMAT",
|
|
59
|
+
message: "UF is required for RG masking"
|
|
60
|
+
};
|
|
61
|
+
}
|
|
46
62
|
return dispatchMask(raw, type, options);
|
|
47
63
|
}
|
|
48
64
|
function maskRuntime(type, raw, options = {}) {
|
|
@@ -71,6 +87,10 @@ function dispatchMask(raw, type, options) {
|
|
|
71
87
|
return formatRenavam(raw);
|
|
72
88
|
case "titulo-eleitor":
|
|
73
89
|
return formatTituloEleitor(raw);
|
|
90
|
+
case "processo-judicial":
|
|
91
|
+
return formatProcessoJudicial(raw);
|
|
92
|
+
case "rg":
|
|
93
|
+
return formatRg2(raw, { uf: options.uf });
|
|
74
94
|
case "nfe-chave":
|
|
75
95
|
return formatNfeChave(raw);
|
|
76
96
|
case "boleto":
|
|
@@ -95,5 +115,5 @@ function dispatchMask(raw, type, options) {
|
|
|
95
115
|
}
|
|
96
116
|
|
|
97
117
|
export { MASKABLE_DOCUMENT_TYPES, isMaskableDocumentType, mask, maskRuntime };
|
|
98
|
-
//# sourceMappingURL=chunk-
|
|
99
|
-
//# sourceMappingURL=chunk-
|
|
118
|
+
//# sourceMappingURL=chunk-HZWERBZB.js.map
|
|
119
|
+
//# sourceMappingURL=chunk-HZWERBZB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/format/rg.ts","../src/mask/index.ts"],"names":["formatRg"],"mappings":"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","file":"chunk-HZWERBZB.js","sourcesContent":["import type { ValidateRgOptions } from '../core/rg/index.js';\nimport { formatRg as formatRgCore } from '../core/rg/index.js';\n\nexport function formatRg(input: string, options: ValidateRgOptions): ReturnType<typeof formatRgCore> {\n return formatRgCore(input, options);\n}\n","/**\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 { formatProcessoJudicial } from '../format/processo-judicial.js';\nimport { formatRg } from '../format/rg.js';\nimport { formatRenavam } from '../format/renavam.js';\nimport { formatTelefone } from '../format/telefone.js';\nimport { formatTituloEleitor } from '../format/titulo-eleitor.js';\nimport type { FormatResult, RgUfCode, 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 | 'processo-judicial'\n | 'rg'\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 'processo-judicial',\n 'rg',\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 if (type === 'rg' && !options.uf) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'UF is required for RG 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 'processo-judicial':\n return formatProcessoJudicial(raw);\n case 'rg':\n return formatRg(raw, { uf: options.uf as RgUfCode });\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"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { stripNfeChave } from './chunk-4SNBZFS5.js';
|
|
2
|
-
import { brandNfeChave } from './chunk-
|
|
2
|
+
import { brandNfeChave } from './chunk-4NFEM2SU.js';
|
|
3
3
|
|
|
4
4
|
// src/core/nfe-chave/constants.ts
|
|
5
5
|
var NFE_CHAVE_OFFICIAL_SOURCE_URL = "https://www.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=ndIjl+iEFdE%3D";
|
|
@@ -203,5 +203,5 @@ function validateNfeChave(input) {
|
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
export { NFE_CHAVE_BASE_LENGTH, NFE_CHAVE_DFE_PORTAL_URL, NFE_CHAVE_GOLDEN_PRIMARY, NFE_CHAVE_GOLDEN_SECONDARY, NFE_CHAVE_LENGTH, NFE_CHAVE_MOC_DV_SECTION_URL, NFE_CHAVE_MOC_ONLINE_URL, NFE_CHAVE_MOC_PDF_URL, NFE_CHAVE_MOD, NFE_CHAVE_NFCE_QR_ILLUSTRATIVE, NFE_CHAVE_NFCE_QR_ILLUSTRATIVE_URL, NFE_CHAVE_NUMERIC_PATTERN, NFE_CHAVE_OFFICIAL_SOURCE_URL, NFE_CHAVE_WEIGHT_CYCLE, NFE_IBGE_UF_BY_CODE, NFE_IBGE_UF_CODES, NFE_MODELOS, NFE_MODELO_NFCE, NFE_MODELO_NFE, computeNfeChaveCheckDigit, computeNfeChaveWeightedSum, isValidNfeChave, isValidNfeChaveCheckDigit, parseNfeChave, parseNfeChaveParts, resolveNfeChaveCheckDigit, validateNfeChave };
|
|
206
|
-
//# sourceMappingURL=chunk-
|
|
207
|
-
//# sourceMappingURL=chunk-
|
|
206
|
+
//# sourceMappingURL=chunk-IJ2DAVSD.js.map
|
|
207
|
+
//# sourceMappingURL=chunk-IJ2DAVSD.js.map
|