@br-validators/core 1.0.0 → 1.3.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 +42 -2
- package/dist/bancos.d.ts +41 -0
- package/dist/bancos.js +3328 -0
- package/dist/bancos.js.map +1 -0
- package/dist/batch.js +16 -14
- package/dist/brcode.js +5 -5
- package/dist/cbo.d.ts +41 -0
- package/dist/cbo.js +10832 -0
- package/dist/cbo.js.map +1 -0
- package/dist/cep.d.ts +38 -1
- package/dist/cep.js +4 -3
- package/dist/cfop.d.ts +41 -0
- package/dist/cfop.js +2812 -0
- package/dist/cfop.js.map +1 -0
- package/dist/chunk-5CBVZIQC.js +30 -0
- package/dist/chunk-5CBVZIQC.js.map +1 -0
- package/dist/{chunk-LAEUXOF6.js → chunk-5EJAENH5.js} +3 -3
- package/dist/{chunk-LAEUXOF6.js.map → chunk-5EJAENH5.js.map} +1 -1
- package/dist/chunk-DQUMIETC.js +30 -0
- package/dist/chunk-DQUMIETC.js.map +1 -0
- package/dist/{chunk-HUIMOB5E.js → chunk-DYX5XSJ6.js} +3 -3
- package/dist/{chunk-HUIMOB5E.js.map → chunk-DYX5XSJ6.js.map} +1 -1
- package/dist/{chunk-TJCE4TVX.js → chunk-EN7PVDYB.js} +4 -4
- package/dist/{chunk-TJCE4TVX.js.map → chunk-EN7PVDYB.js.map} +1 -1
- package/dist/{chunk-VWVQWN2G.js → chunk-EQV33L7H.js} +3 -3
- package/dist/{chunk-VWVQWN2G.js.map → chunk-EQV33L7H.js.map} +1 -1
- package/dist/{chunk-FKFRB3RJ.js → chunk-GWAYWBHN.js} +4 -4
- package/dist/{chunk-FKFRB3RJ.js.map → chunk-GWAYWBHN.js.map} +1 -1
- package/dist/{chunk-BFMRXXFE.js → chunk-ITHT54NC.js} +11 -11
- package/dist/{chunk-BFMRXXFE.js.map → chunk-ITHT54NC.js.map} +1 -1
- package/dist/{chunk-IYOPXJLY.js → chunk-JSNXKBZA.js} +3 -3
- package/dist/{chunk-IYOPXJLY.js.map → chunk-JSNXKBZA.js.map} +1 -1
- package/dist/{chunk-P2KNN6ZR.js → chunk-KGCLQ7QX.js} +3 -3
- package/dist/{chunk-P2KNN6ZR.js.map → chunk-KGCLQ7QX.js.map} +1 -1
- package/dist/{chunk-H3MLGGFI.js → chunk-KLONQL76.js} +5 -5
- package/dist/{chunk-H3MLGGFI.js.map → chunk-KLONQL76.js.map} +1 -1
- package/dist/{chunk-63G7QO73.js → chunk-L7PF4KD6.js} +3 -3
- package/dist/{chunk-63G7QO73.js.map → chunk-L7PF4KD6.js.map} +1 -1
- package/dist/{chunk-PD7ZTWMM.js → chunk-MAM4U3UR.js} +3 -3
- package/dist/{chunk-PD7ZTWMM.js.map → chunk-MAM4U3UR.js.map} +1 -1
- package/dist/{chunk-V7UJ55KW.js → chunk-MZDCVTN6.js} +3 -3
- package/dist/{chunk-V7UJ55KW.js.map → chunk-MZDCVTN6.js.map} +1 -1
- package/dist/{chunk-G6OBZRZM.js → chunk-NHFSEWO2.js} +12 -12
- package/dist/{chunk-G6OBZRZM.js.map → chunk-NHFSEWO2.js.map} +1 -1
- package/dist/{chunk-I66ZRSEN.js → chunk-NT3TNF3R.js} +3 -3
- package/dist/{chunk-I66ZRSEN.js.map → chunk-NT3TNF3R.js.map} +1 -1
- package/dist/{chunk-EVULAGR5.js → chunk-O3T7PUBI.js} +3 -3
- package/dist/{chunk-EVULAGR5.js.map → chunk-O3T7PUBI.js.map} +1 -1
- package/dist/chunk-OOUEURR7.js +24091 -0
- package/dist/chunk-OOUEURR7.js.map +1 -0
- package/dist/chunk-P6TOL5VY.js +147973 -0
- package/dist/chunk-P6TOL5VY.js.map +1 -0
- package/dist/{chunk-WC6YYFWP.js → chunk-QB7SZS2C.js} +10 -10
- package/dist/{chunk-WC6YYFWP.js.map → chunk-QB7SZS2C.js.map} +1 -1
- package/dist/{chunk-N2WVO3GF.js → chunk-QK27VDVB.js} +11 -11
- package/dist/{chunk-N2WVO3GF.js.map → chunk-QK27VDVB.js.map} +1 -1
- package/dist/chunk-RRVGW333.js +31 -0
- package/dist/chunk-RRVGW333.js.map +1 -0
- package/dist/{chunk-N6N5ATLY.js → chunk-S4WWYHQM.js} +3 -3
- package/dist/{chunk-N6N5ATLY.js.map → chunk-S4WWYHQM.js.map} +1 -1
- package/dist/chunk-SC6YCHT7.js +30 -0
- package/dist/chunk-SC6YCHT7.js.map +1 -0
- package/dist/{chunk-MESOO5GZ.js → chunk-SDEJD2J7.js} +3 -3
- package/dist/{chunk-MESOO5GZ.js.map → chunk-SDEJD2J7.js.map} +1 -1
- package/dist/{chunk-I7DM47IR.js → chunk-SKDMG3FK.js} +20 -20
- package/dist/{chunk-I7DM47IR.js.map → chunk-SKDMG3FK.js.map} +1 -1
- package/dist/chunk-UGW266DF.js +30 -0
- package/dist/chunk-UGW266DF.js.map +1 -0
- package/dist/{chunk-YNVMVDFN.js → chunk-VKG7UEN5.js} +3 -3
- package/dist/{chunk-YNVMVDFN.js.map → chunk-VKG7UEN5.js.map} +1 -1
- package/dist/chunk-WH6W3NUA.js +30 -0
- package/dist/chunk-WH6W3NUA.js.map +1 -0
- package/dist/chunk-WSUAPD5M.js +32 -0
- package/dist/chunk-WSUAPD5M.js.map +1 -0
- package/dist/{chunk-CSVGWTCG.js → chunk-XHDRWM46.js} +3 -3
- package/dist/{chunk-CSVGWTCG.js.map → chunk-XHDRWM46.js.map} +1 -1
- package/dist/chunk-XQ6MMGV2.js +30 -0
- package/dist/chunk-XQ6MMGV2.js.map +1 -0
- package/dist/chunk-YOL43ZNQ.js +35 -0
- package/dist/chunk-YOL43ZNQ.js.map +1 -0
- package/dist/{chunk-SAZA3V2U.js → chunk-ZTDLGGYE.js} +10 -10
- package/dist/{chunk-SAZA3V2U.js.map → chunk-ZTDLGGYE.js.map} +1 -1
- package/dist/cnaes.d.ts +41 -0
- package/dist/cnaes.js +5384 -0
- package/dist/cnaes.js.map +1 -0
- package/dist/cnh.js +4 -4
- package/dist/compare.js +18 -16
- package/dist/cpf.js +4 -4
- package/dist/data-catalog.d.ts +14 -0
- package/dist/data-catalog.js +37 -0
- package/dist/data-catalog.js.map +1 -0
- package/dist/detect.js +15 -13
- package/dist/diff.js +18 -16
- package/dist/feriados.d.ts +73 -0
- package/dist/feriados.js +243 -0
- package/dist/feriados.js.map +1 -0
- package/dist/generate.js +25 -23
- package/dist/ibge.d.ts +65 -0
- package/dist/ibge.js +28174 -0
- package/dist/ibge.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +43 -41
- package/dist/index.js.map +1 -1
- package/dist/mask.js +24 -22
- package/dist/ncm.d.ts +41 -0
- package/dist/ncm.js +42116 -0
- package/dist/ncm.js.map +1 -0
- package/dist/pix.js +5 -5
- package/dist/placa.js +1 -1
- package/dist/renavam.js +4 -4
- package/dist/sanitize.js +13 -11
- package/dist/telefone.d.ts +32 -1
- package/dist/telefone.js +3 -2
- package/dist/titulo-eleitor.js +4 -4
- package/dist/types-CBIZxgfG.d.ts +28 -0
- package/package.json +41 -1
- package/dist/chunk-DAR6VOMT.js +0 -192
- package/dist/chunk-DAR6VOMT.js.map +0 -1
- package/dist/chunk-TE6NSONR.js +0 -43
- package/dist/chunk-TE6NSONR.js.map +0 -1
package/dist/pix.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import './chunk-KLPONHBL.js';
|
|
2
|
-
export { formatPixKey } from './chunk-
|
|
3
|
-
export { PIX_DICT_API_SOURCE_URL, PIX_GOLDEN_CNPJ_ALPHANUMERIC, PIX_GOLDEN_CNPJ_NUMERIC, PIX_GOLDEN_CPF, PIX_GOLDEN_EMAIL, PIX_GOLDEN_EVP, PIX_GOLDEN_PHONE, PIX_OFFICIAL_SOURCE_URL, applyPixCnpjKeyMask, applyPixCpfKeyMask, applyPixEmailKeyMask, applyPixEvpKeyMask, applyPixPhoneKeyMask, detectPixKeyType, isValidPixKey, validatePixCnpjKey, validatePixCpfKey, validatePixEmailKey, validatePixEvpKey, validatePixKey, validatePixPhoneKey } from './chunk-
|
|
4
|
-
import './chunk-P2KNN6ZR.js';
|
|
5
|
-
import './chunk-63G7QO73.js';
|
|
6
|
-
import './chunk-UCJPSJN5.js';
|
|
2
|
+
export { formatPixKey } from './chunk-JSNXKBZA.js';
|
|
3
|
+
export { PIX_DICT_API_SOURCE_URL, PIX_GOLDEN_CNPJ_ALPHANUMERIC, PIX_GOLDEN_CNPJ_NUMERIC, PIX_GOLDEN_CPF, PIX_GOLDEN_EMAIL, PIX_GOLDEN_EVP, PIX_GOLDEN_PHONE, PIX_OFFICIAL_SOURCE_URL, applyPixCnpjKeyMask, applyPixCpfKeyMask, applyPixEmailKeyMask, applyPixEvpKeyMask, applyPixPhoneKeyMask, detectPixKeyType, isValidPixKey, validatePixCnpjKey, validatePixCpfKey, validatePixEmailKey, validatePixEvpKey, validatePixKey, validatePixPhoneKey } from './chunk-KLONQL76.js';
|
|
7
4
|
import './chunk-CSRBRKXY.js';
|
|
8
5
|
import './chunk-FBARVLLP.js';
|
|
6
|
+
import './chunk-KGCLQ7QX.js';
|
|
7
|
+
import './chunk-L7PF4KD6.js';
|
|
9
8
|
import './chunk-OTZHMJYE.js';
|
|
10
9
|
import './chunk-EB3G4IG6.js';
|
|
10
|
+
import './chunk-UCJPSJN5.js';
|
|
11
11
|
import './chunk-NUQSMT4Y.js';
|
|
12
12
|
//# sourceMappingURL=pix.js.map
|
|
13
13
|
//# sourceMappingURL=pix.js.map
|
package/dist/placa.js
CHANGED
|
@@ -3,8 +3,8 @@ export { formatPlaca } from './chunk-YD5MPZWY.js';
|
|
|
3
3
|
export { PLACA_GOLDEN_CONVERSION_FROM, PLACA_GOLDEN_CONVERSION_TO, PLACA_GOLDEN_LEGACY, PLACA_GOLDEN_MERCOSUL, PLACA_OFFICIAL_SOURCE_URL, convertPlacaToMercosul, detectPlacaFormat, isValidPlaca, isValidPlacaLegacy, isValidPlacaMercosul, validatePlaca } from './chunk-3LMDBXU6.js';
|
|
4
4
|
export { stripPlaca } from './chunk-YYHS5WQN.js';
|
|
5
5
|
import './chunk-4SNBZFS5.js';
|
|
6
|
-
import './chunk-UCJPSJN5.js';
|
|
7
6
|
import './chunk-EB3G4IG6.js';
|
|
7
|
+
import './chunk-UCJPSJN5.js';
|
|
8
8
|
import './chunk-NUQSMT4Y.js';
|
|
9
9
|
//# sourceMappingURL=placa.js.map
|
|
10
10
|
//# sourceMappingURL=placa.js.map
|
package/dist/renavam.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import './chunk-G24G7WR5.js';
|
|
2
|
-
export { formatRenavam } from './chunk-
|
|
3
|
-
export { RENAVAM_BASE_LENGTH, RENAVAM_DV_WEIGHTS, RENAVAM_GOLDEN_DASH_INPUT, RENAVAM_GOLDEN_DV_ZERO, RENAVAM_GOLDEN_LEADING_ZEROS, RENAVAM_GOLDEN_PRIMARY, RENAVAM_GOLDEN_SECONDARY, RENAVAM_LENGTH, RENAVAM_OFFICIAL_SOURCE_URL, RENAVAM_SENATRAN_CONSULTA_URL, isValidRenavam, validateRenavam } from './chunk-
|
|
2
|
+
export { formatRenavam } from './chunk-5EJAENH5.js';
|
|
3
|
+
export { RENAVAM_BASE_LENGTH, RENAVAM_DV_WEIGHTS, RENAVAM_GOLDEN_DASH_INPUT, RENAVAM_GOLDEN_DV_ZERO, RENAVAM_GOLDEN_LEADING_ZEROS, RENAVAM_GOLDEN_PRIMARY, RENAVAM_GOLDEN_SECONDARY, RENAVAM_LENGTH, RENAVAM_OFFICIAL_SOURCE_URL, RENAVAM_SENATRAN_CONSULTA_URL, isValidRenavam, validateRenavam } from './chunk-NT3TNF3R.js';
|
|
4
|
+
import './chunk-OTZHMJYE.js';
|
|
4
5
|
export { stripRenavam } from './chunk-YYHS5WQN.js';
|
|
5
6
|
import './chunk-4SNBZFS5.js';
|
|
6
|
-
import './chunk-UCJPSJN5.js';
|
|
7
|
-
import './chunk-OTZHMJYE.js';
|
|
8
7
|
import './chunk-EB3G4IG6.js';
|
|
8
|
+
import './chunk-UCJPSJN5.js';
|
|
9
9
|
import './chunk-NUQSMT4Y.js';
|
|
10
10
|
//# sourceMappingURL=renavam.js.map
|
|
11
11
|
//# sourceMappingURL=renavam.js.map
|
package/dist/sanitize.js
CHANGED
|
@@ -1,27 +1,29 @@
|
|
|
1
|
-
export { sanitize } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { sanitize } from './chunk-ZTDLGGYE.js';
|
|
2
|
+
import './chunk-GWAYWBHN.js';
|
|
3
3
|
import './chunk-GVK6IMBF.js';
|
|
4
|
-
import './chunk-
|
|
4
|
+
import './chunk-NT3TNF3R.js';
|
|
5
5
|
import './chunk-AO6UTQ4A.js';
|
|
6
6
|
import './chunk-JLCQ7MGC.js';
|
|
7
7
|
import './chunk-3LMDBXU6.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
8
|
+
import './chunk-OOUEURR7.js';
|
|
9
|
+
import './chunk-XHDRWM46.js';
|
|
10
10
|
import './chunk-665E36SC.js';
|
|
11
11
|
import './chunk-CDNOUZEI.js';
|
|
12
|
+
import './chunk-VKG7UEN5.js';
|
|
13
|
+
import './chunk-RRVGW333.js';
|
|
12
14
|
import './chunk-AU6TW3GH.js';
|
|
13
15
|
import './chunk-N6RQICAP.js';
|
|
14
16
|
import './chunk-E2EFGMWA.js';
|
|
15
|
-
import './chunk-
|
|
17
|
+
import './chunk-FBARVLLP.js';
|
|
18
|
+
import './chunk-L7PF4KD6.js';
|
|
19
|
+
import './chunk-OTZHMJYE.js';
|
|
16
20
|
import './chunk-ANWQBKGN.js';
|
|
17
|
-
import './chunk-
|
|
18
|
-
import './chunk-YNVMVDFN.js';
|
|
21
|
+
import './chunk-P6TOL5VY.js';
|
|
19
22
|
import './chunk-YYHS5WQN.js';
|
|
20
23
|
import './chunk-4SNBZFS5.js';
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-FBARVLLP.js';
|
|
23
|
-
import './chunk-OTZHMJYE.js';
|
|
24
|
+
import './chunk-DQUMIETC.js';
|
|
24
25
|
import './chunk-EB3G4IG6.js';
|
|
26
|
+
import './chunk-UCJPSJN5.js';
|
|
25
27
|
import './chunk-NUQSMT4Y.js';
|
|
26
28
|
//# sourceMappingURL=sanitize.js.map
|
|
27
29
|
//# sourceMappingURL=sanitize.js.map
|
package/dist/telefone.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { u as TelefoneValidationResult, F as FormatResult } from './validation-result-BaI2Xder.js';
|
|
2
2
|
export { D as DocumentFormat, T as Telefone, t as TelefoneTipo, V as ValidationErrorCode } from './validation-result-BaI2Xder.js';
|
|
3
|
+
import { b as DatasetChanges, c as DatasetVerification } from './types-CBIZxgfG.js';
|
|
3
4
|
|
|
4
5
|
/** 67 official Anatel national area codes (CN / DDD). */
|
|
5
6
|
declare const ANATEL_DDDS: readonly ["11", "12", "13", "14", "15", "16", "17", "18", "19", "21", "22", "24", "27", "28", "31", "32", "33", "34", "35", "37", "38", "41", "42", "43", "44", "45", "46", "47", "48", "49", "51", "53", "54", "55", "61", "62", "64", "63", "65", "66", "67", "68", "69", "71", "73", "74", "75", "77", "79", "81", "87", "82", "83", "84", "85", "88", "86", "89", "91", "93", "94", "92", "97", "95", "96", "98", "99"];
|
|
@@ -11,6 +12,36 @@ declare const TELEFONE_GOLDEN_FIXO_MASKED = "(11) 3333-3333";
|
|
|
11
12
|
declare const TELEFONE_OFFICIAL_SOURCE_URL = "https://www.gov.br/anatel/pt-br/regulado/numeracao/plano-de-numeracao-brasileiro";
|
|
12
13
|
declare const TELEFONE_ANATEL_DDD_PANEL_URL = "https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais";
|
|
13
14
|
|
|
15
|
+
interface DddInfo {
|
|
16
|
+
ddd: string;
|
|
17
|
+
uf: string;
|
|
18
|
+
regiao: string;
|
|
19
|
+
municipios: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
interface TelefoneDddDataVersion {
|
|
22
|
+
id: 'telefone-ddd';
|
|
23
|
+
nome: string;
|
|
24
|
+
fonte: string;
|
|
25
|
+
endpoints: string[];
|
|
26
|
+
capturadoEm: string;
|
|
27
|
+
atualizadoEm: string;
|
|
28
|
+
contagens: {
|
|
29
|
+
ddds: number;
|
|
30
|
+
};
|
|
31
|
+
alteracoes: DatasetChanges;
|
|
32
|
+
verificacao: DatasetVerification;
|
|
33
|
+
documentacao: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Anatel DDD geographic lookup — offline embedded data.
|
|
38
|
+
* @see https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
declare function getDddInfo(ddd: string): DddInfo | undefined;
|
|
42
|
+
|
|
43
|
+
declare const TELEFONE_DDD_DATA_VERSION: TelefoneDddDataVersion;
|
|
44
|
+
|
|
14
45
|
declare function isValidTelefone(input: string): boolean;
|
|
15
46
|
declare function validateTelefone(input: string): TelefoneValidationResult;
|
|
16
47
|
|
|
@@ -26,4 +57,4 @@ declare function stripTelefone(input: string): string;
|
|
|
26
57
|
|
|
27
58
|
declare function formatTelefone(input: string): FormatResult;
|
|
28
59
|
|
|
29
|
-
export { ANATEL_DDDS, ANATEL_DDD_SET, FormatResult, TELEFONE_ANATEL_DDD_PANEL_URL, TELEFONE_GOLDEN_CELULAR, TELEFONE_GOLDEN_CELULAR_MASKED, TELEFONE_GOLDEN_FIXO, TELEFONE_GOLDEN_FIXO_MASKED, TELEFONE_OFFICIAL_SOURCE_URL, TelefoneValidationResult, extractTelefoneDigits, formatTelefone, isValidTelefone, normalizeTelefoneDigits, stripTelefone, validateTelefone };
|
|
60
|
+
export { ANATEL_DDDS, ANATEL_DDD_SET, type DddInfo, FormatResult, TELEFONE_ANATEL_DDD_PANEL_URL, TELEFONE_DDD_DATA_VERSION, TELEFONE_GOLDEN_CELULAR, TELEFONE_GOLDEN_CELULAR_MASKED, TELEFONE_GOLDEN_FIXO, TELEFONE_GOLDEN_FIXO_MASKED, TELEFONE_OFFICIAL_SOURCE_URL, type TelefoneDddDataVersion, TelefoneValidationResult, extractTelefoneDigits, formatTelefone, getDddInfo, isValidTelefone, normalizeTelefoneDigits, stripTelefone, validateTelefone };
|
package/dist/telefone.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import './chunk-ZH4RJNG7.js';
|
|
2
|
-
export { formatTelefone } from './chunk-
|
|
3
|
-
export { ANATEL_DDDS, ANATEL_DDD_SET, TELEFONE_ANATEL_DDD_PANEL_URL, TELEFONE_GOLDEN_CELULAR, TELEFONE_GOLDEN_CELULAR_MASKED, TELEFONE_GOLDEN_FIXO, TELEFONE_GOLDEN_FIXO_MASKED, TELEFONE_OFFICIAL_SOURCE_URL, extractTelefoneDigits, isValidTelefone, normalizeTelefoneDigits, stripTelefone, validateTelefone } from './chunk-
|
|
2
|
+
export { formatTelefone } from './chunk-MAM4U3UR.js';
|
|
3
|
+
export { ANATEL_DDDS, ANATEL_DDD_SET, TELEFONE_ANATEL_DDD_PANEL_URL, TELEFONE_DDD_DATA_VERSION, TELEFONE_GOLDEN_CELULAR, TELEFONE_GOLDEN_CELULAR_MASKED, TELEFONE_GOLDEN_FIXO, TELEFONE_GOLDEN_FIXO_MASKED, TELEFONE_OFFICIAL_SOURCE_URL, extractTelefoneDigits, getDddInfo, isValidTelefone, normalizeTelefoneDigits, stripTelefone, validateTelefone } from './chunk-OOUEURR7.js';
|
|
4
|
+
import './chunk-RRVGW333.js';
|
|
4
5
|
import './chunk-NUQSMT4Y.js';
|
|
5
6
|
//# sourceMappingURL=telefone.js.map
|
|
6
7
|
//# sourceMappingURL=telefone.js.map
|
package/dist/titulo-eleitor.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import './chunk-7ULDLG4C.js';
|
|
2
|
-
export { formatTituloEleitor } from './chunk-
|
|
3
|
-
export { TITULO_ELEITOR_ALGORITHM_REF_URL, TITULO_ELEITOR_ALGORITHM_WEIGHTS_REF_URL, TITULO_ELEITOR_DV1_WEIGHTS_8, TITULO_ELEITOR_DV1_WEIGHTS_9, TITULO_ELEITOR_DV2_WEIGHTS, TITULO_ELEITOR_ETITULO_URL, TITULO_ELEITOR_EXTERIOR_UF_CODE, TITULO_ELEITOR_GOLDEN_EXTERIOR, TITULO_ELEITOR_GOLDEN_MASKED_INPUT, TITULO_ELEITOR_GOLDEN_PRIMARY, TITULO_ELEITOR_GOLDEN_SP_EXTENDED, TITULO_ELEITOR_GOLDEN_SP_SPECIAL, TITULO_ELEITOR_LENGTH, TITULO_ELEITOR_LENGTH_EXTENDED, TITULO_ELEITOR_NORMATIVE_SECONDARY_URL, TITULO_ELEITOR_NUMERIC_PATTERN_12, TITULO_ELEITOR_NUMERIC_PATTERN_13, TITULO_ELEITOR_OFFICIAL_SOURCE_URL, TITULO_ELEITOR_SEQUENTIAL_LENGTH, TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED, TITULO_ELEITOR_SPECIAL_UF_CODES, TITULO_ELEITOR_TSE_PORTAL_URL, TITULO_ELEITOR_UF_BY_CODE, isValidTituloEleitor, validateTituloEleitor } from './chunk-
|
|
2
|
+
export { formatTituloEleitor } from './chunk-O3T7PUBI.js';
|
|
3
|
+
export { TITULO_ELEITOR_ALGORITHM_REF_URL, TITULO_ELEITOR_ALGORITHM_WEIGHTS_REF_URL, TITULO_ELEITOR_DV1_WEIGHTS_8, TITULO_ELEITOR_DV1_WEIGHTS_9, TITULO_ELEITOR_DV2_WEIGHTS, TITULO_ELEITOR_ETITULO_URL, TITULO_ELEITOR_EXTERIOR_UF_CODE, TITULO_ELEITOR_GOLDEN_EXTERIOR, TITULO_ELEITOR_GOLDEN_MASKED_INPUT, TITULO_ELEITOR_GOLDEN_PRIMARY, TITULO_ELEITOR_GOLDEN_SP_EXTENDED, TITULO_ELEITOR_GOLDEN_SP_SPECIAL, TITULO_ELEITOR_LENGTH, TITULO_ELEITOR_LENGTH_EXTENDED, TITULO_ELEITOR_NORMATIVE_SECONDARY_URL, TITULO_ELEITOR_NUMERIC_PATTERN_12, TITULO_ELEITOR_NUMERIC_PATTERN_13, TITULO_ELEITOR_OFFICIAL_SOURCE_URL, TITULO_ELEITOR_SEQUENTIAL_LENGTH, TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED, TITULO_ELEITOR_SPECIAL_UF_CODES, TITULO_ELEITOR_TSE_PORTAL_URL, TITULO_ELEITOR_UF_BY_CODE, isValidTituloEleitor, validateTituloEleitor } from './chunk-XHDRWM46.js';
|
|
4
|
+
import './chunk-OTZHMJYE.js';
|
|
4
5
|
export { stripTituloEleitor } from './chunk-YYHS5WQN.js';
|
|
5
6
|
import './chunk-4SNBZFS5.js';
|
|
6
|
-
import './chunk-UCJPSJN5.js';
|
|
7
|
-
import './chunk-OTZHMJYE.js';
|
|
8
7
|
import './chunk-EB3G4IG6.js';
|
|
8
|
+
import './chunk-UCJPSJN5.js';
|
|
9
9
|
import './chunk-NUQSMT4Y.js';
|
|
10
10
|
//# sourceMappingURL=titulo-eleitor.js.map
|
|
11
11
|
//# sourceMappingURL=titulo-eleitor.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
interface DatasetChanges {
|
|
2
|
+
adicionados: number;
|
|
3
|
+
removidos: number;
|
|
4
|
+
alterados: number;
|
|
5
|
+
comparadoCom: string | null;
|
|
6
|
+
}
|
|
7
|
+
interface DatasetVerification {
|
|
8
|
+
agendamento: 'semanal';
|
|
9
|
+
workflow: 'data-refresh-bot.yml';
|
|
10
|
+
ultimaExecucao?: string;
|
|
11
|
+
}
|
|
12
|
+
interface DatasetMetadata {
|
|
13
|
+
id: string;
|
|
14
|
+
nome: string;
|
|
15
|
+
fonte: string;
|
|
16
|
+
endpoints: string[];
|
|
17
|
+
capturadoEm: string;
|
|
18
|
+
atualizadoEm: string;
|
|
19
|
+
contagens: Record<string, number>;
|
|
20
|
+
alteracoes: DatasetChanges;
|
|
21
|
+
verificacao: DatasetVerification;
|
|
22
|
+
documentacao: string;
|
|
23
|
+
}
|
|
24
|
+
interface DataCatalogVersion {
|
|
25
|
+
totalDatasets: number;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export type { DataCatalogVersion as D, DatasetMetadata as a, DatasetChanges as b, DatasetVerification as c };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@br-validators/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "The Brazilian document validation library for TypeScript — CPF, CNPJ (alphanumeric), NF-e, PIX, boleto, IE (27 UFs), and 15+ more. Zero deps, fully typed, never throws.",
|
|
5
5
|
"homepage": "https://www.npmjs.com/package/@br-validators/core",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,6 +38,14 @@
|
|
|
38
38
|
"compare",
|
|
39
39
|
"batch",
|
|
40
40
|
"diff",
|
|
41
|
+
"ibge",
|
|
42
|
+
"bancos",
|
|
43
|
+
"feriados",
|
|
44
|
+
"cnaes",
|
|
45
|
+
"cfop",
|
|
46
|
+
"ncm",
|
|
47
|
+
"cbo",
|
|
48
|
+
"data-catalog",
|
|
41
49
|
"typescript"
|
|
42
50
|
],
|
|
43
51
|
"publishConfig": {
|
|
@@ -142,6 +150,38 @@
|
|
|
142
150
|
"./diff": {
|
|
143
151
|
"types": "./dist/diff.d.ts",
|
|
144
152
|
"import": "./dist/diff.js"
|
|
153
|
+
},
|
|
154
|
+
"./ibge": {
|
|
155
|
+
"types": "./dist/ibge.d.ts",
|
|
156
|
+
"import": "./dist/ibge.js"
|
|
157
|
+
},
|
|
158
|
+
"./bancos": {
|
|
159
|
+
"types": "./dist/bancos.d.ts",
|
|
160
|
+
"import": "./dist/bancos.js"
|
|
161
|
+
},
|
|
162
|
+
"./feriados": {
|
|
163
|
+
"types": "./dist/feriados.d.ts",
|
|
164
|
+
"import": "./dist/feriados.js"
|
|
165
|
+
},
|
|
166
|
+
"./cnaes": {
|
|
167
|
+
"types": "./dist/cnaes.d.ts",
|
|
168
|
+
"import": "./dist/cnaes.js"
|
|
169
|
+
},
|
|
170
|
+
"./cfop": {
|
|
171
|
+
"types": "./dist/cfop.d.ts",
|
|
172
|
+
"import": "./dist/cfop.js"
|
|
173
|
+
},
|
|
174
|
+
"./ncm": {
|
|
175
|
+
"types": "./dist/ncm.d.ts",
|
|
176
|
+
"import": "./dist/ncm.js"
|
|
177
|
+
},
|
|
178
|
+
"./cbo": {
|
|
179
|
+
"types": "./dist/cbo.d.ts",
|
|
180
|
+
"import": "./dist/cbo.js"
|
|
181
|
+
},
|
|
182
|
+
"./data-catalog": {
|
|
183
|
+
"types": "./dist/data-catalog.d.ts",
|
|
184
|
+
"import": "./dist/data-catalog.js"
|
|
145
185
|
}
|
|
146
186
|
},
|
|
147
187
|
"files": [
|
package/dist/chunk-DAR6VOMT.js
DELETED
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { brandTelefone } from './chunk-NUQSMT4Y.js';
|
|
2
|
-
|
|
3
|
-
// src/core/telefone/constants.ts
|
|
4
|
-
var TELEFONE_COUNTRY_CODE = "55";
|
|
5
|
-
var ANATEL_DDDS = [
|
|
6
|
-
"11",
|
|
7
|
-
"12",
|
|
8
|
-
"13",
|
|
9
|
-
"14",
|
|
10
|
-
"15",
|
|
11
|
-
"16",
|
|
12
|
-
"17",
|
|
13
|
-
"18",
|
|
14
|
-
"19",
|
|
15
|
-
"21",
|
|
16
|
-
"22",
|
|
17
|
-
"24",
|
|
18
|
-
"27",
|
|
19
|
-
"28",
|
|
20
|
-
"31",
|
|
21
|
-
"32",
|
|
22
|
-
"33",
|
|
23
|
-
"34",
|
|
24
|
-
"35",
|
|
25
|
-
"37",
|
|
26
|
-
"38",
|
|
27
|
-
"41",
|
|
28
|
-
"42",
|
|
29
|
-
"43",
|
|
30
|
-
"44",
|
|
31
|
-
"45",
|
|
32
|
-
"46",
|
|
33
|
-
"47",
|
|
34
|
-
"48",
|
|
35
|
-
"49",
|
|
36
|
-
"51",
|
|
37
|
-
"53",
|
|
38
|
-
"54",
|
|
39
|
-
"55",
|
|
40
|
-
"61",
|
|
41
|
-
"62",
|
|
42
|
-
"64",
|
|
43
|
-
"63",
|
|
44
|
-
"65",
|
|
45
|
-
"66",
|
|
46
|
-
"67",
|
|
47
|
-
"68",
|
|
48
|
-
"69",
|
|
49
|
-
"71",
|
|
50
|
-
"73",
|
|
51
|
-
"74",
|
|
52
|
-
"75",
|
|
53
|
-
"77",
|
|
54
|
-
"79",
|
|
55
|
-
"81",
|
|
56
|
-
"87",
|
|
57
|
-
"82",
|
|
58
|
-
"83",
|
|
59
|
-
"84",
|
|
60
|
-
"85",
|
|
61
|
-
"88",
|
|
62
|
-
"86",
|
|
63
|
-
"89",
|
|
64
|
-
"91",
|
|
65
|
-
"93",
|
|
66
|
-
"94",
|
|
67
|
-
"92",
|
|
68
|
-
"97",
|
|
69
|
-
"95",
|
|
70
|
-
"96",
|
|
71
|
-
"98",
|
|
72
|
-
"99"
|
|
73
|
-
];
|
|
74
|
-
var ANATEL_DDD_SET = new Set(ANATEL_DDDS);
|
|
75
|
-
var TELEFONE_DDD_LENGTH = 2;
|
|
76
|
-
var TELEFONE_CELULAR_MASK_PATTERN = /^(\d{2})(\d{5})(\d{4})$/;
|
|
77
|
-
var TELEFONE_FIXO_MASK_PATTERN = /^(\d{2})(\d{4})(\d{4})$/;
|
|
78
|
-
var TELEFONE_EMERGENCY_CODES = /* @__PURE__ */ new Set(["190", "192", "193", "197", "198", "199"]);
|
|
79
|
-
var TELEFONE_GOLDEN_CELULAR = "11999999999";
|
|
80
|
-
var TELEFONE_GOLDEN_CELULAR_MASKED = "(11) 99999-9999";
|
|
81
|
-
var TELEFONE_GOLDEN_FIXO = "1133333333";
|
|
82
|
-
var TELEFONE_GOLDEN_FIXO_MASKED = "(11) 3333-3333";
|
|
83
|
-
var TELEFONE_OFFICIAL_SOURCE_URL = "https://www.gov.br/anatel/pt-br/regulado/numeracao/plano-de-numeracao-brasileiro";
|
|
84
|
-
var TELEFONE_ANATEL_DDD_PANEL_URL = "https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais";
|
|
85
|
-
|
|
86
|
-
// src/strip/telefone.ts
|
|
87
|
-
function extractTelefoneDigits(input) {
|
|
88
|
-
return input.replace(/\D/g, "");
|
|
89
|
-
}
|
|
90
|
-
function normalizeTelefoneDigits(input) {
|
|
91
|
-
let digits = extractTelefoneDigits(input);
|
|
92
|
-
if (digits.length === 0) {
|
|
93
|
-
return "";
|
|
94
|
-
}
|
|
95
|
-
if (digits.startsWith(TELEFONE_COUNTRY_CODE) && (digits.length === 12 || digits.length === 13)) {
|
|
96
|
-
digits = digits.slice(TELEFONE_COUNTRY_CODE.length);
|
|
97
|
-
}
|
|
98
|
-
if (digits.startsWith("0") && (digits.length === 11 || digits.length === 12)) {
|
|
99
|
-
digits = digits.slice(1);
|
|
100
|
-
}
|
|
101
|
-
return digits;
|
|
102
|
-
}
|
|
103
|
-
function stripTelefone(input) {
|
|
104
|
-
return normalizeTelefoneDigits(input);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// src/core/telefone/index.ts
|
|
108
|
-
var MASK_CHARS_PATTERN = /[\s().+-]/g;
|
|
109
|
-
function failure(code, message) {
|
|
110
|
-
return { ok: false, code, message };
|
|
111
|
-
}
|
|
112
|
-
function hasInvalidCharacters(input) {
|
|
113
|
-
const withoutMask = input.replace(MASK_CHARS_PATTERN, "");
|
|
114
|
-
return /[^0-9]/.test(withoutMask);
|
|
115
|
-
}
|
|
116
|
-
function detectTipo(local) {
|
|
117
|
-
if (local.length === 9 && local[0] === "9") {
|
|
118
|
-
return "celular";
|
|
119
|
-
}
|
|
120
|
-
if (local.length === 8 && /^[2345]/.test(local)) {
|
|
121
|
-
return "fixo";
|
|
122
|
-
}
|
|
123
|
-
return null;
|
|
124
|
-
}
|
|
125
|
-
function rejectLocalPattern(local, nationalLength) {
|
|
126
|
-
if (nationalLength === 11) {
|
|
127
|
-
return failure(
|
|
128
|
-
"KNOWN_INVALID_PATTERN",
|
|
129
|
-
"Mobile numbers must have 9 digits starting with 9 after DDD (Anatel nono d\xEDgito)"
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
if (nationalLength === 10 && /^[6789]/.test(local)) {
|
|
133
|
-
return failure(
|
|
134
|
-
"KNOWN_INVALID_PATTERN",
|
|
135
|
-
"Mobile numbers require 9 digits starting with 9; numbers starting with 6\u20139 without the 9th digit are invalid"
|
|
136
|
-
);
|
|
137
|
-
}
|
|
138
|
-
return failure(
|
|
139
|
-
"KNOWN_INVALID_PATTERN",
|
|
140
|
-
"Landline numbers must have 8 digits starting with 2, 3, 4, or 5 after DDD"
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
|
-
function validateStructure(input, normalized) {
|
|
144
|
-
if (input.trim().length === 0) {
|
|
145
|
-
return failure("EMPTY_INPUT", "Telephone input is empty");
|
|
146
|
-
}
|
|
147
|
-
if (hasInvalidCharacters(input)) {
|
|
148
|
-
return failure("INVALID_CHARACTER", "Telephone contains invalid characters");
|
|
149
|
-
}
|
|
150
|
-
if (normalized.length === 0) {
|
|
151
|
-
return failure("EMPTY_INPUT", "Telephone input is empty");
|
|
152
|
-
}
|
|
153
|
-
if (TELEFONE_EMERGENCY_CODES.has(normalized)) {
|
|
154
|
-
return failure("UNSUPPORTED_FORMAT", "Emergency short codes are not subscriber telephone numbers");
|
|
155
|
-
}
|
|
156
|
-
if (normalized.length !== 10 && normalized.length !== 11) {
|
|
157
|
-
return failure(
|
|
158
|
-
"INVALID_LENGTH",
|
|
159
|
-
"Telephone must have 10 digits (fixo) or 11 digits (celular) after normalization"
|
|
160
|
-
);
|
|
161
|
-
}
|
|
162
|
-
const ddd = normalized.slice(0, TELEFONE_DDD_LENGTH);
|
|
163
|
-
if (!ANATEL_DDD_SET.has(ddd)) {
|
|
164
|
-
return failure("KNOWN_INVALID_PATTERN", `Area code ${ddd} is not a valid Anatel DDD`);
|
|
165
|
-
}
|
|
166
|
-
const local = normalized.slice(TELEFONE_DDD_LENGTH);
|
|
167
|
-
const tipo = detectTipo(local);
|
|
168
|
-
if (!tipo) {
|
|
169
|
-
return rejectLocalPattern(local, normalized.length);
|
|
170
|
-
}
|
|
171
|
-
return { tipo };
|
|
172
|
-
}
|
|
173
|
-
function isValidTelefone(input) {
|
|
174
|
-
return validateTelefone(input).ok;
|
|
175
|
-
}
|
|
176
|
-
function validateTelefone(input) {
|
|
177
|
-
const normalized = normalizeTelefoneDigits(input);
|
|
178
|
-
const structural = validateStructure(input, normalized);
|
|
179
|
-
if ("ok" in structural) {
|
|
180
|
-
return structural;
|
|
181
|
-
}
|
|
182
|
-
return {
|
|
183
|
-
ok: true,
|
|
184
|
-
value: brandTelefone(normalized),
|
|
185
|
-
tipo: structural.tipo,
|
|
186
|
-
format: "telefone"
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
export { ANATEL_DDDS, ANATEL_DDD_SET, TELEFONE_ANATEL_DDD_PANEL_URL, TELEFONE_CELULAR_MASK_PATTERN, TELEFONE_FIXO_MASK_PATTERN, TELEFONE_GOLDEN_CELULAR, TELEFONE_GOLDEN_CELULAR_MASKED, TELEFONE_GOLDEN_FIXO, TELEFONE_GOLDEN_FIXO_MASKED, TELEFONE_OFFICIAL_SOURCE_URL, extractTelefoneDigits, isValidTelefone, normalizeTelefoneDigits, stripTelefone, validateTelefone };
|
|
191
|
-
//# sourceMappingURL=chunk-DAR6VOMT.js.map
|
|
192
|
-
//# sourceMappingURL=chunk-DAR6VOMT.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/telefone/constants.ts","../src/strip/telefone.ts","../src/core/telefone/index.ts"],"names":[],"mappings":";;;AAMO,IAAM,qBAAA,GAAwB,IAAA;AAG9B,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAChD,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EACZ,IAAA;AAAA,EAAM,IAAA;AAAA,EACN,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EACpC,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAC9B,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EACZ,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAClB,IAAA;AAAA,EACA,IAAA;AAAA,EAAM,IAAA;AAAA,EACN,IAAA;AAAA,EACA,IAAA;AAAA,EAAM,IAAA;AAAA,EACN,IAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EACxB,IAAA;AAAA,EACA,IAAA;AAAA,EAAM,IAAA;AAAA,EACN,IAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EAAM,IAAA;AAAA,EACN,IAAA;AAAA,EAAM,IAAA;AAAA,EACN,IAAA;AAAA,EAAM,IAAA;AAAA,EAAM,IAAA;AAAA,EACZ,IAAA;AAAA,EAAM,IAAA;AAAA,EACN,IAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EAAM;AACR;AAEO,IAAM,cAAA,GAAsC,IAAI,GAAA,CAAI,WAAW;AAI/D,IAAM,mBAAA,GAAsB,CAAA;AAE5B,IAAM,6BAAA,GAAgC;AACtC,IAAM,0BAAA,GAA6B;AAGnC,IAAM,wBAAA,mBAA2B,IAAI,GAAA,CAAI,CAAC,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAK,CAAC,CAAA;AAEnF,IAAM,uBAAA,GAA0B;AAChC,IAAM,8BAAA,GAAiC;AACvC,IAAM,oBAAA,GAAuB;AAC7B,IAAM,2BAAA,GAA8B;AAEpC,IAAM,4BAAA,GACX;AAEK,IAAM,6BAAA,GACX;;;ACrDK,SAAS,sBAAsB,KAAA,EAAuB;AAC3D,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAChC;AAMO,SAAS,wBAAwB,KAAA,EAAuB;AAC7D,EAAA,IAAI,MAAA,GAAS,sBAAsB,KAAK,CAAA;AACxC,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,IAAI,MAAA,CAAO,WAAW,qBAAqB,CAAA,KAAM,OAAO,MAAA,KAAW,EAAA,IAAM,MAAA,CAAO,MAAA,KAAW,EAAA,CAAA,EAAK;AAC9F,IAAA,MAAA,GAAS,MAAA,CAAO,KAAA,CAAM,qBAAA,CAAsB,MAAM,CAAA;AAAA,EACpD;AAEA,EAAA,IAAI,MAAA,CAAO,WAAW,GAAG,CAAA,KAAM,OAAO,MAAA,KAAW,EAAA,IAAM,MAAA,CAAO,MAAA,KAAW,EAAA,CAAA,EAAK;AAC5E,IAAA,MAAA,GAAS,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,EACzB;AAEA,EAAA,OAAO,MAAA;AACT;AAGO,SAAS,cAAc,KAAA,EAAuB;AACnD,EAAA,OAAO,wBAAwB,KAAK,CAAA;AACtC;;;ACRA,IAAM,kBAAA,GAAqB,YAAA;AAE3B,SAAS,OAAA,CAAQ,MAA4B,OAAA,EAA+B;AAC1E,EAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,OAAA,EAAQ;AACpC;AAEA,SAAS,qBAAqB,KAAA,EAAwB;AACpD,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,OAAA,CAAQ,kBAAA,EAAoB,EAAE,CAAA;AACxD,EAAA,OAAO,QAAA,CAAS,KAAK,WAAW,CAAA;AAClC;AAEA,SAAS,WAAW,KAAA,EAAoC;AACtD,EAAA,IAAI,MAAM,MAAA,KAAW,CAAA,IAAK,KAAA,CAAM,CAAC,MAAM,GAAA,EAAK;AAC1C,IAAA,OAAO,SAAA;AAAA,EACT;AACA,EAAA,IAAI,MAAM,MAAA,KAAW,CAAA,IAAK,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA,EAAG;AAC/C,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,kBAAA,CAAmB,OAAe,cAAA,EAAsC;AAC/E,EAAA,IAAI,mBAAmB,EAAA,EAAI;AACzB,IAAA,OAAO,OAAA;AAAA,MACL,uBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAEA,EAAA,IAAI,cAAA,KAAmB,EAAA,IAAM,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA,EAAG;AAClD,IAAA,OAAO,OAAA;AAAA,MACL,uBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AAAA,IACL,uBAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,iBAAA,CACP,OACA,UAAA,EACuC;AACvC,EAAA,IAAI,KAAA,CAAM,IAAA,EAAK,CAAE,MAAA,KAAW,CAAA,EAAG;AAC7B,IAAA,OAAO,OAAA,CAAQ,eAAe,0BAA0B,CAAA;AAAA,EAC1D;AAEA,EAAA,IAAI,oBAAA,CAAqB,KAAK,CAAA,EAAG;AAC/B,IAAA,OAAO,OAAA,CAAQ,qBAAqB,uCAAuC,CAAA;AAAA,EAC7E;AAEA,EAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC3B,IAAA,OAAO,OAAA,CAAQ,eAAe,0BAA0B,CAAA;AAAA,EAC1D;AAEA,EAAA,IAAI,wBAAA,CAAyB,GAAA,CAAI,UAAU,CAAA,EAAG;AAC5C,IAAA,OAAO,OAAA,CAAQ,sBAAsB,4DAA4D,CAAA;AAAA,EACnG;AAEA,EAAA,IAAI,UAAA,CAAW,MAAA,KAAW,EAAA,IAAM,UAAA,CAAW,WAAW,EAAA,EAAI;AACxD,IAAA,OAAO,OAAA;AAAA,MACL,gBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,GAAA,GAAM,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,mBAAmB,CAAA;AACnD,EAAA,IAAI,CAAC,cAAA,CAAe,GAAA,CAAI,GAAG,CAAA,EAAG;AAC5B,IAAA,OAAO,OAAA,CAAQ,uBAAA,EAAyB,CAAA,UAAA,EAAa,GAAG,CAAA,0BAAA,CAA4B,CAAA;AAAA,EACtF;AAEA,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,KAAA,CAAM,mBAAmB,CAAA;AAClD,EAAA,MAAM,IAAA,GAAO,WAAW,KAAK,CAAA;AAC7B,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,kBAAA,CAAmB,KAAA,EAAO,UAAA,CAAW,MAAM,CAAA;AAAA,EACpD;AAEA,EAAA,OAAO,EAAE,IAAA,EAAK;AAChB;AAEO,SAAS,gBAAgB,KAAA,EAAwB;AACtD,EAAA,OAAO,gBAAA,CAAiB,KAAK,CAAA,CAAE,EAAA;AACjC;AAEO,SAAS,iBAAiB,KAAA,EAAyC;AACxE,EAAA,MAAM,UAAA,GAAa,wBAAwB,KAAK,CAAA;AAChD,EAAA,MAAM,UAAA,GAAa,iBAAA,CAAkB,KAAA,EAAO,UAAU,CAAA;AACtD,EAAA,IAAI,QAAQ,UAAA,EAAY;AACtB,IAAA,OAAO,UAAA;AAAA,EACT;AAEA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,IAAA;AAAA,IACJ,KAAA,EAAO,cAAc,UAAU,CAAA;AAAA,IAC/B,MAAM,UAAA,CAAW,IAAA;AAAA,IACjB,MAAA,EAAQ;AAAA,GACV;AACF","file":"chunk-DAR6VOMT.js","sourcesContent":["/**\n * Brazilian telephone constants — Anatel national area codes (CN/DDD).\n * @see https://www.gov.br/anatel/pt-br/regulado/numeracao/plano-de-numeracao-brasileiro\n * @see https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais\n * @see https://www.gov.br/anatel/pt-br/regulado/numeracao/nono-digito\n */\nexport const TELEFONE_COUNTRY_CODE = '55';\n\n/** 67 official Anatel national area codes (CN / DDD). */\nexport const ANATEL_DDDS = [\n '11', '12', '13', '14', '15', '16', '17', '18', '19',\n '21', '22', '24',\n '27', '28',\n '31', '32', '33', '34', '35', '37', '38',\n '41', '42', '43', '44', '45', '46',\n '47', '48', '49',\n '51', '53', '54', '55',\n '61',\n '62', '64',\n '63',\n '65', '66',\n '67',\n '68',\n '69',\n '71', '73', '74', '75', '77',\n '79',\n '81', '87',\n '82',\n '83',\n '84',\n '85', '88',\n '86', '89',\n '91', '93', '94',\n '92', '97',\n '95',\n '96',\n '98', '99',\n] as const;\n\nexport const ANATEL_DDD_SET: ReadonlySet<string> = new Set(ANATEL_DDDS);\n\nexport const TELEFONE_CELULAR_LOCAL_LENGTH = 9;\nexport const TELEFONE_FIXO_LOCAL_LENGTH = 8;\nexport const TELEFONE_DDD_LENGTH = 2;\n\nexport const TELEFONE_CELULAR_MASK_PATTERN = /^(\\d{2})(\\d{5})(\\d{4})$/;\nexport const TELEFONE_FIXO_MASK_PATTERN = /^(\\d{2})(\\d{4})(\\d{4})$/;\n\n/** Emergency / public utility short codes — out of subscriber scope (BR-TEL-007). */\nexport const TELEFONE_EMERGENCY_CODES = new Set(['190', '192', '193', '197', '198', '199']);\n\nexport const TELEFONE_GOLDEN_CELULAR = '11999999999';\nexport const TELEFONE_GOLDEN_CELULAR_MASKED = '(11) 99999-9999';\nexport const TELEFONE_GOLDEN_FIXO = '1133333333';\nexport const TELEFONE_GOLDEN_FIXO_MASKED = '(11) 3333-3333';\n\nexport const TELEFONE_OFFICIAL_SOURCE_URL =\n 'https://www.gov.br/anatel/pt-br/regulado/numeracao/plano-de-numeracao-brasileiro';\n\nexport const TELEFONE_ANATEL_DDD_PANEL_URL =\n 'https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais';\n","/**\n * Strip and normalize Brazilian telephone numbers (BR-TEL-001).\n * @see https://www.gov.br/anatel/pt-br/regulado/numeracao/plano-de-numeracao-brasileiro\n */\nimport { TELEFONE_COUNTRY_CODE } from '../core/telefone/constants.js';\n\n/** Digits only from input (no country/trunk normalization). */\nexport function extractTelefoneDigits(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\n/**\n * National canonical form: DDD + local digits (10 or 11 digits).\n * Strips +55 country code and leading domestic trunk `0` when present.\n */\nexport function normalizeTelefoneDigits(input: string): string {\n let digits = extractTelefoneDigits(input);\n if (digits.length === 0) {\n return '';\n }\n\n if (digits.startsWith(TELEFONE_COUNTRY_CODE) && (digits.length === 12 || digits.length === 13)) {\n digits = digits.slice(TELEFONE_COUNTRY_CODE.length);\n }\n\n if (digits.startsWith('0') && (digits.length === 11 || digits.length === 12)) {\n digits = digits.slice(1);\n }\n\n return digits;\n}\n\n/** @see normalizeTelefoneDigits */\nexport function stripTelefone(input: string): string {\n return normalizeTelefoneDigits(input);\n}\n","/**\n * Brazilian telephone validation — Anatel DDD + fixo/celular structure.\n * @see https://www.gov.br/anatel/pt-br/regulado/numeracao/plano-de-numeracao-brasileiro\n * @see https://www.gov.br/anatel/pt-br/regulado/numeracao/nono-digito\n */\nimport { normalizeTelefoneDigits } from '../../strip/telefone.js';\nimport type { TelefoneTipo, TelefoneValidationResult } from '../../types/validation-result.js';\nimport { brandTelefone } from '../../types/validation-result.js';\nimport {\n ANATEL_DDD_SET,\n TELEFONE_DDD_LENGTH,\n TELEFONE_EMERGENCY_CODES,\n} from './constants.js';\n\nexport {\n ANATEL_DDDS,\n ANATEL_DDD_SET,\n TELEFONE_ANATEL_DDD_PANEL_URL,\n TELEFONE_GOLDEN_CELULAR,\n TELEFONE_GOLDEN_CELULAR_MASKED,\n TELEFONE_GOLDEN_FIXO,\n TELEFONE_GOLDEN_FIXO_MASKED,\n TELEFONE_OFFICIAL_SOURCE_URL,\n} from './constants.js';\n\ntype FailedResult = Extract<TelefoneValidationResult, { ok: false }>;\n\nconst MASK_CHARS_PATTERN = /[\\s().+-]/g;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message };\n}\n\nfunction hasInvalidCharacters(input: string): boolean {\n const withoutMask = input.replace(MASK_CHARS_PATTERN, '');\n return /[^0-9]/.test(withoutMask);\n}\n\nfunction detectTipo(local: string): TelefoneTipo | null {\n if (local.length === 9 && local[0] === '9') {\n return 'celular';\n }\n if (local.length === 8 && /^[2345]/.test(local)) {\n return 'fixo';\n }\n return null;\n}\n\nfunction rejectLocalPattern(local: string, nationalLength: number): FailedResult {\n if (nationalLength === 11) {\n return failure(\n 'KNOWN_INVALID_PATTERN',\n 'Mobile numbers must have 9 digits starting with 9 after DDD (Anatel nono dígito)',\n );\n }\n\n if (nationalLength === 10 && /^[6789]/.test(local)) {\n return failure(\n 'KNOWN_INVALID_PATTERN',\n 'Mobile numbers require 9 digits starting with 9; numbers starting with 6–9 without the 9th digit are invalid',\n );\n }\n\n return failure(\n 'KNOWN_INVALID_PATTERN',\n 'Landline numbers must have 8 digits starting with 2, 3, 4, or 5 after DDD',\n );\n}\n\nfunction validateStructure(\n input: string,\n normalized: string,\n): FailedResult | { tipo: TelefoneTipo } {\n if (input.trim().length === 0) {\n return failure('EMPTY_INPUT', 'Telephone input is empty');\n }\n\n if (hasInvalidCharacters(input)) {\n return failure('INVALID_CHARACTER', 'Telephone contains invalid characters');\n }\n\n if (normalized.length === 0) {\n return failure('EMPTY_INPUT', 'Telephone input is empty');\n }\n\n if (TELEFONE_EMERGENCY_CODES.has(normalized)) {\n return failure('UNSUPPORTED_FORMAT', 'Emergency short codes are not subscriber telephone numbers');\n }\n\n if (normalized.length !== 10 && normalized.length !== 11) {\n return failure(\n 'INVALID_LENGTH',\n 'Telephone must have 10 digits (fixo) or 11 digits (celular) after normalization',\n );\n }\n\n const ddd = normalized.slice(0, TELEFONE_DDD_LENGTH);\n if (!ANATEL_DDD_SET.has(ddd)) {\n return failure('KNOWN_INVALID_PATTERN', `Area code ${ddd} is not a valid Anatel DDD`);\n }\n\n const local = normalized.slice(TELEFONE_DDD_LENGTH);\n const tipo = detectTipo(local);\n if (!tipo) {\n return rejectLocalPattern(local, normalized.length);\n }\n\n return { tipo };\n}\n\nexport function isValidTelefone(input: string): boolean {\n return validateTelefone(input).ok;\n}\n\nexport function validateTelefone(input: string): TelefoneValidationResult {\n const normalized = normalizeTelefoneDigits(input);\n const structural = validateStructure(input, normalized);\n if ('ok' in structural) {\n return structural;\n }\n\n return {\n ok: true,\n value: brandTelefone(normalized),\n tipo: structural.tipo,\n format: 'telefone',\n };\n}\n"]}
|
package/dist/chunk-TE6NSONR.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { stripCep } from './chunk-YYHS5WQN.js';
|
|
2
|
-
import { brandCep } from './chunk-NUQSMT4Y.js';
|
|
3
|
-
|
|
4
|
-
// src/core/cep/constants.ts
|
|
5
|
-
var CEP_LENGTH = 8;
|
|
6
|
-
var CEP_MASK_PATTERN = /^(\d{5})(\d{3})$/;
|
|
7
|
-
var CEP_GOLDEN_PRIMARY = "01310100";
|
|
8
|
-
var CEP_GOLDEN_SECONDARY = "20040020";
|
|
9
|
-
var CEP_GOLDEN_PRIMARY_MASKED = "01310-100";
|
|
10
|
-
var CEP_OFFICIAL_SOURCE_URL = "https://www.correios.com.br/atendimento/developers/manuais/manual-api-busca-cep";
|
|
11
|
-
|
|
12
|
-
// src/core/cep/index.ts
|
|
13
|
-
function failure(code, message) {
|
|
14
|
-
return { ok: false, code, message };
|
|
15
|
-
}
|
|
16
|
-
function validateStructure(input, stripped) {
|
|
17
|
-
if (stripped.length === 0) {
|
|
18
|
-
return failure("EMPTY_INPUT", "CEP input is empty");
|
|
19
|
-
}
|
|
20
|
-
const withoutMask = input.replace(/[-\s]/g, "");
|
|
21
|
-
if (/[^0-9]/.test(withoutMask)) {
|
|
22
|
-
return failure("INVALID_CHARACTER", "CEP contains invalid characters");
|
|
23
|
-
}
|
|
24
|
-
if (stripped.length !== CEP_LENGTH) {
|
|
25
|
-
return failure("INVALID_LENGTH", `CEP must have ${CEP_LENGTH} digits after normalization`);
|
|
26
|
-
}
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
function isValidCep(input) {
|
|
30
|
-
return validateCep(input).ok;
|
|
31
|
-
}
|
|
32
|
-
function validateCep(input) {
|
|
33
|
-
const stripped = stripCep(input);
|
|
34
|
-
const structural = validateStructure(input, stripped);
|
|
35
|
-
if (structural) {
|
|
36
|
-
return structural;
|
|
37
|
-
}
|
|
38
|
-
return { ok: true, value: brandCep(stripped), format: "numeric" };
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export { CEP_GOLDEN_PRIMARY, CEP_GOLDEN_PRIMARY_MASKED, CEP_GOLDEN_SECONDARY, CEP_MASK_PATTERN, CEP_OFFICIAL_SOURCE_URL, isValidCep, validateCep };
|
|
42
|
-
//# sourceMappingURL=chunk-TE6NSONR.js.map
|
|
43
|
-
//# sourceMappingURL=chunk-TE6NSONR.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/cep/constants.ts","../src/core/cep/index.ts"],"names":[],"mappings":";;;;AAKO,IAAM,UAAA,GAAa,CAAA;AACnB,IAAM,gBAAA,GAAmB;AAGzB,IAAM,kBAAA,GAAqB;AAC3B,IAAM,oBAAA,GAAuB;AAC7B,IAAM,yBAAA,GAA4B;AAClC,IAAM,uBAAA,GACX;;;ACMF,SAAS,OAAA,CAAQ,MAA4B,OAAA,EAA+B;AAC1E,EAAA,OAAO,EAAE,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,OAAA,EAAQ;AACpC;AAEA,SAAS,iBAAA,CAAkB,OAAe,QAAA,EAAuC;AAC/E,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,OAAO,OAAA,CAAQ,eAAe,oBAAoB,CAAA;AAAA,EACpD;AAEA,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAC9C,EAAA,IAAI,QAAA,CAAS,IAAA,CAAK,WAAW,CAAA,EAAG;AAC9B,IAAA,OAAO,OAAA,CAAQ,qBAAqB,iCAAiC,CAAA;AAAA,EACvE;AAEA,EAAA,IAAI,QAAA,CAAS,WAAW,UAAA,EAAY;AAClC,IAAA,OAAO,OAAA,CAAQ,gBAAA,EAAkB,CAAA,cAAA,EAAiB,UAAU,CAAA,2BAAA,CAA6B,CAAA;AAAA,EAC3F;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,WAAW,KAAA,EAAwB;AACjD,EAAA,OAAO,WAAA,CAAY,KAAK,CAAA,CAAE,EAAA;AAC5B;AAEO,SAAS,YAAY,KAAA,EAAiC;AAC3D,EAAA,MAAM,QAAA,GAAW,SAAS,KAAK,CAAA;AAC/B,EAAA,MAAM,UAAA,GAAa,iBAAA,CAAkB,KAAA,EAAO,QAAQ,CAAA;AACpD,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,OAAO,UAAA;AAAA,EACT;AAEA,EAAA,OAAO,EAAE,IAAI,IAAA,EAAM,KAAA,EAAO,SAAS,QAAQ,CAAA,EAAG,QAAQ,SAAA,EAAU;AAClE","file":"chunk-TE6NSONR.js","sourcesContent":["/**\n * CEP constants — 8 digits, no check digit (Correios).\n * @see https://www.correios.com.br/atendimento/developers/manuais/manual-api-busca-cep\n * @see docs/VALIDATION-RULES.md BR-CEP-001 — golden vector 01310100\n */\nexport const CEP_LENGTH = 8;\nexport const CEP_MASK_PATTERN = /^(\\d{5})(\\d{3})$/;\nexport const CEP_NUMERIC_PATTERN = /^\\d{8}$/;\n\nexport const CEP_GOLDEN_PRIMARY = '01310100';\nexport const CEP_GOLDEN_SECONDARY = '20040020';\nexport const CEP_GOLDEN_PRIMARY_MASKED = '01310-100';\nexport const CEP_OFFICIAL_SOURCE_URL =\n 'https://www.correios.com.br/atendimento/developers/manuais/manual-api-busca-cep';\n","/**\n * CEP validation — structural only, no check digit (Correios).\n * @see https://www.correios.com.br/atendimento/developers/manuais/manual-api-busca-cep\n * @see docs/VALIDATION-RULES.md BR-CEP-001 — golden vector 01310100\n */\nimport { stripCep } from '../../strip/index.js';\nimport type { ValidationResult } from '../../types/validation-result.js';\nimport { brandCep } from '../../types/validation-result.js';\nimport { CEP_LENGTH } from './constants.js';\n\nexport {\n CEP_GOLDEN_PRIMARY,\n CEP_GOLDEN_PRIMARY_MASKED,\n CEP_GOLDEN_SECONDARY,\n CEP_OFFICIAL_SOURCE_URL,\n} from './constants.js';\n\ntype FailedResult = Extract<ValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message };\n}\n\nfunction validateStructure(input: string, stripped: string): FailedResult | null {\n if (stripped.length === 0) {\n return failure('EMPTY_INPUT', 'CEP input is empty');\n }\n\n const withoutMask = input.replace(/[-\\s]/g, '');\n if (/[^0-9]/.test(withoutMask)) {\n return failure('INVALID_CHARACTER', 'CEP contains invalid characters');\n }\n\n if (stripped.length !== CEP_LENGTH) {\n return failure('INVALID_LENGTH', `CEP must have ${CEP_LENGTH} digits after normalization`);\n }\n\n return null;\n}\n\nexport function isValidCep(input: string): boolean {\n return validateCep(input).ok;\n}\n\nexport function validateCep(input: string): ValidationResult {\n const stripped = stripCep(input);\n const structural = validateStructure(input, stripped);\n if (structural) {\n return structural;\n }\n\n return { ok: true, value: brandCep(stripped), format: 'numeric' };\n}\n"]}
|