@br-validators/core 0.10.0-alpha.0 → 0.12.0-alpha.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 +6 -3
- package/dist/boleto.d.ts +2 -2
- package/dist/boleto.js +3 -2
- package/dist/brcode.d.ts +79 -0
- package/dist/brcode.js +13 -0
- package/dist/brcode.js.map +1 -0
- 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-RMKTJQBB.js → chunk-2JJS46FM.js} +5 -23
- package/dist/chunk-2JJS46FM.js.map +1 -0
- package/dist/{chunk-Z4F75QEC.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-AKJHIJ5E.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-5UL3M7IU.js +192 -0
- 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-54DTXC6V.js → chunk-EPKHEW5V.js} +4 -13
- package/dist/chunk-EPKHEW5V.js.map +1 -0
- package/dist/{chunk-PBNVKDCF.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-GRDUTHNX.js +28 -0
- package/dist/chunk-GRDUTHNX.js.map +1 -0
- 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-OWJ5HN4T.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-7FOWIH6F.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-SE33CFGM.js → chunk-MK7OJUF5.js} +8 -29
- 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-MSLJF2FM.js +56 -0
- package/dist/chunk-MSLJF2FM.js.map +1 -0
- package/dist/{chunk-RZ2JG5PP.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-WCQUQ2WX.js +241 -0
- package/dist/chunk-WCQUQ2WX.js.map +1 -0
- package/dist/chunk-WLE2ENQA.js +86 -0
- package/dist/chunk-WLE2ENQA.js.map +1 -0
- package/dist/{chunk-YY4M2YS6.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-M66MGLHE.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 +14 -4
- package/dist/index.js +60 -22
- 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-DP6jnwpN.d.ts → pix-ddldLlb7.d.ts} +1 -1
- package/dist/pix.d.ts +2 -2
- package/dist/pix.js +8 -5
- 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 +29 -0
- package/dist/telefone.js +6 -0
- package/dist/telefone.js.map +1 -0
- 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-BhQE-1_O.d.ts +196 -0
- package/package.json +46 -5
- package/dist/chunk-54DTXC6V.js.map +0 -1
- package/dist/chunk-7FOWIH6F.js.map +0 -1
- package/dist/chunk-AKJHIJ5E.js.map +0 -1
- package/dist/chunk-DKRM66US.js +0 -35
- package/dist/chunk-DKRM66US.js.map +0 -1
- package/dist/chunk-M66MGLHE.js.map +0 -1
- package/dist/chunk-OWJ5HN4T.js.map +0 -1
- package/dist/chunk-PBNVKDCF.js.map +0 -1
- package/dist/chunk-RMKTJQBB.js.map +0 -1
- package/dist/chunk-RZ2JG5PP.js.map +0 -1
- package/dist/chunk-SE33CFGM.js.map +0 -1
- package/dist/chunk-W6UXVWSR.js +0 -13
- package/dist/chunk-W6UXVWSR.js.map +0 -1
- package/dist/chunk-YY4M2YS6.js.map +0 -1
- package/dist/chunk-Z4F75QEC.js.map +0 -1
- package/dist/validation-result-BK4qJuei.d.ts +0 -101
package/dist/pis-pasep.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import './chunk-P55H5YRX.js';
|
|
2
|
+
export { formatPisPasep } from './chunk-IQGRFAQV.js';
|
|
3
|
+
export { PIS_PASEP_GOLDEN_PRIMARY, PIS_PASEP_GOLDEN_PRIMARY_MASKED, PIS_PASEP_GOLDEN_SECONDARY, PIS_PASEP_OFFICIAL_SOURCE_URL, isValidPisPasep, stripPisPasep, validatePisPasep } from './chunk-KH7DWOUA.js';
|
|
4
|
+
import './chunk-OTZHMJYE.js';
|
|
5
|
+
import './chunk-MSLJF2FM.js';
|
|
4
6
|
//# sourceMappingURL=pis-pasep.js.map
|
|
5
7
|
//# sourceMappingURL=pis-pasep.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { q as PixKeyType, r as PixValidationResult, F as FormatResult } from './validation-result-BhQE-1_O.js';
|
|
2
2
|
|
|
3
3
|
declare const PIX_GOLDEN_CPF = "12345678909";
|
|
4
4
|
declare const PIX_GOLDEN_CNPJ_NUMERIC = "11222333000181";
|
package/dist/pix.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { D as DetectedPixKeyType, P as PIX_DICT_API_SOURCE_URL, a as PIX_GOLDEN_CNPJ_ALPHANUMERIC, b as PIX_GOLDEN_CNPJ_NUMERIC, c as PIX_GOLDEN_CPF, d as PIX_GOLDEN_EMAIL, e as PIX_GOLDEN_EVP, f as PIX_GOLDEN_PHONE, g as PIX_OFFICIAL_SOURCE_URL, V as ValidatePixKeyOptions, h as detectPixKeyType, i as formatPixKey, j as isValidPixKey, v as validatePixCnpjKey, k as validatePixCpfKey, l as validatePixEmailKey, m as validatePixEvpKey, n as validatePixKey, o as validatePixPhoneKey } from './pix-
|
|
2
|
-
export { D as DocumentFormat,
|
|
1
|
+
export { D as DetectedPixKeyType, P as PIX_DICT_API_SOURCE_URL, a as PIX_GOLDEN_CNPJ_ALPHANUMERIC, b as PIX_GOLDEN_CNPJ_NUMERIC, c as PIX_GOLDEN_CPF, d as PIX_GOLDEN_EMAIL, e as PIX_GOLDEN_EVP, f as PIX_GOLDEN_PHONE, g as PIX_OFFICIAL_SOURCE_URL, V as ValidatePixKeyOptions, h as detectPixKeyType, i as formatPixKey, j as isValidPixKey, v as validatePixCnpjKey, k as validatePixCpfKey, l as validatePixEmailKey, m as validatePixEvpKey, n as validatePixKey, o as validatePixPhoneKey } from './pix-ddldLlb7.js';
|
|
2
|
+
export { D as DocumentFormat, p as PixKey, q as PixKeyType, r as PixValidationResult, V as ValidationErrorCode } from './validation-result-BhQE-1_O.js';
|
|
3
3
|
|
|
4
4
|
declare function applyPixCpfKeyMask(canonical: string): string;
|
|
5
5
|
declare function applyPixCnpjKeyMask(canonical: string): string;
|
package/dist/pix.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
export {
|
|
2
|
-
|
|
1
|
+
export { formatPixKey } from './chunk-GRDUTHNX.js';
|
|
2
|
+
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-MK7OJUF5.js';
|
|
3
|
+
import './chunk-XUO7FV6Z.js';
|
|
4
|
+
import './chunk-YXELVV37.js';
|
|
3
5
|
import './chunk-EB3G4IG6.js';
|
|
4
|
-
import './chunk-
|
|
6
|
+
import './chunk-KQDLIGSG.js';
|
|
7
|
+
import './chunk-F6PTZY4O.js';
|
|
5
8
|
import './chunk-UCJPSJN5.js';
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
9
|
+
import './chunk-OTZHMJYE.js';
|
|
10
|
+
import './chunk-MSLJF2FM.js';
|
|
8
11
|
//# sourceMappingURL=pix.js.map
|
|
9
12
|
//# sourceMappingURL=pix.js.map
|
package/dist/placa.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { F as FormatResult,
|
|
2
|
-
export { D as DocumentFormat, V as ValidationErrorCode } from './validation-result-
|
|
1
|
+
import { F as FormatResult, x as ValidationResult, s as Placa } from './validation-result-BhQE-1_O.js';
|
|
2
|
+
export { D as DocumentFormat, V as ValidationErrorCode } from './validation-result-BhQE-1_O.js';
|
|
3
3
|
|
|
4
4
|
declare const PLACA_GOLDEN_MERCOSUL = "ABC1D23";
|
|
5
5
|
declare const PLACA_GOLDEN_LEGACY = "ABC1234";
|
package/dist/placa.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
export {
|
|
1
|
+
import './chunk-JQABTHUJ.js';
|
|
2
|
+
export { formatPlaca } from './chunk-G32U6YQ5.js';
|
|
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-WPL47PWJ.js';
|
|
4
|
+
export { stripPlaca } from './chunk-YYHS5WQN.js';
|
|
5
|
+
import './chunk-4SNBZFS5.js';
|
|
3
6
|
import './chunk-EB3G4IG6.js';
|
|
4
7
|
import './chunk-UCJPSJN5.js';
|
|
5
|
-
import './chunk-
|
|
8
|
+
import './chunk-MSLJF2FM.js';
|
|
6
9
|
//# sourceMappingURL=placa.js.map
|
|
7
10
|
//# sourceMappingURL=placa.js.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { x as ValidationResult, R as Renavam, F as FormatResult } from './validation-result-BhQE-1_O.js';
|
|
2
|
+
export { D as DocumentFormat, V as ValidationErrorCode } from './validation-result-BhQE-1_O.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* RENAVAM constants — modulo 11, peso 9 (DENATRAN / SENATRAN).
|
|
6
|
+
* @see https://www.gov.br/transportes/pt-br/assuntos/transito/arquivos-senatran/portarias/2013/portaria0272013.pdf
|
|
7
|
+
* @see https://www.gov.br/pt-br/servicos/consultar-dados-de-veiculo-na-base-renavam
|
|
8
|
+
* @see https://siga0984.wordpress.com/2019/05/01/algoritmos-validacao-de-renavam/ — algorithm cross-check (AdvPL)
|
|
9
|
+
* @see https://www.geravalida.com.br/gerador-de-renavam — implementation cross-check
|
|
10
|
+
* @see https://geradorfacil.com/geradores/renavam — implementation cross-check
|
|
11
|
+
*/
|
|
12
|
+
declare const RENAVAM_DV_WEIGHTS: readonly [3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
|
|
13
|
+
declare const RENAVAM_LENGTH = 11;
|
|
14
|
+
declare const RENAVAM_BASE_LENGTH = 10;
|
|
15
|
+
/** Golden primary — DV walkthrough: base `6397779110` → DV `4`. */
|
|
16
|
+
declare const RENAVAM_GOLDEN_PRIMARY = "63977791104";
|
|
17
|
+
declare const RENAVAM_GOLDEN_SECONDARY = "72176426415";
|
|
18
|
+
declare const RENAVAM_GOLDEN_LEADING_ZEROS = "00207104255";
|
|
19
|
+
declare const RENAVAM_GOLDEN_DV_ZERO = "12345678900";
|
|
20
|
+
/** Optional dash before check digit — accepted on input via strip, never emitted by format. */
|
|
21
|
+
declare const RENAVAM_GOLDEN_DASH_INPUT = "7217642641-5";
|
|
22
|
+
declare const RENAVAM_OFFICIAL_SOURCE_URL = "https://www.gov.br/transportes/pt-br/assuntos/transito/arquivos-senatran/portarias/2013/portaria0272013.pdf";
|
|
23
|
+
/** SENATRAN online vehicle lookup — requires RENAVAM + plate + owner CPF/CNPJ. */
|
|
24
|
+
declare const RENAVAM_SENATRAN_CONSULTA_URL = "https://www.gov.br/pt-br/servicos/consultar-dados-de-veiculo-na-base-renavam";
|
|
25
|
+
|
|
26
|
+
declare function isValidRenavam(input: string): boolean;
|
|
27
|
+
declare function validateRenavam(input: string): ValidationResult<Renavam>;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Strip RENAVAM — digits only (BR-RENAVAM-002).
|
|
31
|
+
* @see https://www.gov.br/transportes/pt-br/assuntos/transito/arquivos-senatran/portarias/2013/portaria0272013.pdf
|
|
32
|
+
*/
|
|
33
|
+
declare function stripRenavam(input: string): string;
|
|
34
|
+
|
|
35
|
+
declare function formatRenavam(input: string): FormatResult;
|
|
36
|
+
|
|
37
|
+
export { FormatResult, 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, Renavam, ValidationResult, formatRenavam, isValidRenavam, stripRenavam, validateRenavam };
|
package/dist/renavam.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import './chunk-G24G7WR5.js';
|
|
2
|
+
export { formatRenavam } from './chunk-CDGRHI7W.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-WLE2ENQA.js';
|
|
4
|
+
export { stripRenavam } from './chunk-YYHS5WQN.js';
|
|
5
|
+
import './chunk-4SNBZFS5.js';
|
|
6
|
+
import './chunk-EB3G4IG6.js';
|
|
7
|
+
import './chunk-UCJPSJN5.js';
|
|
8
|
+
import './chunk-OTZHMJYE.js';
|
|
9
|
+
import './chunk-MSLJF2FM.js';
|
|
10
|
+
//# sourceMappingURL=renavam.js.map
|
|
11
|
+
//# sourceMappingURL=renavam.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"renavam.js"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { S as SanitizableDocumentType, a as SanitizeOptions, b as SanitizeResult, s as sanitize } from './index-CZLo9YOT.js';
|
|
2
|
+
import './validation-result-BhQE-1_O.js';
|
|
3
|
+
|
|
4
|
+
type FixResult = {
|
|
5
|
+
value: string;
|
|
6
|
+
fixes: string[];
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export type { FixResult };
|
package/dist/sanitize.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { sanitize } from './chunk-7ZL7PZII.js';
|
|
2
|
+
import './chunk-WLE2ENQA.js';
|
|
3
|
+
import './chunk-GVK6IMBF.js';
|
|
4
|
+
import './chunk-MLPXW7N2.js';
|
|
5
|
+
import './chunk-5UL3M7IU.js';
|
|
6
|
+
import './chunk-3QP6R46N.js';
|
|
7
|
+
import './chunk-Y6IW2LMW.js';
|
|
8
|
+
import './chunk-D36RM7OD.js';
|
|
9
|
+
import './chunk-KH7DWOUA.js';
|
|
10
|
+
import './chunk-WPL47PWJ.js';
|
|
11
|
+
import './chunk-4W4OKLSZ.js';
|
|
12
|
+
import './chunk-EPKHEW5V.js';
|
|
13
|
+
import './chunk-2JJS46FM.js';
|
|
14
|
+
import './chunk-US4OLTJ2.js';
|
|
15
|
+
import './chunk-YYHS5WQN.js';
|
|
16
|
+
import './chunk-4SNBZFS5.js';
|
|
17
|
+
import './chunk-YXELVV37.js';
|
|
18
|
+
import './chunk-EB3G4IG6.js';
|
|
19
|
+
import './chunk-F6PTZY4O.js';
|
|
20
|
+
import './chunk-UCJPSJN5.js';
|
|
21
|
+
import './chunk-OTZHMJYE.js';
|
|
22
|
+
import './chunk-MSLJF2FM.js';
|
|
23
|
+
//# sourceMappingURL=sanitize.js.map
|
|
24
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"sanitize.js"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { u as TelefoneValidationResult, F as FormatResult } from './validation-result-BhQE-1_O.js';
|
|
2
|
+
export { D as DocumentFormat, T as Telefone, t as TelefoneTipo, V as ValidationErrorCode } from './validation-result-BhQE-1_O.js';
|
|
3
|
+
|
|
4
|
+
/** 67 official Anatel national area codes (CN / DDD). */
|
|
5
|
+
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"];
|
|
6
|
+
declare const ANATEL_DDD_SET: ReadonlySet<string>;
|
|
7
|
+
declare const TELEFONE_GOLDEN_CELULAR = "11999999999";
|
|
8
|
+
declare const TELEFONE_GOLDEN_CELULAR_MASKED = "(11) 99999-9999";
|
|
9
|
+
declare const TELEFONE_GOLDEN_FIXO = "1133333333";
|
|
10
|
+
declare const TELEFONE_GOLDEN_FIXO_MASKED = "(11) 3333-3333";
|
|
11
|
+
declare const TELEFONE_OFFICIAL_SOURCE_URL = "https://www.gov.br/anatel/pt-br/regulado/numeracao/plano-de-numeracao-brasileiro";
|
|
12
|
+
declare const TELEFONE_ANATEL_DDD_PANEL_URL = "https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais";
|
|
13
|
+
|
|
14
|
+
declare function isValidTelefone(input: string): boolean;
|
|
15
|
+
declare function validateTelefone(input: string): TelefoneValidationResult;
|
|
16
|
+
|
|
17
|
+
/** Digits only from input (no country/trunk normalization). */
|
|
18
|
+
declare function extractTelefoneDigits(input: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* National canonical form: DDD + local digits (10 or 11 digits).
|
|
21
|
+
* Strips +55 country code and leading domestic trunk `0` when present.
|
|
22
|
+
*/
|
|
23
|
+
declare function normalizeTelefoneDigits(input: string): string;
|
|
24
|
+
/** @see normalizeTelefoneDigits */
|
|
25
|
+
declare function stripTelefone(input: string): string;
|
|
26
|
+
|
|
27
|
+
declare function formatTelefone(input: string): FormatResult;
|
|
28
|
+
|
|
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 };
|
package/dist/telefone.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import './chunk-ZH4RJNG7.js';
|
|
2
|
+
export { formatTelefone } from './chunk-G2Y63PIF.js';
|
|
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-5UL3M7IU.js';
|
|
4
|
+
import './chunk-MSLJF2FM.js';
|
|
5
|
+
//# sourceMappingURL=telefone.js.map
|
|
6
|
+
//# sourceMappingURL=telefone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"telefone.js"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { U as UfCode, w as TituloEleitorValidationResult, F as FormatResult } from './validation-result-BhQE-1_O.js';
|
|
2
|
+
export { D as DocumentFormat, v as TituloEleitor, V as ValidationErrorCode, x as ValidationResult } from './validation-result-BhQE-1_O.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Título de Eleitor constants — modulo 11 (TSE Res. 20.132/1998 + algorithm cross-checks).
|
|
6
|
+
* @see https://www.tse.jus.br/legislacao/compilada/res/1998/resolucao-no-20-132-de-19-de-marco-de-1998 — Art. 10 (structure, mod 11)
|
|
7
|
+
* @see https://pt.wikipedia.org/wiki/T%C3%ADtulo_eleitoral#C%C3%A1lculo_do_d%C3%ADgito_verificador — weights + SP/MG rule
|
|
8
|
+
* @see http://ghiorzi.org/DVnew.htm#e — algorithm cross-check
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
declare const TITULO_ELEITOR_DV1_WEIGHTS_8: readonly [2, 3, 4, 5, 6, 7, 8, 9];
|
|
12
|
+
declare const TITULO_ELEITOR_DV1_WEIGHTS_9: readonly [9, 2, 3, 4, 5, 6, 7, 8, 9];
|
|
13
|
+
declare const TITULO_ELEITOR_DV2_WEIGHTS: readonly [7, 8, 9];
|
|
14
|
+
declare const TITULO_ELEITOR_SEQUENTIAL_LENGTH = 8;
|
|
15
|
+
declare const TITULO_ELEITOR_SEQUENTIAL_LENGTH_EXTENDED = 9;
|
|
16
|
+
declare const TITULO_ELEITOR_LENGTH = 12;
|
|
17
|
+
declare const TITULO_ELEITOR_LENGTH_EXTENDED = 13;
|
|
18
|
+
declare const TITULO_ELEITOR_NUMERIC_PATTERN_12: RegExp;
|
|
19
|
+
declare const TITULO_ELEITOR_NUMERIC_PATTERN_13: RegExp;
|
|
20
|
+
/** TSE UF codes where remainder 0 maps DV to 1 instead of 0. */
|
|
21
|
+
declare const TITULO_ELEITOR_SPECIAL_UF_CODES: readonly [1, 2];
|
|
22
|
+
/** Golden primary — SC (UF=09), Wikipedia PT walkthrough. */
|
|
23
|
+
declare const TITULO_ELEITOR_GOLDEN_PRIMARY = "004356870906";
|
|
24
|
+
declare const TITULO_ELEITOR_GOLDEN_SP_SPECIAL = "000000000116";
|
|
25
|
+
declare const TITULO_ELEITOR_GOLDEN_SP_EXTENDED = "1234567890175";
|
|
26
|
+
declare const TITULO_ELEITOR_GOLDEN_EXTERIOR = "000000012895";
|
|
27
|
+
declare const TITULO_ELEITOR_GOLDEN_MASKED_INPUT = "0043 5687 0906";
|
|
28
|
+
/** Normative — Resolução TSE 20.132/1998, Art. 10 (8 seq + 2 UF + 2 DV, mod 11). */
|
|
29
|
+
declare const TITULO_ELEITOR_OFFICIAL_SOURCE_URL = "https://www.tse.jus.br/legislacao/compilada/res/1998/resolucao-no-20-132-de-19-de-marco-de-1998";
|
|
30
|
+
/** Normative — Resolução TSE 23.659/2021 (Cadastro Eleitoral; confirms UF + DV structure). */
|
|
31
|
+
declare const TITULO_ELEITOR_NORMATIVE_SECONDARY_URL = "https://www.tse.jus.br/legislacao/compilada/res/2021/resolucao-no-23-659-de-26-de-outubro-de-2021";
|
|
32
|
+
/**
|
|
33
|
+
* Algorithm weights + SP/MG remainder-zero rule — not in TSE resolution text.
|
|
34
|
+
* Community consensus validated empirically (Wikipedia PT worked example).
|
|
35
|
+
*/
|
|
36
|
+
declare const TITULO_ELEITOR_ALGORITHM_WEIGHTS_REF_URL = "https://pt.wikipedia.org/wiki/T%C3%ADtulo_eleitoral#C%C3%A1lculo_do_d%C3%ADgito_verificador";
|
|
37
|
+
/** Algorithm cross-check — Ghiorzi DV table. */
|
|
38
|
+
declare const TITULO_ELEITOR_ALGORITHM_REF_URL = "http://ghiorzi.org/DVnew.htm#e";
|
|
39
|
+
declare const TITULO_ELEITOR_TSE_PORTAL_URL = "https://www.tse.jus.br/";
|
|
40
|
+
declare const TITULO_ELEITOR_ETITULO_URL = "https://www.tse.jus.br/eleitor/servicos/aplicativo-e-titulo";
|
|
41
|
+
/** TSE electoral UF code → Brazilian UF (28 = exterior / ZZ). */
|
|
42
|
+
declare const TITULO_ELEITOR_UF_BY_CODE: Readonly<Record<number, UfCode>>;
|
|
43
|
+
declare const TITULO_ELEITOR_EXTERIOR_UF_CODE = 28;
|
|
44
|
+
|
|
45
|
+
declare function isValidTituloEleitor(input: string): boolean;
|
|
46
|
+
declare function validateTituloEleitor(input: string): TituloEleitorValidationResult;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Strip Título de Eleitor — digits only (BR-TITULO-002).
|
|
50
|
+
* @see https://pt.wikipedia.org/wiki/T%C3%ADtulo_eleitoral#C%C3%A1lculo_do_d%C3%ADgito_verificador
|
|
51
|
+
*/
|
|
52
|
+
declare function stripTituloEleitor(input: string): string;
|
|
53
|
+
|
|
54
|
+
declare function formatTituloEleitor(input: string): FormatResult;
|
|
55
|
+
|
|
56
|
+
export { FormatResult, 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, TituloEleitorValidationResult, UfCode, formatTituloEleitor, isValidTituloEleitor, stripTituloEleitor, validateTituloEleitor };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { formatTituloEleitor } from './chunk-PB4RIS6G.js';
|
|
2
|
+
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-MLPXW7N2.js';
|
|
3
|
+
export { stripTituloEleitor } from './chunk-YYHS5WQN.js';
|
|
4
|
+
import './chunk-4SNBZFS5.js';
|
|
5
|
+
import './chunk-EB3G4IG6.js';
|
|
6
|
+
import './chunk-UCJPSJN5.js';
|
|
7
|
+
import './chunk-OTZHMJYE.js';
|
|
8
|
+
import './chunk-MSLJF2FM.js';
|
|
9
|
+
//# sourceMappingURL=titulo-eleitor.js.map
|
|
10
|
+
//# sourceMappingURL=titulo-eleitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"titulo-eleitor.js"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
type DocumentFormat = 'numeric' | 'alphanumeric' | 'legacy' | 'mercosul' | 'email' | 'phone' | 'evp' | 'linha-digitavel' | 'codigo-barras' | 'cartao-credito' | 'inscricao-estadual' | 'inscricao-estadual-produtor-rural' | 'telefone' | 'brcode';
|
|
2
|
+
type PixKeyType = 'cpf' | 'cnpj' | 'email' | 'phone' | 'evp';
|
|
3
|
+
type TelefoneTipo = 'celular' | 'fixo';
|
|
4
|
+
type BoletoInputKind = 'linha-digitavel' | 'codigo-barras';
|
|
5
|
+
type ValidationErrorCode = 'INVALID_LENGTH' | 'INVALID_CHARACTER' | 'INVALID_CHECK_DIGIT' | 'KNOWN_INVALID_PATTERN' | 'UNSUPPORTED_FORMAT' | 'EMPTY_INPUT';
|
|
6
|
+
type ValidationResult<T extends string = string> = {
|
|
7
|
+
ok: true;
|
|
8
|
+
value: T;
|
|
9
|
+
format: DocumentFormat;
|
|
10
|
+
} | {
|
|
11
|
+
ok: false;
|
|
12
|
+
code: ValidationErrorCode;
|
|
13
|
+
message: string;
|
|
14
|
+
};
|
|
15
|
+
type FormatResult = {
|
|
16
|
+
ok: true;
|
|
17
|
+
formatted: string;
|
|
18
|
+
} | {
|
|
19
|
+
ok: false;
|
|
20
|
+
code: ValidationErrorCode;
|
|
21
|
+
message: string;
|
|
22
|
+
};
|
|
23
|
+
type Cnpj = string & {
|
|
24
|
+
readonly __brand: 'Cnpj';
|
|
25
|
+
};
|
|
26
|
+
type Cpf = string & {
|
|
27
|
+
readonly __brand: 'Cpf';
|
|
28
|
+
};
|
|
29
|
+
type Cnh = string & {
|
|
30
|
+
readonly __brand: 'Cnh';
|
|
31
|
+
};
|
|
32
|
+
type Renavam = string & {
|
|
33
|
+
readonly __brand: 'Renavam';
|
|
34
|
+
};
|
|
35
|
+
type TituloEleitor = string & {
|
|
36
|
+
readonly __brand: 'TituloEleitor';
|
|
37
|
+
};
|
|
38
|
+
type NfeChave = string & {
|
|
39
|
+
readonly __brand: 'NfeChave';
|
|
40
|
+
};
|
|
41
|
+
type Cep = string & {
|
|
42
|
+
readonly __brand: 'Cep';
|
|
43
|
+
};
|
|
44
|
+
type Placa = string & {
|
|
45
|
+
readonly __brand: 'Placa';
|
|
46
|
+
};
|
|
47
|
+
type PisPasep = string & {
|
|
48
|
+
readonly __brand: 'PisPasep';
|
|
49
|
+
};
|
|
50
|
+
type PixKey = string & {
|
|
51
|
+
readonly __brand: 'PixKey';
|
|
52
|
+
};
|
|
53
|
+
type LinhaDigitavel = string & {
|
|
54
|
+
readonly __brand: 'LinhaDigitavel';
|
|
55
|
+
};
|
|
56
|
+
type CodigoBarras = string & {
|
|
57
|
+
readonly __brand: 'CodigoBarras';
|
|
58
|
+
};
|
|
59
|
+
type CartaoCredito = string & {
|
|
60
|
+
readonly __brand: 'CartaoCredito';
|
|
61
|
+
};
|
|
62
|
+
type InscricaoEstadual = string & {
|
|
63
|
+
readonly __brand: 'InscricaoEstadual';
|
|
64
|
+
};
|
|
65
|
+
type InscricaoEstadualProdutorRural = string & {
|
|
66
|
+
readonly __brand: 'InscricaoEstadualProdutorRural';
|
|
67
|
+
};
|
|
68
|
+
type Telefone = string & {
|
|
69
|
+
readonly __brand: 'Telefone';
|
|
70
|
+
};
|
|
71
|
+
type BrCodePayload = string & {
|
|
72
|
+
readonly __brand: 'BrCodePayload';
|
|
73
|
+
};
|
|
74
|
+
type UfCode = 'AC' | 'AL' | 'AM' | 'AP' | 'BA' | 'CE' | 'DF' | 'ES' | 'GO' | 'MA' | 'MG' | 'MS' | 'MT' | 'PA' | 'PB' | 'PE' | 'PI' | 'PR' | 'RJ' | 'RN' | 'RO' | 'RR' | 'RS' | 'SC' | 'SE' | 'SP' | 'TO';
|
|
75
|
+
type CardBrand = 'visa' | 'mastercard' | 'amex' | 'elo' | 'hipercard' | 'unknown';
|
|
76
|
+
type CartaoCreditoValidationResult = {
|
|
77
|
+
ok: true;
|
|
78
|
+
value: CartaoCredito;
|
|
79
|
+
format: 'cartao-credito';
|
|
80
|
+
brand: CardBrand;
|
|
81
|
+
} | {
|
|
82
|
+
ok: false;
|
|
83
|
+
code: ValidationErrorCode;
|
|
84
|
+
message: string;
|
|
85
|
+
brand?: CardBrand;
|
|
86
|
+
};
|
|
87
|
+
type PixValidationResult = {
|
|
88
|
+
ok: true;
|
|
89
|
+
value: PixKey;
|
|
90
|
+
keyType: PixKeyType;
|
|
91
|
+
format: DocumentFormat;
|
|
92
|
+
} | {
|
|
93
|
+
ok: false;
|
|
94
|
+
code: ValidationErrorCode;
|
|
95
|
+
message: string;
|
|
96
|
+
keyType?: PixKeyType;
|
|
97
|
+
};
|
|
98
|
+
type BoletoSituacao = '1' | '2';
|
|
99
|
+
type BoletoValidationResult = {
|
|
100
|
+
ok: true;
|
|
101
|
+
value: LinhaDigitavel | CodigoBarras;
|
|
102
|
+
inputKind: BoletoInputKind;
|
|
103
|
+
format: DocumentFormat;
|
|
104
|
+
situacao: BoletoSituacao;
|
|
105
|
+
} | {
|
|
106
|
+
ok: false;
|
|
107
|
+
code: ValidationErrorCode;
|
|
108
|
+
message: string;
|
|
109
|
+
inputKind?: BoletoInputKind;
|
|
110
|
+
};
|
|
111
|
+
type InscricaoEstadualValidationResult = {
|
|
112
|
+
ok: true;
|
|
113
|
+
value: InscricaoEstadual;
|
|
114
|
+
uf: UfCode;
|
|
115
|
+
format: 'inscricao-estadual';
|
|
116
|
+
} | {
|
|
117
|
+
ok: false;
|
|
118
|
+
code: ValidationErrorCode;
|
|
119
|
+
message: string;
|
|
120
|
+
uf?: UfCode;
|
|
121
|
+
};
|
|
122
|
+
type IeProdutorRuralValidationResult = {
|
|
123
|
+
ok: true;
|
|
124
|
+
value: InscricaoEstadualProdutorRural;
|
|
125
|
+
uf: 'SP';
|
|
126
|
+
format: 'inscricao-estadual-produtor-rural';
|
|
127
|
+
} | {
|
|
128
|
+
ok: false;
|
|
129
|
+
code: ValidationErrorCode;
|
|
130
|
+
message: string;
|
|
131
|
+
uf?: UfCode;
|
|
132
|
+
};
|
|
133
|
+
type TituloEleitorValidationResult = {
|
|
134
|
+
ok: true;
|
|
135
|
+
value: TituloEleitor;
|
|
136
|
+
format: 'numeric';
|
|
137
|
+
ufCode: number;
|
|
138
|
+
uf?: UfCode;
|
|
139
|
+
exterior?: true;
|
|
140
|
+
} | {
|
|
141
|
+
ok: false;
|
|
142
|
+
code: ValidationErrorCode;
|
|
143
|
+
message: string;
|
|
144
|
+
ufCode?: number;
|
|
145
|
+
};
|
|
146
|
+
type NfeChaveParsed = {
|
|
147
|
+
cUF: string;
|
|
148
|
+
aamm: string;
|
|
149
|
+
cnpj: string;
|
|
150
|
+
mod: string;
|
|
151
|
+
serie: string;
|
|
152
|
+
nNF: string;
|
|
153
|
+
tpEmis: string;
|
|
154
|
+
cNF: string;
|
|
155
|
+
cDV: string;
|
|
156
|
+
};
|
|
157
|
+
type NfeChaveValidationResult = {
|
|
158
|
+
ok: true;
|
|
159
|
+
value: NfeChave;
|
|
160
|
+
format: 'numeric';
|
|
161
|
+
parsed: NfeChaveParsed;
|
|
162
|
+
uf?: UfCode;
|
|
163
|
+
} | {
|
|
164
|
+
ok: false;
|
|
165
|
+
code: ValidationErrorCode;
|
|
166
|
+
message: string;
|
|
167
|
+
uf?: UfCode;
|
|
168
|
+
};
|
|
169
|
+
type TelefoneValidationResult = {
|
|
170
|
+
ok: true;
|
|
171
|
+
value: Telefone;
|
|
172
|
+
tipo: TelefoneTipo;
|
|
173
|
+
format: 'telefone';
|
|
174
|
+
} | {
|
|
175
|
+
ok: false;
|
|
176
|
+
code: ValidationErrorCode;
|
|
177
|
+
message: string;
|
|
178
|
+
};
|
|
179
|
+
type BrCodeValidationResult = {
|
|
180
|
+
ok: true;
|
|
181
|
+
value: BrCodePayload;
|
|
182
|
+
format: 'brcode';
|
|
183
|
+
merchantName: string;
|
|
184
|
+
merchantCity: string;
|
|
185
|
+
amount?: string;
|
|
186
|
+
txid?: string;
|
|
187
|
+
pixKey?: PixKey;
|
|
188
|
+
pixKeyType?: PixKeyType;
|
|
189
|
+
pixInitiationUrl?: string;
|
|
190
|
+
} | {
|
|
191
|
+
ok: false;
|
|
192
|
+
code: ValidationErrorCode;
|
|
193
|
+
message: string;
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
export type { BoletoInputKind as B, CartaoCredito as C, DocumentFormat as D, FormatResult as F, IeProdutorRuralValidationResult as I, LinhaDigitavel as L, NfeChave as N, PisPasep as P, Renavam as R, Telefone as T, UfCode as U, ValidationErrorCode as V, BoletoSituacao as a, BoletoValidationResult as b, BrCodePayload as c, BrCodeValidationResult as d, CartaoCreditoValidationResult as e, Cep as f, Cnh as g, Cnpj as h, CodigoBarras as i, Cpf as j, InscricaoEstadual as k, InscricaoEstadualProdutorRural as l, InscricaoEstadualValidationResult as m, NfeChaveParsed as n, NfeChaveValidationResult as o, PixKey as p, PixKeyType as q, PixValidationResult as r, Placa as s, TelefoneTipo as t, TelefoneValidationResult as u, TituloEleitor as v, TituloEleitorValidationResult as w, ValidationResult as x };
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@br-validators/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0-alpha.0",
|
|
4
4
|
"description": "100% open-source Brazilian document validators — CPF, CNPJ, CEP, IE (27 UFs), PIX, boleto, and more",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/AlexandreZanata/
|
|
9
|
+
"url": "git+https://github.com/AlexandreZanata/br-validators.git",
|
|
10
10
|
"directory": "packages/br-validators"
|
|
11
11
|
},
|
|
12
|
-
"homepage": "https://github.com/AlexandreZanata/
|
|
12
|
+
"homepage": "https://github.com/AlexandreZanata/br-validators/tree/main/packages/br-validators#readme",
|
|
13
13
|
"bugs": {
|
|
14
|
-
"url": "https://github.com/AlexandreZanata/
|
|
14
|
+
"url": "https://github.com/AlexandreZanata/br-validators/issues"
|
|
15
15
|
},
|
|
16
16
|
"keywords": [
|
|
17
17
|
"brazil",
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
"typescript"
|
|
26
26
|
],
|
|
27
27
|
"publishConfig": {
|
|
28
|
-
"access": "public"
|
|
28
|
+
"access": "public",
|
|
29
|
+
"tag": "alpha"
|
|
29
30
|
},
|
|
30
31
|
"main": "./dist/index.js",
|
|
31
32
|
"types": "./dist/index.d.ts",
|
|
@@ -46,6 +47,30 @@
|
|
|
46
47
|
"types": "./dist/cep.d.ts",
|
|
47
48
|
"import": "./dist/cep.js"
|
|
48
49
|
},
|
|
50
|
+
"./telefone": {
|
|
51
|
+
"types": "./dist/telefone.d.ts",
|
|
52
|
+
"import": "./dist/telefone.js"
|
|
53
|
+
},
|
|
54
|
+
"./cnh": {
|
|
55
|
+
"types": "./dist/cnh.d.ts",
|
|
56
|
+
"import": "./dist/cnh.js"
|
|
57
|
+
},
|
|
58
|
+
"./renavam": {
|
|
59
|
+
"types": "./dist/renavam.d.ts",
|
|
60
|
+
"import": "./dist/renavam.js"
|
|
61
|
+
},
|
|
62
|
+
"./titulo-eleitor": {
|
|
63
|
+
"types": "./dist/titulo-eleitor.d.ts",
|
|
64
|
+
"import": "./dist/titulo-eleitor.js"
|
|
65
|
+
},
|
|
66
|
+
"./nfe-chave": {
|
|
67
|
+
"types": "./dist/nfe-chave.d.ts",
|
|
68
|
+
"import": "./dist/nfe-chave.js"
|
|
69
|
+
},
|
|
70
|
+
"./brcode": {
|
|
71
|
+
"types": "./dist/brcode.d.ts",
|
|
72
|
+
"import": "./dist/brcode.js"
|
|
73
|
+
},
|
|
49
74
|
"./placa": {
|
|
50
75
|
"types": "./dist/placa.d.ts",
|
|
51
76
|
"import": "./dist/placa.js"
|
|
@@ -69,6 +94,22 @@
|
|
|
69
94
|
"./inscricao-estadual": {
|
|
70
95
|
"types": "./dist/inscricao-estadual.d.ts",
|
|
71
96
|
"import": "./dist/inscricao-estadual.js"
|
|
97
|
+
},
|
|
98
|
+
"./inscricao-estadual-produtor-rural": {
|
|
99
|
+
"types": "./dist/inscricao-estadual-produtor-rural.d.ts",
|
|
100
|
+
"import": "./dist/inscricao-estadual-produtor-rural.js"
|
|
101
|
+
},
|
|
102
|
+
"./detect": {
|
|
103
|
+
"types": "./dist/detect.d.ts",
|
|
104
|
+
"import": "./dist/detect.js"
|
|
105
|
+
},
|
|
106
|
+
"./sanitize": {
|
|
107
|
+
"types": "./dist/sanitize.d.ts",
|
|
108
|
+
"import": "./dist/sanitize.js"
|
|
109
|
+
},
|
|
110
|
+
"./generate": {
|
|
111
|
+
"types": "./dist/generate.d.ts",
|
|
112
|
+
"import": "./dist/generate.js"
|
|
72
113
|
}
|
|
73
114
|
},
|
|
74
115
|
"files": [
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/strip/cartao-credito.ts","../src/core/cartao-credito/constants.ts","../src/core/cartao-credito/detect-brand.ts","../src/core/cartao-credito/luhn.ts","../src/core/cartao-credito/mask.ts","../src/core/cartao-credito/index.ts","../src/format/cartao-credito.ts"],"names":[],"mappings":"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","file":"chunk-54DTXC6V.js","sourcesContent":["/**\n * Strip credit card PAN mask — digits only (BR-LUHN-001).\n * @see https://www.iso.org/standard/70484.html\n */\nexport function stripCartaoCredito(input: string): string {\n return input.replace(/\\D/g, '');\n}\n","/**\n * Credit card PAN constants — ISO/IEC 7812-1 Annex B (Luhn).\n * @see https://www.iso.org/standard/70484.html\n * @see docs/use-cases/UC-008-validate-cartao-credito.md\n */\nexport type CardBrand = 'visa' | 'mastercard' | 'amex' | 'elo' | 'hipercard' | 'unknown';\n\nexport const CARTAO_PAN_MIN_LENGTH = 8;\nexport const CARTAO_PAN_MAX_LENGTH = 19;\n\nexport const CARTAO_GOLDEN_VISA = '4111111111111111';\nexport const CARTAO_GOLDEN_MASTERCARD = '5555555555554444';\nexport const CARTAO_GOLDEN_AMEX = '378282246310005';\nexport const CARTAO_GOLDEN_LUHN_WALKTHROUGH = '79927398713';\nexport const CARTAO_GOLDEN_VISA_MASKED = '4111 1111 1111 1111';\nexport const CARTAO_GOLDEN_MIN_LENGTH = '12345674';\n\nexport const CARTAO_OFFICIAL_SOURCE_URL = 'https://www.iso.org/standard/70484.html';\nexport const CARTAO_IEC_SOURCE_URL = 'https://webstore.iec.ch/en/publication/59763';\n\n/** Best-effort IIN prefixes — longest match first (BR-LUHN-005, non-authoritative). */\nexport const ELO_IIN_PREFIXES = [\n '401178',\n '401179',\n '431274',\n '438935',\n '451416',\n '457393',\n '457631',\n '457632',\n '504175',\n '506699',\n '506770',\n '509048',\n '509049',\n '627780',\n '636297',\n '636368',\n '650031',\n '650032',\n '650033',\n '650035',\n '650051',\n '650405',\n '650439',\n '650485',\n '650486',\n '650487',\n '650488',\n '650489',\n '650490',\n '650491',\n '650492',\n '650493',\n '650494',\n '650495',\n '650496',\n '650497',\n '650498',\n '650499',\n '651652',\n '651653',\n '651654',\n '651655',\n '651656',\n '651657',\n '651658',\n '651659',\n '651660',\n '655000',\n '655001',\n] as const;\n\nexport const HIPERCARD_IIN_PREFIXES = ['606282', '384100'] as const;\n","/**\n * Best-effort card brand from IIN prefix — non-authoritative (BR-LUHN-005).\n */\nimport type { CardBrand } from './constants.js';\nimport { ELO_IIN_PREFIXES, HIPERCARD_IIN_PREFIXES } from './constants.js';\n\nexport type { CardBrand };\n\nexport function detectCardBrand(strippedPan: string): CardBrand {\n for (const prefix of ELO_IIN_PREFIXES) {\n if (strippedPan.startsWith(prefix)) {\n return 'elo';\n }\n }\n\n for (const prefix of HIPERCARD_IIN_PREFIXES) {\n if (strippedPan.startsWith(prefix)) {\n return 'hipercard';\n }\n }\n\n if (/^3[47]/.test(strippedPan)) {\n return 'amex';\n }\n\n if (/^5[1-5]/.test(strippedPan) || /^2[2-7]/.test(strippedPan)) {\n return 'mastercard';\n }\n\n if (strippedPan.startsWith('4')) {\n return 'visa';\n }\n\n return 'unknown';\n}\n","/**\n * Luhn checksum — ISO/IEC 7812-1 Annex B (modulus-10 double-add-double).\n * @see BR-LUHN-003\n */\n\nexport function computeLuhnSum(pan: string): number {\n let sum = 0;\n let double = false;\n for (let i = pan.length - 1; i >= 0; i--) {\n let digit = Number(pan.charAt(i));\n if (double) {\n digit *= 2;\n if (digit > 9) {\n digit -= 9;\n }\n }\n sum += digit;\n double = !double;\n }\n return sum;\n}\n\n/** ISO/IEC 7812-1 Annex B — returns true when PAN passes Luhn. */\nexport function passesLuhn(pan: string): boolean {\n return computeLuhnSum(pan) % 10 === 0;\n}\n","import { CARTAO_PAN_MAX_LENGTH, CARTAO_PAN_MIN_LENGTH } from './constants.js';\n\n/** Grouped display mask (BR-LUHN-007). */\nexport function applyCartaoCreditoMask(canonical: string): string {\n if (canonical.length < CARTAO_PAN_MIN_LENGTH || canonical.length > CARTAO_PAN_MAX_LENGTH) {\n throw new Error(`PAN must have between ${CARTAO_PAN_MIN_LENGTH} and ${CARTAO_PAN_MAX_LENGTH} digits to apply mask`);\n }\n\n if (canonical.length === 15) {\n return `${canonical.slice(0, 4)} ${canonical.slice(4, 10)} ${canonical.slice(10)}`;\n }\n\n const groups: string[] = [];\n for (let i = 0; i < canonical.length; i += 4) {\n groups.push(canonical.slice(i, i + 4));\n }\n return groups.join(' ');\n}\n","/**\n * Credit card PAN validation — Luhn / ISO/IEC 7812-1 Annex B.\n * @see docs/use-cases/UC-008-validate-cartao-credito.md\n */\nimport { stripCartaoCredito } from '../../strip/cartao-credito.js';\nimport type { CartaoCreditoValidationResult } from '../../types/validation-result.js';\nimport { brandCartaoCredito } from '../../types/validation-result.js';\nimport { detectCardBrand } from './detect-brand.js';\nimport { CARTAO_PAN_MAX_LENGTH, CARTAO_PAN_MIN_LENGTH } from './constants.js';\nimport { passesLuhn } from './luhn.js';\n\nexport {\n CARTAO_GOLDEN_AMEX,\n CARTAO_GOLDEN_LUHN_WALKTHROUGH,\n CARTAO_GOLDEN_MASTERCARD,\n CARTAO_GOLDEN_MIN_LENGTH,\n CARTAO_GOLDEN_VISA,\n CARTAO_GOLDEN_VISA_MASKED,\n CARTAO_IEC_SOURCE_URL,\n CARTAO_OFFICIAL_SOURCE_URL,\n CARTAO_PAN_MAX_LENGTH,\n CARTAO_PAN_MIN_LENGTH,\n} from './constants.js';\nexport type { CardBrand } from './constants.js';\nexport { detectCardBrand } from './detect-brand.js';\nexport { computeLuhnSum, passesLuhn } from './luhn.js';\nexport { applyCartaoCreditoMask } from './mask.js';\n\ntype FailedResult = Extract<CartaoCreditoValidationResult, { ok: false }>;\n\nfunction failure(code: FailedResult['code'], message: string): FailedResult {\n return { ok: false, code, message };\n}\n\nfunction hasRepeatedDigits(value: string): boolean {\n const first = value[0];\n for (let i = 1; i < value.length; i++) {\n if (value[i] !== first) {\n return false;\n }\n }\n return true;\n}\n\nfunction validateStructure(input: string, stripped: string): FailedResult | null {\n if (stripped.length === 0) {\n return failure('EMPTY_INPUT', 'Credit card PAN input is empty');\n }\n\n const withoutMask = input.replace(/[\\s-]/g, '');\n if (/[^0-9]/.test(withoutMask)) {\n return failure('INVALID_CHARACTER', 'Credit card PAN contains invalid characters');\n }\n\n if (stripped.length < CARTAO_PAN_MIN_LENGTH || stripped.length > CARTAO_PAN_MAX_LENGTH) {\n return failure(\n 'INVALID_LENGTH',\n `Credit card PAN must have between ${CARTAO_PAN_MIN_LENGTH} and ${CARTAO_PAN_MAX_LENGTH} digits after normalization`,\n );\n }\n\n if (hasRepeatedDigits(stripped)) {\n return failure('KNOWN_INVALID_PATTERN', 'Credit card PAN with all identical digits is invalid');\n }\n\n return null;\n}\n\nexport function isValidLuhn(input: string): boolean {\n const stripped = stripCartaoCredito(input);\n if (stripped.length < CARTAO_PAN_MIN_LENGTH || stripped.length > CARTAO_PAN_MAX_LENGTH) {\n return false;\n }\n const withoutMask = input.replace(/[\\s-]/g, '');\n if (/[^0-9]/.test(withoutMask)) {\n return false;\n }\n return passesLuhn(stripped);\n}\n\nexport function isValidCartaoCredito(input: string): boolean {\n return validateCartaoCredito(input).ok;\n}\n\nexport function validateCartaoCredito(input: string): CartaoCreditoValidationResult {\n const stripped = stripCartaoCredito(input);\n const structural = validateStructure(input, stripped);\n if (structural) {\n return structural;\n }\n\n if (!passesLuhn(stripped)) {\n return failure('INVALID_CHECK_DIGIT', 'Credit card PAN check digit is invalid');\n }\n\n const brand = detectCardBrand(stripped);\n return {\n ok: true,\n value: brandCartaoCredito(stripped),\n format: 'cartao-credito',\n brand,\n };\n}\n","import { applyCartaoCreditoMask } from '../core/cartao-credito/mask.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatCartaoCredito(input: string): FormatResult {\n const result = validateCartaoCredito(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyCartaoCreditoMask(result.value) };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/format/cnpj.ts"],"names":[],"mappings":";;;AAIO,SAAS,WAAW,KAAA,EAA6B;AACtD,EAAA,MAAM,MAAA,GAAS,aAAa,KAAK,CAAA;AACjC,EAAA,IAAI,CAAC,OAAO,EAAA,EAAI;AACd,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAM,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,EACjE;AACA,EAAA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,WAAW,aAAA,CAAc,MAAA,CAAO,KAAK,CAAA,EAAE;AAC5D;AAEO,SAAS,kBAAkB,KAAA,EAA6B;AAC7D,EAAA,OAAO,WAAW,KAAK,CAAA;AACzB;AAEO,SAAS,uBAAuB,KAAA,EAA6B;AAClE,EAAA,OAAO,WAAW,KAAK,CAAA;AACzB","file":"chunk-7FOWIH6F.js","sourcesContent":["import { applyCnpjMask } from '../core/cnpj/mask.js';\nimport { validateCnpj } from '../core/cnpj/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatCnpj(input: string): FormatResult {\n const result = validateCnpj(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyCnpjMask(result.value) };\n}\n\nexport function formatCnpjNumeric(input: string): FormatResult {\n return formatCnpj(input);\n}\n\nexport function formatCnpjAlphanumeric(input: string): FormatResult {\n return formatCnpj(input);\n}\n"]}
|