@br-validators/core 0.11.0-alpha.0 → 0.12.0-alpha.1
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 +147 -22
- package/dist/boleto.d.ts +2 -2
- package/dist/boleto.js +3 -2
- package/dist/brcode.d.ts +2 -2
- package/dist/brcode.js +9 -6
- package/dist/cartao-credito.d.ts +2 -2
- package/dist/cartao-credito.js +4 -2
- package/dist/cep.d.ts +2 -2
- package/dist/cep.js +6 -3
- package/dist/chunk-2CNYSY3Z.js +3 -0
- package/dist/chunk-2CNYSY3Z.js.map +1 -0
- package/dist/{chunk-GLKGX552.js → chunk-2JJS46FM.js} +5 -23
- package/dist/chunk-2JJS46FM.js.map +1 -0
- package/dist/{chunk-FLZ6IHOD.js → chunk-3QP6R46N.js} +119 -496
- package/dist/chunk-3QP6R46N.js.map +1 -0
- package/dist/chunk-4SNBZFS5.js +8 -0
- package/dist/chunk-4SNBZFS5.js.map +1 -0
- package/dist/{chunk-IW3ESGWH.js → chunk-4W4OKLSZ.js} +4 -25
- package/dist/chunk-4W4OKLSZ.js.map +1 -0
- package/dist/chunk-4Y2FBO57.js +26 -0
- package/dist/chunk-4Y2FBO57.js.map +1 -0
- package/dist/{chunk-465IC76U.js → chunk-5UL3M7IU.js} +4 -23
- package/dist/chunk-5UL3M7IU.js.map +1 -0
- package/dist/chunk-6QJFMOIX.js +22 -0
- package/dist/chunk-6QJFMOIX.js.map +1 -0
- package/dist/chunk-7ZL7PZII.js +187 -0
- package/dist/chunk-7ZL7PZII.js.map +1 -0
- package/dist/chunk-BFZPCEYB.js +14 -0
- package/dist/chunk-BFZPCEYB.js.map +1 -0
- package/dist/chunk-CDGRHI7W.js +22 -0
- package/dist/chunk-CDGRHI7W.js.map +1 -0
- package/dist/chunk-CQPM43VV.js +3 -0
- package/dist/chunk-CQPM43VV.js.map +1 -0
- package/dist/chunk-D36RM7OD.js +207 -0
- package/dist/chunk-D36RM7OD.js.map +1 -0
- package/dist/{chunk-CR45BOLS.js → chunk-EPKHEW5V.js} +4 -13
- package/dist/chunk-EPKHEW5V.js.map +1 -0
- package/dist/{chunk-5BBNLRZP.js → chunk-F6PTZY4O.js} +5 -14
- package/dist/chunk-F6PTZY4O.js.map +1 -0
- package/dist/chunk-FXLVNCG3.js +26 -0
- package/dist/chunk-FXLVNCG3.js.map +1 -0
- package/dist/chunk-G24G7WR5.js +3 -0
- package/dist/chunk-G24G7WR5.js.map +1 -0
- package/dist/chunk-G2Y63PIF.js +24 -0
- package/dist/chunk-G2Y63PIF.js.map +1 -0
- package/dist/chunk-G32U6YQ5.js +14 -0
- package/dist/chunk-G32U6YQ5.js.map +1 -0
- package/dist/{chunk-TVVNTLIH.js → chunk-GRDUTHNX.js} +3 -3
- package/dist/{chunk-TVVNTLIH.js.map → chunk-GRDUTHNX.js.map} +1 -1
- package/dist/chunk-GVK6IMBF.js +3 -0
- package/dist/chunk-GVK6IMBF.js.map +1 -0
- package/dist/chunk-IQGRFAQV.js +23 -0
- package/dist/chunk-IQGRFAQV.js.map +1 -0
- package/dist/chunk-JQABTHUJ.js +3 -0
- package/dist/chunk-JQABTHUJ.js.map +1 -0
- package/dist/{chunk-GN7QIQE6.js → chunk-KH7DWOUA.js} +5 -23
- package/dist/chunk-KH7DWOUA.js.map +1 -0
- package/dist/chunk-KQDLIGSG.js +14 -0
- package/dist/chunk-KQDLIGSG.js.map +1 -0
- package/dist/chunk-LF2B4VPE.js +3 -0
- package/dist/chunk-LF2B4VPE.js.map +1 -0
- package/dist/chunk-LGD2JJBZ.js +288 -0
- package/dist/chunk-LGD2JJBZ.js.map +1 -0
- package/dist/{chunk-MQT25QN7.js → chunk-LYBFUKHR.js} +4 -3
- package/dist/chunk-LYBFUKHR.js.map +1 -0
- package/dist/chunk-MFNJTAUS.js +3 -0
- package/dist/chunk-MFNJTAUS.js.map +1 -0
- package/dist/{chunk-D5JMGN7U.js → chunk-MK7OJUF5.js} +7 -5
- package/dist/chunk-MK7OJUF5.js.map +1 -0
- package/dist/chunk-MLPXW7N2.js +226 -0
- package/dist/chunk-MLPXW7N2.js.map +1 -0
- package/dist/{chunk-BBL6ZPXH.js → chunk-MSLJF2FM.js} +18 -3
- package/dist/chunk-MSLJF2FM.js.map +1 -0
- package/dist/{chunk-V3OWDXRU.js → chunk-NHLLC6WH.js} +4 -3
- package/dist/chunk-NHLLC6WH.js.map +1 -0
- package/dist/chunk-OCYXNLHO.js +307 -0
- package/dist/chunk-OCYXNLHO.js.map +1 -0
- package/dist/{chunk-B2TDI3YS.js → chunk-OTZHMJYE.js} +3 -3
- package/dist/{chunk-B2TDI3YS.js.map → chunk-OTZHMJYE.js.map} +1 -1
- package/dist/chunk-P55H5YRX.js +3 -0
- package/dist/chunk-P55H5YRX.js.map +1 -0
- package/dist/chunk-PB4RIS6G.js +27 -0
- package/dist/chunk-PB4RIS6G.js.map +1 -0
- package/dist/chunk-QGMVUIDD.js +3 -0
- package/dist/chunk-QGMVUIDD.js.map +1 -0
- package/dist/chunk-RYGAK7PB.js +3 -0
- package/dist/chunk-RYGAK7PB.js.map +1 -0
- package/dist/chunk-US4OLTJ2.js +104 -0
- package/dist/chunk-US4OLTJ2.js.map +1 -0
- package/dist/{chunk-GEHAH4OH.js → chunk-WCQUQ2WX.js} +4 -4
- package/dist/{chunk-GEHAH4OH.js.map → chunk-WCQUQ2WX.js.map} +1 -1
- package/dist/chunk-WLE2ENQA.js +86 -0
- package/dist/chunk-WLE2ENQA.js.map +1 -0
- package/dist/{chunk-2KTD23PD.js → chunk-WPL47PWJ.js} +5 -14
- package/dist/chunk-WPL47PWJ.js.map +1 -0
- package/dist/chunk-XKY2CV3G.js +14 -0
- package/dist/chunk-XKY2CV3G.js.map +1 -0
- package/dist/chunk-XUO7FV6Z.js +14 -0
- package/dist/chunk-XUO7FV6Z.js.map +1 -0
- package/dist/chunk-Y2KUN2D3.js +3 -0
- package/dist/chunk-Y2KUN2D3.js.map +1 -0
- package/dist/chunk-Y6IW2LMW.js +460 -0
- package/dist/chunk-Y6IW2LMW.js.map +1 -0
- package/dist/chunk-YGA5W54J.js +3 -0
- package/dist/chunk-YGA5W54J.js.map +1 -0
- package/dist/{chunk-UE4PVN6Y.js → chunk-YXELVV37.js} +5 -14
- package/dist/chunk-YXELVV37.js.map +1 -0
- package/dist/chunk-YYHS5WQN.js +28 -0
- package/dist/chunk-YYHS5WQN.js.map +1 -0
- package/dist/chunk-ZAUZRIOU.js +23 -0
- package/dist/chunk-ZAUZRIOU.js.map +1 -0
- package/dist/chunk-ZH4RJNG7.js +3 -0
- package/dist/chunk-ZH4RJNG7.js.map +1 -0
- package/dist/cnh.d.ts +39 -0
- package/dist/cnh.js +11 -0
- package/dist/cnh.js.map +1 -0
- package/dist/cnpj.d.ts +2 -2
- package/dist/cnpj.js +6 -4
- package/dist/cpf.d.ts +2 -2
- package/dist/cpf.js +6 -4
- package/dist/detect.d.ts +23 -0
- package/dist/detect.js +26 -0
- package/dist/detect.js.map +1 -0
- package/dist/generate.d.ts +10 -0
- package/dist/generate.js +29 -0
- package/dist/generate.js.map +1 -0
- package/dist/index-CZLo9YOT.d.ts +21 -0
- package/dist/index.d.ts +12 -4
- package/dist/index.js +60 -25
- package/dist/index.js.map +1 -1
- package/dist/inscricao-estadual-produtor-rural-CfWUaggb.d.ts +46 -0
- package/dist/inscricao-estadual-produtor-rural.d.ts +2 -0
- package/dist/inscricao-estadual-produtor-rural.js +7 -0
- package/dist/inscricao-estadual-produtor-rural.js.map +1 -0
- package/dist/inscricao-estadual.d.ts +4 -21
- package/dist/inscricao-estadual.js +5 -2
- package/dist/nfe-chave.d.ts +71 -0
- package/dist/nfe-chave.js +6 -0
- package/dist/nfe-chave.js.map +1 -0
- package/dist/pis-pasep.d.ts +2 -2
- package/dist/pis-pasep.js +5 -3
- package/dist/{pix-BtTx04Si.d.ts → pix-ddldLlb7.d.ts} +1 -1
- package/dist/pix.d.ts +2 -2
- package/dist/pix.js +8 -6
- package/dist/placa.d.ts +2 -2
- package/dist/placa.js +6 -3
- package/dist/renavam.d.ts +37 -0
- package/dist/renavam.js +11 -0
- package/dist/renavam.js.map +1 -0
- package/dist/sanitize.d.ts +9 -0
- package/dist/sanitize.js +24 -0
- package/dist/sanitize.js.map +1 -0
- package/dist/telefone.d.ts +2 -2
- package/dist/telefone.js +4 -2
- package/dist/titulo-eleitor.d.ts +56 -0
- package/dist/titulo-eleitor.js +10 -0
- package/dist/titulo-eleitor.js.map +1 -0
- package/dist/{validation-result-C-Ei-lZH.d.ts → validation-result-BhQE-1_O.d.ts} +64 -2
- package/package.json +48 -4
- package/dist/chunk-2KTD23PD.js.map +0 -1
- package/dist/chunk-465IC76U.js.map +0 -1
- package/dist/chunk-5BBNLRZP.js.map +0 -1
- package/dist/chunk-BBL6ZPXH.js.map +0 -1
- package/dist/chunk-CR45BOLS.js.map +0 -1
- package/dist/chunk-D5JMGN7U.js.map +0 -1
- package/dist/chunk-FLZ6IHOD.js.map +0 -1
- package/dist/chunk-GLKGX552.js.map +0 -1
- package/dist/chunk-GN7QIQE6.js.map +0 -1
- package/dist/chunk-IW3ESGWH.js.map +0 -1
- package/dist/chunk-MQT25QN7.js.map +0 -1
- package/dist/chunk-UE4PVN6Y.js.map +0 -1
- package/dist/chunk-V3OWDXRU.js.map +0 -1
- package/dist/chunk-W6UXVWSR.js +0 -13
- package/dist/chunk-W6UXVWSR.js.map +0 -1
|
@@ -1,398 +1,153 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IE_DF_LENGTH, IE_DF_PREFIX, computeIeDfCheckDigit, IE_DF_DV1_WEIGHTS, IE_DF_DV2_WEIGHTS, IE_MT_CANONICAL_LENGTH, IE_MT_LEGACY_LENGTH, IE_MT_PREFIX, computeIeMtCheckDigit, IE_SP_LENGTH, computeIeSpCheckDigit, IE_SP_DV1_WEIGHTS, IE_SP_DV2_WEIGHTS, IE_OFFICIAL_SOURCE_URLS, applyIeSpMask, applyIeDfMask, IE_SUPPORTED_UFS, IE_TO_LEGACY_PREFIXES, computeIeToCheckDigit, computeIeCyclicMod11CheckDigit, IE_RR_PREFIX, computeIeRrCheckDigit, computeIeRoCheckDigit, IE_RN_PREFIX, computeIePrStyleCheckDigit, computeIePeCheckDigit, IE_PA_PREFIX, IE_MS_PREFIX, computeIeMgFirstCheckDigit, computeIeMgSecondCheckDigit, IE_MA_PREFIX, IE_GO_PREFIXES, computeIeGoCheckDigit, computeIeCeCheckDigit, computeIeBaModule, computeIeBaCheckDigit, IE_AP_PREFIX, computeIeApCheckDigit, computeIeAmCheckDigit, IE_AL_PREFIX, computeIeAlCheckDigit, IE_AC_PREFIX, computeIeAcCheckDigit } from './chunk-Y6IW2LMW.js';
|
|
2
|
+
import { brandInscricaoEstadual } from './chunk-MSLJF2FM.js';
|
|
2
3
|
|
|
3
|
-
// src/core/inscricao-estadual/
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
"
|
|
7
|
-
"AM",
|
|
8
|
-
"AP",
|
|
9
|
-
"BA",
|
|
10
|
-
"CE",
|
|
11
|
-
"DF",
|
|
12
|
-
"ES",
|
|
13
|
-
"GO",
|
|
14
|
-
"MA",
|
|
15
|
-
"MG",
|
|
16
|
-
"MS",
|
|
17
|
-
"MT",
|
|
18
|
-
"PA",
|
|
19
|
-
"PB",
|
|
20
|
-
"PE",
|
|
21
|
-
"PI",
|
|
22
|
-
"PR",
|
|
23
|
-
"RJ",
|
|
24
|
-
"RN",
|
|
25
|
-
"RO",
|
|
26
|
-
"RR",
|
|
27
|
-
"RS",
|
|
28
|
-
"SC",
|
|
29
|
-
"SE",
|
|
30
|
-
"SP",
|
|
31
|
-
"TO"
|
|
32
|
-
];
|
|
33
|
-
var IE_OFFICIAL_SOURCE_URLS = {
|
|
34
|
-
AC: "https://sefaz.ac.gov.br/",
|
|
35
|
-
AL: "https://www.sefaz.al.gov.br/calculo",
|
|
36
|
-
AM: "https://www.sefaz.am.gov.br/",
|
|
37
|
-
AP: "https://www.sefaz.ap.gov.br/",
|
|
38
|
-
BA: "https://www.sefaz.ba.gov.br/inspetoria-eletronica/icms/cadastro/calculo-dv/",
|
|
39
|
-
CE: "https://www.sefaz.ce.gov.br/",
|
|
40
|
-
DF: "https://www.receita.fazenda.df.gov.br/",
|
|
41
|
-
ES: "https://sitenet.es.gov.br/sefaz/",
|
|
42
|
-
GO: "http://www.sefaz.go.gov.br/ServicosAFA/ece.html",
|
|
43
|
-
MA: "https://www.sefaz.ma.gov.br/",
|
|
44
|
-
MG: "https://www.fazenda.mg.gov.br/empresas/Cadastro/cadastro/consultapublica.html",
|
|
45
|
-
MS: "https://www.sefaz.ms.gov.br/",
|
|
46
|
-
MT: "https://app1.sefaz.mt.gov.br/Sistema/legislacao/legislacaotribut.nsf/709f9c981a9d9f468425671300482be0/2217ddcf7a9b7cea03258c6c007324ba?OpenDocument=",
|
|
47
|
-
PA: "https://www.sefa.pa.gov.br/",
|
|
48
|
-
PB: "https://www.receita.pb.gov.br/",
|
|
49
|
-
PE: "https://www.sefaz.pe.gov.br/",
|
|
50
|
-
PI: "https://www.sefaz.pi.gov.br/",
|
|
51
|
-
PR: "https://www.fazenda.pr.gov.br/Pagina/calculo-digito-verificador",
|
|
52
|
-
RJ: "https://portal.fazenda.rj.gov.br/cadastro/",
|
|
53
|
-
RN: "https://www.set.rn.gov.br/",
|
|
54
|
-
RO: "https://www.sefin.ro.gov.br/",
|
|
55
|
-
RR: "https://www.sefaz.rr.gov.br/",
|
|
56
|
-
RS: "https://www.sefaz.rs.gov.br/",
|
|
57
|
-
SC: "https://sat.sef.sc.gov.br/",
|
|
58
|
-
SE: "https://www.sefaz.se.gov.br/",
|
|
59
|
-
SP: "https://portal.fazenda.sp.gov.br/servicos/icms/Paginas/sintegra-rotina-consistencia.aspx",
|
|
60
|
-
TO: "https://www.sefaz.to.gov.br/"
|
|
61
|
-
};
|
|
62
|
-
var IE_AC_PREFIX = "01";
|
|
63
|
-
var IE_AL_PREFIX = "24";
|
|
64
|
-
var IE_AP_PREFIX = "03";
|
|
65
|
-
var IE_DF_PREFIX = "07";
|
|
66
|
-
var IE_GO_PREFIXES = ["10", "11", "15", "20"];
|
|
67
|
-
var IE_MA_PREFIX = "12";
|
|
68
|
-
var IE_MS_PREFIX = "28";
|
|
69
|
-
var IE_MT_PREFIX = "13";
|
|
70
|
-
var IE_PA_PREFIX = "15";
|
|
71
|
-
var IE_RN_PREFIX = "20";
|
|
72
|
-
var IE_RR_PREFIX = "24";
|
|
73
|
-
var IE_TO_LEGACY_PREFIXES = ["01", "02", "03", "99"];
|
|
74
|
-
var IE_SP_LENGTH = 12;
|
|
75
|
-
var IE_SP_DV1_WEIGHTS = [1, 3, 4, 5, 6, 7, 8, 10];
|
|
76
|
-
var IE_SP_DV2_WEIGHTS = [3, 2, 10, 9, 8, 7, 6, 5, 4, 3, 2];
|
|
77
|
-
var IE_SP_GOLDEN = "110042490114";
|
|
78
|
-
var IE_SP_GOLDEN_MASKED = "110.042.490.114";
|
|
79
|
-
var IE_SP_OFFICIAL_SOURCE_URL = IE_OFFICIAL_SOURCE_URLS.SP;
|
|
80
|
-
var IE_MT_CANONICAL_LENGTH = 9;
|
|
81
|
-
var IE_MT_LEGACY_LENGTH = 11;
|
|
82
|
-
var IE_MT_GOLDEN_LEGACY = "00130000019";
|
|
83
|
-
var IE_MT_GOLDEN_CANONICAL = "130000019";
|
|
84
|
-
var IE_MT_OFFICIAL_SOURCE_URL = IE_OFFICIAL_SOURCE_URLS.MT;
|
|
85
|
-
var IE_DF_LENGTH = 13;
|
|
86
|
-
var IE_DF_DV1_WEIGHTS = [4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
|
|
87
|
-
var IE_DF_DV2_WEIGHTS = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
|
|
88
|
-
var IE_DF_GOLDEN = "0730000100109";
|
|
89
|
-
var IE_DF_GOLDEN_MASKED = "073.00001.001-09";
|
|
90
|
-
var IE_DF_OFFICIAL_SOURCE_URL = IE_OFFICIAL_SOURCE_URLS.DF;
|
|
91
|
-
|
|
92
|
-
// src/core/inscricao-estadual/ie-common.ts
|
|
93
|
-
function stripIeDigits(input) {
|
|
94
|
-
return input.replace(/\D/g, "");
|
|
95
|
-
}
|
|
96
|
-
function ieFailure(uf, code, message) {
|
|
97
|
-
return { ok: false, code, message, uf };
|
|
98
|
-
}
|
|
99
|
-
function ieEmptyInput(uf) {
|
|
100
|
-
return { ok: false, code: "EMPTY_INPUT", message: "Inscri\xE7\xE3o Estadual input is empty", uf };
|
|
4
|
+
// src/core/inscricao-estadual/df.ts
|
|
5
|
+
var DF_MASK_PATTERN = /^[0-9.-]+$/;
|
|
6
|
+
function failure(code, message) {
|
|
7
|
+
return { ok: false, code, message, uf: "DF" };
|
|
101
8
|
}
|
|
102
|
-
function
|
|
103
|
-
return
|
|
104
|
-
ok: true,
|
|
105
|
-
value: brandInscricaoEstadual(stripped),
|
|
106
|
-
uf,
|
|
107
|
-
format: "inscricao-estadual"
|
|
108
|
-
};
|
|
9
|
+
function stripIeDf(input) {
|
|
10
|
+
return input.replace(/\D/g, "");
|
|
109
11
|
}
|
|
110
|
-
function
|
|
12
|
+
function validateIeDf(input) {
|
|
13
|
+
const trimmed = input.trim();
|
|
111
14
|
if (trimmed.length === 0) {
|
|
112
|
-
return
|
|
15
|
+
return { ok: false, code: "EMPTY_INPUT", message: "Inscri\xE7\xE3o Estadual input is empty", uf: "DF" };
|
|
113
16
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
function checkDigitChars(trimmed, uf, pattern = /^[0-9.\-\s/]+$/) {
|
|
117
|
-
if (!pattern.test(trimmed)) {
|
|
118
|
-
return ieFailure(uf, "INVALID_CHARACTER", `${uf} Inscri\xE7\xE3o Estadual contains invalid characters`);
|
|
17
|
+
if (!DF_MASK_PATTERN.test(trimmed)) {
|
|
18
|
+
return failure("INVALID_CHARACTER", "DF Inscri\xE7\xE3o Estadual contains invalid characters");
|
|
119
19
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
// src/core/inscricao-estadual/modulo-ie.ts
|
|
124
|
-
function computeIeSpCheckDigit(digits, weights) {
|
|
125
|
-
let sum = 0;
|
|
126
|
-
for (let i = 0; i < weights.length; i++) {
|
|
127
|
-
sum += Number(digits[i]) * weights[i];
|
|
20
|
+
const stripped = stripIeDf(trimmed);
|
|
21
|
+
if (stripped.length === 12) {
|
|
22
|
+
return failure("INVALID_LENGTH", "DF Inscri\xE7\xE3o Estadual legacy 12-digit format is not supported; use 13 digits");
|
|
128
23
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
function computeIeMtCheckDigit(digits10) {
|
|
133
|
-
let sum = 0;
|
|
134
|
-
const weights = [3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
|
|
135
|
-
for (let i = 0; i < 10; i++) {
|
|
136
|
-
sum += Number(digits10[i]) * weights[i];
|
|
24
|
+
if (stripped.length !== IE_DF_LENGTH) {
|
|
25
|
+
return failure("INVALID_LENGTH", `DF Inscri\xE7\xE3o Estadual must have ${IE_DF_LENGTH} digits after normalization`);
|
|
137
26
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
function computeIeDfCheckDigit(digits, weights, includeDv1 = false, dv1 = 0) {
|
|
142
|
-
let sum = 0;
|
|
143
|
-
const digitCount = includeDv1 ? 11 : digits.length;
|
|
144
|
-
for (let i = 0; i < digitCount; i++) {
|
|
145
|
-
sum += Number(digits[i]) * weights[i];
|
|
27
|
+
if (!stripped.startsWith(IE_DF_PREFIX)) {
|
|
28
|
+
return failure("UNSUPPORTED_FORMAT", "DF Inscri\xE7\xE3o Estadual must start with prefix 07");
|
|
146
29
|
}
|
|
147
|
-
|
|
148
|
-
|
|
30
|
+
const dv1 = computeIeDfCheckDigit(stripped.slice(0, 11), IE_DF_DV1_WEIGHTS);
|
|
31
|
+
const dv2 = computeIeDfCheckDigit(stripped.slice(0, 11), IE_DF_DV2_WEIGHTS, true, dv1);
|
|
32
|
+
if (Number(stripped.charAt(11)) !== dv1 || Number(stripped.charAt(12)) !== dv2) {
|
|
33
|
+
return failure("INVALID_CHECK_DIGIT", "DF Inscri\xE7\xE3o Estadual check digits are invalid");
|
|
149
34
|
}
|
|
150
|
-
|
|
151
|
-
|
|
35
|
+
return {
|
|
36
|
+
ok: true,
|
|
37
|
+
value: brandInscricaoEstadual(stripped),
|
|
38
|
+
uf: "DF",
|
|
39
|
+
format: "inscricao-estadual"
|
|
40
|
+
};
|
|
152
41
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
sum += Number(body8[i]) * weight;
|
|
158
|
-
weight--;
|
|
159
|
-
}
|
|
160
|
-
const rest = sum % 11;
|
|
161
|
-
let digit = 11 - rest;
|
|
162
|
-
if (digit >= 10) {
|
|
163
|
-
digit = 0;
|
|
164
|
-
}
|
|
165
|
-
return digit;
|
|
42
|
+
|
|
43
|
+
// src/core/inscricao-estadual/mt.ts
|
|
44
|
+
function failure2(code, message) {
|
|
45
|
+
return { ok: false, code, message, uf: "MT" };
|
|
166
46
|
}
|
|
167
|
-
function
|
|
168
|
-
|
|
169
|
-
let sum = 0;
|
|
170
|
-
for (let i = 0; i < 8; i++) {
|
|
171
|
-
sum += Number(body8[i]) * weight;
|
|
172
|
-
weight--;
|
|
173
|
-
}
|
|
174
|
-
const product = sum * 10;
|
|
175
|
-
let digit = product - Math.floor(product / 11) * 11;
|
|
176
|
-
if (digit >= 10) {
|
|
177
|
-
digit = 0;
|
|
178
|
-
}
|
|
179
|
-
return digit;
|
|
47
|
+
function stripIeMt(input) {
|
|
48
|
+
return input.replace(/\D/g, "");
|
|
180
49
|
}
|
|
181
|
-
function
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
50
|
+
function normalizeMtToCanonical(padded11) {
|
|
51
|
+
const trimmed = padded11.replace(/^0+/, "");
|
|
52
|
+
return trimmed.length === IE_MT_CANONICAL_LENGTH ? trimmed : padded11.slice(-IE_MT_CANONICAL_LENGTH);
|
|
53
|
+
}
|
|
54
|
+
function validateIeMt(input) {
|
|
55
|
+
const trimmed = input.trim();
|
|
56
|
+
if (trimmed.length === 0) {
|
|
57
|
+
return { ok: false, code: "EMPTY_INPUT", message: "Inscri\xE7\xE3o Estadual input is empty", uf: "MT" };
|
|
187
58
|
}
|
|
188
|
-
if (
|
|
189
|
-
return
|
|
59
|
+
if (/[^0-9.\-\s]/.test(trimmed)) {
|
|
60
|
+
return failure2("INVALID_CHARACTER", "MT Inscri\xE7\xE3o Estadual contains invalid characters");
|
|
190
61
|
}
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
62
|
+
const stripped = stripIeMt(trimmed);
|
|
63
|
+
if (stripped.length < IE_MT_CANONICAL_LENGTH || stripped.length > IE_MT_LEGACY_LENGTH) {
|
|
64
|
+
return failure2(
|
|
65
|
+
"INVALID_LENGTH",
|
|
66
|
+
`MT Inscri\xE7\xE3o Estadual must have ${IE_MT_CANONICAL_LENGTH} or ${IE_MT_LEGACY_LENGTH} digits after normalization`
|
|
67
|
+
);
|
|
195
68
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
let sum = 0;
|
|
201
|
-
for (let i = 0; i < body.length; i++) {
|
|
202
|
-
sum += Number(body[i]) * weight;
|
|
203
|
-
weight--;
|
|
204
|
-
if (weight === 1) {
|
|
205
|
-
weight = 7;
|
|
206
|
-
}
|
|
69
|
+
const padded = stripped.length === IE_MT_LEGACY_LENGTH ? stripped : stripped.padStart(IE_MT_LEGACY_LENGTH, "0");
|
|
70
|
+
const canonical = normalizeMtToCanonical(padded);
|
|
71
|
+
if (!canonical.startsWith(IE_MT_PREFIX)) {
|
|
72
|
+
return failure2("UNSUPPORTED_FORMAT", "MT Inscri\xE7\xE3o Estadual must start with prefix 13");
|
|
207
73
|
}
|
|
208
|
-
const
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
digit = 0;
|
|
74
|
+
const expectedDv = computeIeMtCheckDigit(padded.slice(0, 10));
|
|
75
|
+
if (Number(padded.charAt(10)) !== expectedDv) {
|
|
76
|
+
return failure2("INVALID_CHECK_DIGIT", "MT Inscri\xE7\xE3o Estadual check digit is invalid");
|
|
212
77
|
}
|
|
213
|
-
return
|
|
78
|
+
return {
|
|
79
|
+
ok: true,
|
|
80
|
+
value: brandInscricaoEstadual(canonical),
|
|
81
|
+
uf: "MT",
|
|
82
|
+
format: "inscricao-estadual"
|
|
83
|
+
};
|
|
214
84
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
weight--;
|
|
221
|
-
if (weight === 1) {
|
|
222
|
-
weight = 9;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
const rest = sum % 11;
|
|
226
|
-
let digit = 11 - rest;
|
|
227
|
-
if (digit >= 10) {
|
|
228
|
-
digit = 0;
|
|
229
|
-
}
|
|
230
|
-
return digit;
|
|
85
|
+
|
|
86
|
+
// src/core/inscricao-estadual/sp.ts
|
|
87
|
+
var SP_MASK_PATTERN = /^[0-9.]+$/;
|
|
88
|
+
function failure3(code, message) {
|
|
89
|
+
return { ok: false, code, message, uf: "SP" };
|
|
231
90
|
}
|
|
232
|
-
function
|
|
233
|
-
|
|
234
|
-
const refDigit = Number(ie[refIndex]);
|
|
235
|
-
const mod10Digits = [0, 1, 2, 3, 4, 5, 8];
|
|
236
|
-
return mod10Digits.includes(refDigit) ? 10 : 11;
|
|
91
|
+
function stripIeSp(input) {
|
|
92
|
+
return input.replace(/\D/g, "");
|
|
237
93
|
}
|
|
238
|
-
function
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
sum += Number(body[i]) * weight;
|
|
243
|
-
weight--;
|
|
244
|
-
}
|
|
245
|
-
const rest = sum % mod;
|
|
246
|
-
let digit = mod - rest;
|
|
247
|
-
if (digit >= 10) {
|
|
248
|
-
digit = 0;
|
|
94
|
+
function validateIeSp(input) {
|
|
95
|
+
const trimmed = input.trim();
|
|
96
|
+
if (trimmed.length === 0) {
|
|
97
|
+
return { ok: false, code: "EMPTY_INPUT", message: "Inscri\xE7\xE3o Estadual input is empty", uf: "SP" };
|
|
249
98
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
function computeIePeCheckDigit(body) {
|
|
253
|
-
let weight = body.length + 1;
|
|
254
|
-
let sum = 0;
|
|
255
|
-
for (let i = 0; i < body.length; i++) {
|
|
256
|
-
sum += Number(body[i]) * weight;
|
|
257
|
-
weight--;
|
|
99
|
+
if (/[Pp]/.test(trimmed)) {
|
|
100
|
+
return failure3("UNSUPPORTED_FORMAT", "SP rural IE format (P\u2026) requires validateIeProdutorRural");
|
|
258
101
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
if (digit >= 10) {
|
|
262
|
-
digit = 0;
|
|
102
|
+
if (!SP_MASK_PATTERN.test(trimmed)) {
|
|
103
|
+
return failure3("INVALID_CHARACTER", "SP Inscri\xE7\xE3o Estadual contains invalid characters");
|
|
263
104
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
let weight = startWeight;
|
|
268
|
-
let sum = 0;
|
|
269
|
-
for (let i = 0; i < body.length; i++) {
|
|
270
|
-
sum += Number(body[i]) * weight;
|
|
271
|
-
weight--;
|
|
272
|
-
if (weight === 1) {
|
|
273
|
-
weight = resetWeight;
|
|
274
|
-
}
|
|
105
|
+
const stripped = stripIeSp(trimmed);
|
|
106
|
+
if (stripped.length !== IE_SP_LENGTH) {
|
|
107
|
+
return failure3("INVALID_LENGTH", `SP Inscri\xE7\xE3o Estadual must have ${IE_SP_LENGTH} digits after normalization`);
|
|
275
108
|
}
|
|
276
|
-
const
|
|
277
|
-
|
|
278
|
-
if (
|
|
279
|
-
|
|
109
|
+
const dv1 = computeIeSpCheckDigit(stripped, IE_SP_DV1_WEIGHTS);
|
|
110
|
+
const dv2 = computeIeSpCheckDigit(stripped, IE_SP_DV2_WEIGHTS);
|
|
111
|
+
if (Number(stripped.charAt(8)) !== dv1 || Number(stripped.charAt(11)) !== dv2) {
|
|
112
|
+
return failure3("INVALID_CHECK_DIGIT", "SP Inscri\xE7\xE3o Estadual check digits are invalid");
|
|
280
113
|
}
|
|
281
|
-
return
|
|
114
|
+
return {
|
|
115
|
+
ok: true,
|
|
116
|
+
value: brandInscricaoEstadual(stripped),
|
|
117
|
+
uf: "SP",
|
|
118
|
+
format: "inscricao-estadual"
|
|
119
|
+
};
|
|
282
120
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
sum += Number(body[i]) * weight;
|
|
288
|
-
weight--;
|
|
289
|
-
if (weight === 1) {
|
|
290
|
-
weight = 9;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
const rest = sum % 11;
|
|
294
|
-
let digit = 11 - rest;
|
|
295
|
-
if (digit >= 10) {
|
|
296
|
-
digit -= 10;
|
|
297
|
-
}
|
|
298
|
-
return digit;
|
|
121
|
+
|
|
122
|
+
// src/core/inscricao-estadual/ie-common.ts
|
|
123
|
+
function stripIeDigits(input) {
|
|
124
|
+
return input.replace(/\D/g, "");
|
|
299
125
|
}
|
|
300
|
-
function
|
|
301
|
-
|
|
302
|
-
let sum = 0;
|
|
303
|
-
for (let i = 0; i < 8; i++) {
|
|
304
|
-
sum += Number(body8[i]) * weight;
|
|
305
|
-
weight--;
|
|
306
|
-
}
|
|
307
|
-
const rest = sum % 11;
|
|
308
|
-
let digit = 11 - rest;
|
|
309
|
-
const bodyInt = Number(body8);
|
|
310
|
-
if (digit >= 10) {
|
|
311
|
-
if (digit === 11 && bodyInt >= 10103105 && bodyInt <= 10119997) {
|
|
312
|
-
digit = 1;
|
|
313
|
-
} else {
|
|
314
|
-
digit = 0;
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
return digit;
|
|
318
|
-
}
|
|
319
|
-
function computeIeApCheckDigit(body8) {
|
|
320
|
-
const bodyInt = Number(body8);
|
|
321
|
-
let p = 0;
|
|
322
|
-
let d = 0;
|
|
323
|
-
if (bodyInt >= 3000001 && bodyInt <= 3017e3) {
|
|
324
|
-
p = 5;
|
|
325
|
-
d = 0;
|
|
326
|
-
} else if (bodyInt >= 3017001 && bodyInt <= 3019022) {
|
|
327
|
-
p = 9;
|
|
328
|
-
d = 1;
|
|
329
|
-
}
|
|
330
|
-
let weight = 9;
|
|
331
|
-
let sum = p;
|
|
332
|
-
for (let i = 0; i < 8; i++) {
|
|
333
|
-
sum += Number(body8[i]) * weight;
|
|
334
|
-
weight--;
|
|
335
|
-
}
|
|
336
|
-
let digit = 11 - sum % 11;
|
|
337
|
-
if (digit === 10) {
|
|
338
|
-
digit = 0;
|
|
339
|
-
} else if (digit === 11) {
|
|
340
|
-
digit = d;
|
|
341
|
-
}
|
|
342
|
-
return digit;
|
|
126
|
+
function ieFailure(uf, code, message) {
|
|
127
|
+
return { ok: false, code, message, uf };
|
|
343
128
|
}
|
|
344
|
-
function
|
|
345
|
-
|
|
346
|
-
let sum = 0;
|
|
347
|
-
for (let i = 0; i < 8; i++) {
|
|
348
|
-
sum += Number(body8[i]) * weight;
|
|
349
|
-
weight++;
|
|
350
|
-
}
|
|
351
|
-
return sum % 9;
|
|
129
|
+
function ieEmptyInput(uf) {
|
|
130
|
+
return { ok: false, code: "EMPTY_INPUT", message: "Inscri\xE7\xE3o Estadual input is empty", uf };
|
|
352
131
|
}
|
|
353
|
-
function
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
}
|
|
360
|
-
const rest = sum % 11;
|
|
361
|
-
if (rest < 2) {
|
|
362
|
-
return 0;
|
|
363
|
-
}
|
|
364
|
-
return 11 - rest;
|
|
132
|
+
function ieSuccess(stripped, uf) {
|
|
133
|
+
return {
|
|
134
|
+
ok: true,
|
|
135
|
+
value: brandInscricaoEstadual(stripped),
|
|
136
|
+
uf,
|
|
137
|
+
format: "inscricao-estadual"
|
|
138
|
+
};
|
|
365
139
|
}
|
|
366
|
-
function
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
for (let i = 0; i < bodyWithZero.length; i++) {
|
|
370
|
-
const w = (i + 1) % 2 === 0 ? 2 : 1;
|
|
371
|
-
weightedSum += (Number(bodyWithZero[i]) * w).toString();
|
|
372
|
-
}
|
|
373
|
-
let sum = 0;
|
|
374
|
-
for (let i = 0; i < weightedSum.length; i++) {
|
|
375
|
-
sum += Number(weightedSum[i]);
|
|
140
|
+
function checkTrimmedEmpty(trimmed, uf) {
|
|
141
|
+
if (trimmed.length === 0) {
|
|
142
|
+
return ieEmptyInput(uf);
|
|
376
143
|
}
|
|
377
|
-
|
|
378
|
-
return lastDigit === 0 ? 0 : 10 - lastDigit;
|
|
144
|
+
return null;
|
|
379
145
|
}
|
|
380
|
-
function
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
for (let i = 0; i < body12.length; i++) {
|
|
384
|
-
sum += Number(body12[i]) * weight;
|
|
385
|
-
weight--;
|
|
386
|
-
if (weight === 1) {
|
|
387
|
-
weight = 11;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
const rest = sum % 11;
|
|
391
|
-
let digit = 11 - rest;
|
|
392
|
-
if (digit >= 10) {
|
|
393
|
-
digit = 0;
|
|
146
|
+
function checkDigitChars(trimmed, uf, pattern = /^[0-9.\-\s/]+$/) {
|
|
147
|
+
if (!pattern.test(trimmed)) {
|
|
148
|
+
return ieFailure(uf, "INVALID_CHARACTER", `${uf} Inscri\xE7\xE3o Estadual contains invalid characters`);
|
|
394
149
|
}
|
|
395
|
-
return
|
|
150
|
+
return null;
|
|
396
151
|
}
|
|
397
152
|
|
|
398
153
|
// src/core/inscricao-estadual/ac.ts
|
|
@@ -552,45 +307,6 @@ function validateIeCe(input) {
|
|
|
552
307
|
return ieSuccess(stripped, UF6);
|
|
553
308
|
}
|
|
554
309
|
|
|
555
|
-
// src/core/inscricao-estadual/df.ts
|
|
556
|
-
var DF_MASK_PATTERN = /^[0-9.-]+$/;
|
|
557
|
-
function failure(code, message) {
|
|
558
|
-
return { ok: false, code, message, uf: "DF" };
|
|
559
|
-
}
|
|
560
|
-
function stripIeDf(input) {
|
|
561
|
-
return input.replace(/\D/g, "");
|
|
562
|
-
}
|
|
563
|
-
function validateIeDf(input) {
|
|
564
|
-
const trimmed = input.trim();
|
|
565
|
-
if (trimmed.length === 0) {
|
|
566
|
-
return { ok: false, code: "EMPTY_INPUT", message: "Inscri\xE7\xE3o Estadual input is empty", uf: "DF" };
|
|
567
|
-
}
|
|
568
|
-
if (!DF_MASK_PATTERN.test(trimmed)) {
|
|
569
|
-
return failure("INVALID_CHARACTER", "DF Inscri\xE7\xE3o Estadual contains invalid characters");
|
|
570
|
-
}
|
|
571
|
-
const stripped = stripIeDf(trimmed);
|
|
572
|
-
if (stripped.length === 12) {
|
|
573
|
-
return failure("INVALID_LENGTH", "DF Inscri\xE7\xE3o Estadual legacy 12-digit format is not supported; use 13 digits");
|
|
574
|
-
}
|
|
575
|
-
if (stripped.length !== IE_DF_LENGTH) {
|
|
576
|
-
return failure("INVALID_LENGTH", `DF Inscri\xE7\xE3o Estadual must have ${IE_DF_LENGTH} digits after normalization`);
|
|
577
|
-
}
|
|
578
|
-
if (!stripped.startsWith(IE_DF_PREFIX)) {
|
|
579
|
-
return failure("UNSUPPORTED_FORMAT", "DF Inscri\xE7\xE3o Estadual must start with prefix 07");
|
|
580
|
-
}
|
|
581
|
-
const dv1 = computeIeDfCheckDigit(stripped.slice(0, 11), IE_DF_DV1_WEIGHTS);
|
|
582
|
-
const dv2 = computeIeDfCheckDigit(stripped.slice(0, 11), IE_DF_DV2_WEIGHTS, true, dv1);
|
|
583
|
-
if (Number(stripped.charAt(11)) !== dv1 || Number(stripped.charAt(12)) !== dv2) {
|
|
584
|
-
return failure("INVALID_CHECK_DIGIT", "DF Inscri\xE7\xE3o Estadual check digits are invalid");
|
|
585
|
-
}
|
|
586
|
-
return {
|
|
587
|
-
ok: true,
|
|
588
|
-
value: brandInscricaoEstadual(stripped),
|
|
589
|
-
uf: "DF",
|
|
590
|
-
format: "inscricao-estadual"
|
|
591
|
-
};
|
|
592
|
-
}
|
|
593
|
-
|
|
594
310
|
// src/core/inscricao-estadual/es.ts
|
|
595
311
|
var UF7 = "ES";
|
|
596
312
|
function stripIeEs(input) {
|
|
@@ -707,63 +423,6 @@ function validateIeMs(input) {
|
|
|
707
423
|
return { ...ceResult, uf: UF11 };
|
|
708
424
|
}
|
|
709
425
|
|
|
710
|
-
// src/core/inscricao-estadual/mt.ts
|
|
711
|
-
function failure2(code, message) {
|
|
712
|
-
return { ok: false, code, message, uf: "MT" };
|
|
713
|
-
}
|
|
714
|
-
function stripIeMt(input) {
|
|
715
|
-
return input.replace(/\D/g, "");
|
|
716
|
-
}
|
|
717
|
-
function normalizeMtToCanonical(padded11) {
|
|
718
|
-
const trimmed = padded11.replace(/^0+/, "");
|
|
719
|
-
return trimmed.length === IE_MT_CANONICAL_LENGTH ? trimmed : padded11.slice(-IE_MT_CANONICAL_LENGTH);
|
|
720
|
-
}
|
|
721
|
-
function validateIeMt(input) {
|
|
722
|
-
const trimmed = input.trim();
|
|
723
|
-
if (trimmed.length === 0) {
|
|
724
|
-
return { ok: false, code: "EMPTY_INPUT", message: "Inscri\xE7\xE3o Estadual input is empty", uf: "MT" };
|
|
725
|
-
}
|
|
726
|
-
if (/[^0-9.\-\s]/.test(trimmed)) {
|
|
727
|
-
return failure2("INVALID_CHARACTER", "MT Inscri\xE7\xE3o Estadual contains invalid characters");
|
|
728
|
-
}
|
|
729
|
-
const stripped = stripIeMt(trimmed);
|
|
730
|
-
if (stripped.length < IE_MT_CANONICAL_LENGTH || stripped.length > IE_MT_LEGACY_LENGTH) {
|
|
731
|
-
return failure2(
|
|
732
|
-
"INVALID_LENGTH",
|
|
733
|
-
`MT Inscri\xE7\xE3o Estadual must have ${IE_MT_CANONICAL_LENGTH} or ${IE_MT_LEGACY_LENGTH} digits after normalization`
|
|
734
|
-
);
|
|
735
|
-
}
|
|
736
|
-
const padded = stripped.length === IE_MT_LEGACY_LENGTH ? stripped : stripped.padStart(IE_MT_LEGACY_LENGTH, "0");
|
|
737
|
-
const canonical = normalizeMtToCanonical(padded);
|
|
738
|
-
if (!canonical.startsWith(IE_MT_PREFIX)) {
|
|
739
|
-
return failure2("UNSUPPORTED_FORMAT", "MT Inscri\xE7\xE3o Estadual must start with prefix 13");
|
|
740
|
-
}
|
|
741
|
-
const expectedDv = computeIeMtCheckDigit(padded.slice(0, 10));
|
|
742
|
-
if (Number(padded.charAt(10)) !== expectedDv) {
|
|
743
|
-
return failure2("INVALID_CHECK_DIGIT", "MT Inscri\xE7\xE3o Estadual check digit is invalid");
|
|
744
|
-
}
|
|
745
|
-
return {
|
|
746
|
-
ok: true,
|
|
747
|
-
value: brandInscricaoEstadual(canonical),
|
|
748
|
-
uf: "MT",
|
|
749
|
-
format: "inscricao-estadual"
|
|
750
|
-
};
|
|
751
|
-
}
|
|
752
|
-
|
|
753
|
-
// src/core/inscricao-estadual/mask.ts
|
|
754
|
-
function applyIeSpMask(stripped) {
|
|
755
|
-
if (stripped.length !== IE_SP_LENGTH) {
|
|
756
|
-
throw new Error("SP IE must have exactly 12 digits to apply mask");
|
|
757
|
-
}
|
|
758
|
-
return `${stripped.slice(0, 3)}.${stripped.slice(3, 6)}.${stripped.slice(6, 9)}.${stripped.slice(9)}`;
|
|
759
|
-
}
|
|
760
|
-
function applyIeDfMask(stripped) {
|
|
761
|
-
if (stripped.length !== IE_DF_LENGTH) {
|
|
762
|
-
throw new Error("DF IE must have exactly 13 digits to apply mask");
|
|
763
|
-
}
|
|
764
|
-
return `${stripped.slice(0, 3)}.${stripped.slice(3, 8)}.${stripped.slice(8, 11)}-${stripped.slice(11)}`;
|
|
765
|
-
}
|
|
766
|
-
|
|
767
426
|
// src/core/inscricao-estadual/pa.ts
|
|
768
427
|
var UF12 = "PA";
|
|
769
428
|
function stripIePa(input) {
|
|
@@ -1037,42 +696,6 @@ function validateIeSe(input) {
|
|
|
1037
696
|
return { ...ceResult, uf: UF23 };
|
|
1038
697
|
}
|
|
1039
698
|
|
|
1040
|
-
// src/core/inscricao-estadual/sp.ts
|
|
1041
|
-
var SP_MASK_PATTERN = /^[0-9.]+$/;
|
|
1042
|
-
function failure3(code, message) {
|
|
1043
|
-
return { ok: false, code, message, uf: "SP" };
|
|
1044
|
-
}
|
|
1045
|
-
function stripIeSp(input) {
|
|
1046
|
-
return input.replace(/\D/g, "");
|
|
1047
|
-
}
|
|
1048
|
-
function validateIeSp(input) {
|
|
1049
|
-
const trimmed = input.trim();
|
|
1050
|
-
if (trimmed.length === 0) {
|
|
1051
|
-
return { ok: false, code: "EMPTY_INPUT", message: "Inscri\xE7\xE3o Estadual input is empty", uf: "SP" };
|
|
1052
|
-
}
|
|
1053
|
-
if (/[Pp]/.test(trimmed)) {
|
|
1054
|
-
return failure3("UNSUPPORTED_FORMAT", "SP rural IE format (P\u2026) is not supported in v1");
|
|
1055
|
-
}
|
|
1056
|
-
if (!SP_MASK_PATTERN.test(trimmed)) {
|
|
1057
|
-
return failure3("INVALID_CHARACTER", "SP Inscri\xE7\xE3o Estadual contains invalid characters");
|
|
1058
|
-
}
|
|
1059
|
-
const stripped = stripIeSp(trimmed);
|
|
1060
|
-
if (stripped.length !== IE_SP_LENGTH) {
|
|
1061
|
-
return failure3("INVALID_LENGTH", `SP Inscri\xE7\xE3o Estadual must have ${IE_SP_LENGTH} digits after normalization`);
|
|
1062
|
-
}
|
|
1063
|
-
const dv1 = computeIeSpCheckDigit(stripped, IE_SP_DV1_WEIGHTS);
|
|
1064
|
-
const dv2 = computeIeSpCheckDigit(stripped, IE_SP_DV2_WEIGHTS);
|
|
1065
|
-
if (Number(stripped.charAt(8)) !== dv1 || Number(stripped.charAt(11)) !== dv2) {
|
|
1066
|
-
return failure3("INVALID_CHECK_DIGIT", "SP Inscri\xE7\xE3o Estadual check digits are invalid");
|
|
1067
|
-
}
|
|
1068
|
-
return {
|
|
1069
|
-
ok: true,
|
|
1070
|
-
value: brandInscricaoEstadual(stripped),
|
|
1071
|
-
uf: "SP",
|
|
1072
|
-
format: "inscricao-estadual"
|
|
1073
|
-
};
|
|
1074
|
-
}
|
|
1075
|
-
|
|
1076
699
|
// src/core/inscricao-estadual/to.ts
|
|
1077
700
|
var UF24 = "TO";
|
|
1078
701
|
function stripIeTo(input) {
|
|
@@ -1175,6 +798,6 @@ function formatInscricaoEstadual(input, options) {
|
|
|
1175
798
|
}
|
|
1176
799
|
}
|
|
1177
800
|
|
|
1178
|
-
export {
|
|
1179
|
-
//# sourceMappingURL=chunk-
|
|
1180
|
-
//# sourceMappingURL=chunk-
|
|
801
|
+
export { formatInscricaoEstadual, getIeOfficialSourceUrl, isValidInscricaoEstadual, stripInscricaoEstadual, validateIeDf, validateIeMt, validateIeSp, validateInscricaoEstadual };
|
|
802
|
+
//# sourceMappingURL=chunk-3QP6R46N.js.map
|
|
803
|
+
//# sourceMappingURL=chunk-3QP6R46N.js.map
|