@br-validators/core 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +1 -0
  2. package/dist/bancos.d.ts +41 -0
  3. package/dist/bancos.js +3328 -0
  4. package/dist/bancos.js.map +1 -0
  5. package/dist/batch.js +6 -5
  6. package/dist/{chunk-FKFRB3RJ.js → chunk-5V6N4JWQ.js} +4 -4
  7. package/dist/{chunk-FKFRB3RJ.js.map → chunk-5V6N4JWQ.js.map} +1 -1
  8. package/dist/{chunk-BFMRXXFE.js → chunk-ASQ2XIN2.js} +6 -6
  9. package/dist/{chunk-BFMRXXFE.js.map → chunk-ASQ2XIN2.js.map} +1 -1
  10. package/dist/{chunk-I7DM47IR.js → chunk-BA3FAVK4.js} +14 -14
  11. package/dist/{chunk-I7DM47IR.js.map → chunk-BA3FAVK4.js.map} +1 -1
  12. package/dist/chunk-EFEE6CMO.js +24091 -0
  13. package/dist/chunk-EFEE6CMO.js.map +1 -0
  14. package/dist/{chunk-G6OBZRZM.js → chunk-FOP5LO7W.js} +7 -7
  15. package/dist/{chunk-G6OBZRZM.js.map → chunk-FOP5LO7W.js.map} +1 -1
  16. package/dist/{chunk-HUIMOB5E.js → chunk-JCWQDTZB.js} +3 -3
  17. package/dist/{chunk-HUIMOB5E.js.map → chunk-JCWQDTZB.js.map} +1 -1
  18. package/dist/chunk-KTEQPYYN.js +31 -0
  19. package/dist/chunk-KTEQPYYN.js.map +1 -0
  20. package/dist/{chunk-N6N5ATLY.js → chunk-LRUZVPLR.js} +3 -3
  21. package/dist/{chunk-N6N5ATLY.js.map → chunk-LRUZVPLR.js.map} +1 -1
  22. package/dist/{chunk-SAZA3V2U.js → chunk-MKYCKCZ6.js} +7 -7
  23. package/dist/{chunk-SAZA3V2U.js.map → chunk-MKYCKCZ6.js.map} +1 -1
  24. package/dist/{chunk-N2WVO3GF.js → chunk-N5CER3QZ.js} +6 -6
  25. package/dist/{chunk-N2WVO3GF.js.map → chunk-N5CER3QZ.js.map} +1 -1
  26. package/dist/{chunk-WC6YYFWP.js → chunk-PCP77SLS.js} +6 -6
  27. package/dist/{chunk-WC6YYFWP.js.map → chunk-PCP77SLS.js.map} +1 -1
  28. package/dist/{chunk-PD7ZTWMM.js → chunk-PNPESCSP.js} +3 -3
  29. package/dist/{chunk-PD7ZTWMM.js.map → chunk-PNPESCSP.js.map} +1 -1
  30. package/dist/chunk-UCNPXHIJ.js +32 -0
  31. package/dist/chunk-UCNPXHIJ.js.map +1 -0
  32. package/dist/chunk-XADVBV73.js +30 -0
  33. package/dist/chunk-XADVBV73.js.map +1 -0
  34. package/dist/compare.js +8 -7
  35. package/dist/data-catalog.d.ts +14 -0
  36. package/dist/data-catalog.js +25 -0
  37. package/dist/data-catalog.js.map +1 -0
  38. package/dist/detect.js +6 -5
  39. package/dist/diff.js +8 -7
  40. package/dist/generate.js +14 -13
  41. package/dist/ibge.d.ts +65 -0
  42. package/dist/ibge.js +28174 -0
  43. package/dist/ibge.js.map +1 -0
  44. package/dist/index.d.ts +2 -1
  45. package/dist/index.js +37 -36
  46. package/dist/index.js.map +1 -1
  47. package/dist/inscricao-estadual-produtor-rural.js +1 -1
  48. package/dist/mask.js +14 -13
  49. package/dist/sanitize.js +7 -6
  50. package/dist/telefone.d.ts +32 -1
  51. package/dist/telefone.js +3 -2
  52. package/dist/types-CBIZxgfG.d.ts +28 -0
  53. package/package.json +16 -1
  54. package/dist/chunk-DAR6VOMT.js +0 -192
  55. package/dist/chunk-DAR6VOMT.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import { F as FormatResult } from './validation-result-BaI2Xder.js';
3
3
  export { B as BoletoInputKind, a as BoletoSituacao, b as BoletoValidationResult, c as BrCodePayload, d as BrCodeValidationResult, C as CartaoCredito, e as CartaoCreditoValidationResult, f as Cep, g as Cnh, h as Cnpj, i as CodigoBarras, j as Cpf, D as DocumentFormat, I as IeProdutorRuralValidationResult, k as InscricaoEstadual, l as InscricaoEstadualProdutorRural, m as InscricaoEstadualValidationResult, L as LinhaDigitavel, N as NfeChave, n as NfeChaveParsed, o as NfeChaveValidationResult, P as PisPasep, p as PixKey, q as PixKeyType, r as PixValidationResult, s as Placa, R as Renavam, T as Telefone, t as TelefoneTipo, u as TelefoneValidationResult, v as TituloEleitor, w as TituloEleitorValidationResult, U as UfCode, V as ValidationErrorCode, x as ValidationResult } from './validation-result-BaI2Xder.js';
4
4
  export { CPF_GOLDEN_PRIMARY, CPF_GOLDEN_PRIMARY_MASKED, CPF_GOLDEN_SECONDARY, CPF_OFFICIAL_SOURCE_URL, formatCpf, isValidCpf, stripCpf, validateCpf } from './cpf.js';
5
5
  export { CEP_GOLDEN_PRIMARY, CEP_GOLDEN_PRIMARY_MASKED, CEP_GOLDEN_SECONDARY, CEP_OFFICIAL_SOURCE_URL, formatCep, isValidCep, stripCep, validateCep } from './cep.js';
6
- 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, formatTelefone, isValidTelefone, normalizeTelefoneDigits, stripTelefone, validateTelefone } from './telefone.js';
6
+ export { ANATEL_DDDS, ANATEL_DDD_SET, DddInfo, 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, TelefoneDddDataVersion, extractTelefoneDigits, formatTelefone, getDddInfo, isValidTelefone, normalizeTelefoneDigits, stripTelefone, validateTelefone } from './telefone.js';
7
7
  export { CNH_BASE_LENGTH, CNH_DV1_WEIGHTS, CNH_DV2_WEIGHTS, CNH_GOLDEN_DISCOUNT_CASE, CNH_GOLDEN_PRIMARY, CNH_GOLDEN_PRIMARY_DECORATED_INPUT, CNH_GOLDEN_SECONDARY, CNH_LENGTH, CNH_OFFICIAL_SOURCE_URL, CNH_SENATRAN_VALIDAR_URL, formatCnh, isValidCnh, stripCnh, validateCnh } from './cnh.js';
8
8
  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, formatRenavam, isValidRenavam, stripRenavam, validateRenavam } from './renavam.js';
9
9
  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, formatTituloEleitor, isValidTituloEleitor, stripTituloEleitor, validateTituloEleitor } from './titulo-eleitor.js';
@@ -24,6 +24,7 @@ export { BatchInvalidEntry, BatchResult, BatchSummary, BatchValidEntry, batch }
24
24
  export { DiffField, DiffResult, diff } from './diff.js';
25
25
  export { CPF_ALPHA_GENERATE_STUB, GENERATABLE_CARD_BRANDS, GeneratableCardBrand, GeneratableDocumentType, GenerateOptions, applyArrecadacaoLinhaMask, assertCpfAlphanumericGenerateAllowed, generate, isGeneratableCardBrand, rejectCpfAlphanumericGenerate } from './generate.js';
26
26
  export { C as CARTAO_GOLDEN_AMEX, a as CARTAO_GOLDEN_LUHN_WALKTHROUGH, b as CARTAO_GOLDEN_MASTERCARD, c as CARTAO_GOLDEN_MIN_LENGTH, d as CARTAO_GOLDEN_VISA, e as CARTAO_GOLDEN_VISA_MASKED, f as CARTAO_IEC_SOURCE_URL, g as CARTAO_OFFICIAL_SOURCE_URL, h as CARTAO_PAN_MAX_LENGTH, i as CARTAO_PAN_MIN_LENGTH, j as CardBrand } from './constants-BqegsAc2.js';
27
+ import './types-CBIZxgfG.js';
27
28
  import './types-MXifBcV5.js';
28
29
 
29
30
  /**
package/dist/index.js CHANGED
@@ -1,18 +1,25 @@
1
+ export { sanitize } from './chunk-MKYCKCZ6.js';
2
+ import './chunk-ZH4RJNG7.js';
3
+ import './chunk-7ULDLG4C.js';
4
+ import './chunk-MFNJTAUS.js';
5
+ import './chunk-QGMVUIDD.js';
6
+ export { MASKABLE_DOCUMENT_TYPES, isMaskableDocumentType, mask, maskRuntime } from './chunk-ASQ2XIN2.js';
1
7
  import './chunk-4J5IMD7B.js';
2
8
  import './chunk-P55H5YRX.js';
3
9
  import './chunk-KLPONHBL.js';
4
10
  import './chunk-JQABTHUJ.js';
5
11
  import './chunk-G24G7WR5.js';
6
- export { sanitize } from './chunk-SAZA3V2U.js';
7
- import './chunk-ZH4RJNG7.js';
8
- import './chunk-7ULDLG4C.js';
12
+ export { compare, compareRuntime } from './chunk-JCWQDTZB.js';
9
13
  import './chunk-YGA5W54J.js';
10
- export { detect } from './chunk-WC6YYFWP.js';
11
- export { diff } from './chunk-N6N5ATLY.js';
12
- export { CPF_ALPHA_GENERATE_STUB, GENERATABLE_CARD_BRANDS, applyArrecadacaoLinhaMask, assertCpfAlphanumericGenerateAllowed, generate, isGeneratableCardBrand, rejectCpfAlphanumericGenerate } from './chunk-I7DM47IR.js';
13
- import './chunk-MFNJTAUS.js';
14
- import './chunk-QGMVUIDD.js';
15
- export { MASKABLE_DOCUMENT_TYPES, isMaskableDocumentType, mask, maskRuntime } from './chunk-BFMRXXFE.js';
14
+ export { detect } from './chunk-PCP77SLS.js';
15
+ export { diff } from './chunk-LRUZVPLR.js';
16
+ import './chunk-FOP5LO7W.js';
17
+ import './chunk-5V6N4JWQ.js';
18
+ import './chunk-GVK6IMBF.js';
19
+ export { CPF_ALPHA_GENERATE_STUB, GENERATABLE_CARD_BRANDS, applyArrecadacaoLinhaMask, assertCpfAlphanumericGenerateAllowed, generate, isGeneratableCardBrand, rejectCpfAlphanumericGenerate } from './chunk-BA3FAVK4.js';
20
+ export { formatTelefone } from './chunk-PNPESCSP.js';
21
+ export { formatTituloEleitor } from './chunk-EVULAGR5.js';
22
+ export { formatIeProdutorRural } from './chunk-54UWHK5L.js';
16
23
  export { formatNfeChave } from './chunk-JKDU7QYP.js';
17
24
  import { formatPisPasep } from './chunk-VSW3NBJQ.js';
18
25
  export { formatPisPasep } from './chunk-VSW3NBJQ.js';
@@ -21,52 +28,46 @@ export { formatPixKey } from './chunk-IYOPXJLY.js';
21
28
  import { formatPlaca } from './chunk-YD5MPZWY.js';
22
29
  export { formatPlaca } from './chunk-YD5MPZWY.js';
23
30
  export { formatRenavam } from './chunk-LAEUXOF6.js';
24
- export { formatTelefone } from './chunk-PD7ZTWMM.js';
25
- export { formatTituloEleitor } from './chunk-EVULAGR5.js';
26
31
  import { formatCpf } from './chunk-TJCE4TVX.js';
27
32
  export { formatCpf } from './chunk-TJCE4TVX.js';
28
- export { formatIeProdutorRural } from './chunk-54UWHK5L.js';
29
- export { batch } from './chunk-N2WVO3GF.js';
30
- import './chunk-KBNWI6GE.js';
31
- import { formatBoleto } from './chunk-XWHGXSQV.js';
32
- export { formatBoleto } from './chunk-XWHGXSQV.js';
33
- import './chunk-RYGAK7PB.js';
34
- import './chunk-CQPM43VV.js';
35
- import { formatCartaoCredito } from './chunk-B6A7VF4R.js';
36
- export { formatCartaoCredito } from './chunk-B6A7VF4R.js';
37
- import './chunk-2CNYSY3Z.js';
38
- import { formatCep } from './chunk-MESOO5GZ.js';
39
- export { formatCep } from './chunk-MESOO5GZ.js';
40
- import './chunk-Y2KUN2D3.js';
41
- export { formatCnh } from './chunk-VWVQWN2G.js';
42
- import './chunk-LF2B4VPE.js';
43
- import { formatCnpj } from './chunk-RMTHCPIV.js';
44
- export { formatCnpj, formatCnpjAlphanumeric, formatCnpjNumeric } from './chunk-RMTHCPIV.js';
45
- export { compare, compareRuntime } from './chunk-HUIMOB5E.js';
46
- import './chunk-G6OBZRZM.js';
47
- import './chunk-FKFRB3RJ.js';
48
- import './chunk-GVK6IMBF.js';
33
+ export { batch } from './chunk-N5CER3QZ.js';
49
34
  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-I66ZRSEN.js';
50
- export { NFE_CHAVE_BASE_LENGTH, NFE_CHAVE_DFE_PORTAL_URL, NFE_CHAVE_GOLDEN_PRIMARY, NFE_CHAVE_GOLDEN_SECONDARY, NFE_CHAVE_LENGTH, NFE_CHAVE_MOC_DV_SECTION_URL, NFE_CHAVE_MOC_ONLINE_URL, NFE_CHAVE_MOC_PDF_URL, NFE_CHAVE_MOD, NFE_CHAVE_NFCE_QR_ILLUSTRATIVE, NFE_CHAVE_NFCE_QR_ILLUSTRATIVE_URL, NFE_CHAVE_NUMERIC_PATTERN, NFE_CHAVE_OFFICIAL_SOURCE_URL, NFE_CHAVE_WEIGHT_CYCLE, NFE_IBGE_UF_BY_CODE, NFE_IBGE_UF_CODES, NFE_MODELOS, NFE_MODELO_NFCE, NFE_MODELO_NFE, computeNfeChaveCheckDigit, computeNfeChaveWeightedSum, isValidNfeChave, isValidNfeChaveCheckDigit, parseNfeChave, parseNfeChaveParts, resolveNfeChaveCheckDigit, validateNfeChave } from './chunk-AO6UTQ4A.js';
51
- export { PIS_PASEP_GOLDEN_PRIMARY, PIS_PASEP_GOLDEN_PRIMARY_MASKED, PIS_PASEP_GOLDEN_SECONDARY, PIS_PASEP_OFFICIAL_SOURCE_URL, isValidPisPasep, stripPisPasep, validatePisPasep } from './chunk-JLCQ7MGC.js';
52
- 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';
53
- 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-DAR6VOMT.js';
35
+ 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-EFEE6CMO.js';
54
36
  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-CSVGWTCG.js';
55
37
  export { formatInscricaoEstadual, getIeOfficialSourceUrl, isValidInscricaoEstadual, stripInscricaoEstadual, validateIeDf, validateIeMt, validateIeSp, validateInscricaoEstadual } from './chunk-665E36SC.js';
56
38
  export { IE_DF_GOLDEN, IE_DF_GOLDEN_MASKED, IE_DF_OFFICIAL_SOURCE_URL, IE_MT_GOLDEN_CANONICAL, IE_MT_GOLDEN_LEGACY, IE_MT_OFFICIAL_SOURCE_URL, IE_OFFICIAL_SOURCE_URLS, IE_SP_GOLDEN, IE_SP_GOLDEN_MASKED, IE_SP_OFFICIAL_SOURCE_URL, IE_SP_RURAL_GOLDEN, IE_SP_RURAL_GOLDEN_MASKED, IE_SP_RURAL_LENGTH, IE_SP_RURAL_OFFICIAL_SOURCE_URL, IE_SUPPORTED_UFS, getIeProdutorRuralOfficialSourceUrl, isSpRuralIeInput, isValidIeProdutorRural, stripIeSpRural, stripIeSpRural as stripInscricaoEstadualProdutorRural, validateIeProdutorRural, validateIeSpRural } from './chunk-CDNOUZEI.js';
39
+ export { NFE_CHAVE_BASE_LENGTH, NFE_CHAVE_DFE_PORTAL_URL, NFE_CHAVE_GOLDEN_PRIMARY, NFE_CHAVE_GOLDEN_SECONDARY, NFE_CHAVE_LENGTH, NFE_CHAVE_MOC_DV_SECTION_URL, NFE_CHAVE_MOC_ONLINE_URL, NFE_CHAVE_MOC_PDF_URL, NFE_CHAVE_MOD, NFE_CHAVE_NFCE_QR_ILLUSTRATIVE, NFE_CHAVE_NFCE_QR_ILLUSTRATIVE_URL, NFE_CHAVE_NUMERIC_PATTERN, NFE_CHAVE_OFFICIAL_SOURCE_URL, NFE_CHAVE_WEIGHT_CYCLE, NFE_IBGE_UF_BY_CODE, NFE_IBGE_UF_CODES, NFE_MODELOS, NFE_MODELO_NFCE, NFE_MODELO_NFE, computeNfeChaveCheckDigit, computeNfeChaveWeightedSum, isValidNfeChave, isValidNfeChaveCheckDigit, parseNfeChave, parseNfeChaveParts, resolveNfeChaveCheckDigit, validateNfeChave } from './chunk-AO6UTQ4A.js';
40
+ export { PIS_PASEP_GOLDEN_PRIMARY, PIS_PASEP_GOLDEN_PRIMARY_MASKED, PIS_PASEP_GOLDEN_SECONDARY, PIS_PASEP_OFFICIAL_SOURCE_URL, isValidPisPasep, stripPisPasep, validatePisPasep } from './chunk-JLCQ7MGC.js';
41
+ 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';
42
+ import './chunk-KTEQPYYN.js';
43
+ import './chunk-KBNWI6GE.js';
44
+ import { formatBoleto } from './chunk-XWHGXSQV.js';
45
+ export { formatBoleto } from './chunk-XWHGXSQV.js';
57
46
  export { convertCodigoBarrasToLinhaDigitavel, convertLinhaToCodigoBarras, isValidBoleto, validateBoleto, validateFatorVencimento, validateValorDocumento } from './chunk-AU6TW3GH.js';
58
47
  export { computeArrecadacaoModulo11Dv, isValidArrecadacao, linhaArrecadacaoToCodigoBarras, stripArrecadacao, stripCodigoBarras, validateArrecadacao, validateArrecadacaoCodigoBarras, validateArrecadacaoLinha, validateCodigoBarras } from './chunk-N6RQICAP.js';
59
48
  export { BOLETO_ARRECADACAO_CODIGO_BARRAS_LENGTH, BOLETO_ARRECADACAO_LINHA_LENGTH, BOLETO_ARRECADACAO_OFFICIAL_SOURCE_URL, BOLETO_ARRECADACAO_PRODUCT_ID, BOLETO_CODE_ISPB_HOLDER, BOLETO_CODIGO_BARRAS_LENGTH, BOLETO_CURRENCY_ISPB, BOLETO_CURRENCY_REAL, BOLETO_GOLDEN_CODIGO_BARRAS, BOLETO_GOLDEN_CODIGO_BARRAS_BB, BOLETO_GOLDEN_CODIGO_BARRAS_SITUACAO2, BOLETO_GOLDEN_LINHA_BB_STRIPPED, BOLETO_GOLDEN_LINHA_MASKED, BOLETO_GOLDEN_LINHA_SITUACAO2_STRIPPED, BOLETO_GOLDEN_LINHA_STRIPPED, BOLETO_LAYOUTS_PORTAL_URL, BOLETO_LINHA_LENGTH, BOLETO_OFFICIAL_SOURCE_URL, applyLinhaDigitavelMask, computeModulo10FieldDv as computeArrecadacaoModulo10Dv, computeModulo10FieldDv, computeModulo11BarcodeDv, convertCodigoBarrasToLinhaDigits, convertLinhaToCodigoBarrasDigits, detectBoletoInputKind, detectBoletoSituacao, formatLinhaDigitavel, stripLinhaDigitavel, validateLinhaDigitavel } from './chunk-E2EFGMWA.js';
49
+ import './chunk-RYGAK7PB.js';
60
50
  export { BRCODE_GOLDEN_COMPOSITE, BRCODE_GOLDEN_DYNAMIC_URL, BRCODE_GOLDEN_STATIC_CPF, BRCODE_GOLDEN_STATIC_EMAIL, BRCODE_GOLDEN_STATIC_EVP, BRCODE_OFFICIAL_SOURCE_URL, BRCODE_PIX_INITIATION_MANUAL_URL, buildStaticPixBrCode, computeCrc16Ccitt, findPixMerchantAccount, findTlvField, isValidBrCode, normalizeBrCodePayload, parseBrCode, parseBrCodePayload, parseTlvSequence, validateBrCode, verifyBrCodeCrc } from './chunk-V7UJ55KW.js';
61
51
  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, detectPixKeyType, isValidPixKey, validatePixCnpjKey, validatePixCpfKey, validatePixEmailKey, validatePixEvpKey, validatePixKey, validatePixPhoneKey } from './chunk-H3MLGGFI.js';
62
52
  import './chunk-P2KNN6ZR.js';
63
53
  export { CPF_GOLDEN_PRIMARY, CPF_GOLDEN_PRIMARY_MASKED, CPF_GOLDEN_SECONDARY, CPF_OFFICIAL_SOURCE_URL, isValidCpf, validateCpf } from './chunk-63G7QO73.js';
54
+ import './chunk-CQPM43VV.js';
55
+ import { formatCartaoCredito } from './chunk-B6A7VF4R.js';
56
+ export { formatCartaoCredito } from './chunk-B6A7VF4R.js';
64
57
  export { CARTAO_GOLDEN_AMEX, CARTAO_GOLDEN_LUHN_WALKTHROUGH, CARTAO_GOLDEN_MASTERCARD, CARTAO_GOLDEN_MIN_LENGTH, CARTAO_GOLDEN_VISA, CARTAO_GOLDEN_VISA_MASKED, CARTAO_IEC_SOURCE_URL, CARTAO_OFFICIAL_SOURCE_URL, CARTAO_PAN_MAX_LENGTH, CARTAO_PAN_MIN_LENGTH, computeLuhnSum, detectCardBrand, isValidCartaoCredito, isValidLuhn, passesLuhn, stripCartaoCredito, validateCartaoCredito } from './chunk-ANWQBKGN.js';
58
+ import './chunk-2CNYSY3Z.js';
59
+ import { formatCep } from './chunk-MESOO5GZ.js';
60
+ export { formatCep } from './chunk-MESOO5GZ.js';
65
61
  export { CEP_GOLDEN_PRIMARY, CEP_GOLDEN_PRIMARY_MASKED, CEP_GOLDEN_SECONDARY, CEP_OFFICIAL_SOURCE_URL, isValidCep, validateCep } from './chunk-TE6NSONR.js';
62
+ import './chunk-Y2KUN2D3.js';
63
+ export { formatCnh } from './chunk-VWVQWN2G.js';
66
64
  export { CNH_BASE_LENGTH, CNH_DV1_WEIGHTS, CNH_DV2_WEIGHTS, CNH_GOLDEN_DISCOUNT_CASE, CNH_GOLDEN_PRIMARY, CNH_GOLDEN_PRIMARY_DECORATED_INPUT, CNH_GOLDEN_SECONDARY, CNH_LENGTH, CNH_OFFICIAL_SOURCE_URL, CNH_SENATRAN_VALIDAR_URL, isValidCnh, validateCnh } from './chunk-YNVMVDFN.js';
67
65
  export { stripCep, stripCnh, stripPlaca, stripRenavam, stripTituloEleitor } from './chunk-YYHS5WQN.js';
68
66
  export { stripNfeChave } from './chunk-4SNBZFS5.js';
69
67
  export { stripCpf } from './chunk-UCJPSJN5.js';
68
+ import './chunk-LF2B4VPE.js';
69
+ import { formatCnpj } from './chunk-RMTHCPIV.js';
70
+ export { formatCnpj, formatCnpjAlphanumeric, formatCnpjNumeric } from './chunk-RMTHCPIV.js';
70
71
  import './chunk-CSRBRKXY.js';
71
72
  export { CNPJ_GOLDEN_ALPHANUMERIC, CNPJ_GOLDEN_ALPHANUMERIC_MASKED, CNPJ_GOLDEN_NUMERIC, CNPJ_GOLDEN_NUMERIC_MASKED, CNPJ_OFFICIAL_SOURCE_URL, detectCnpjFormat, isValidCnpj, isValidCnpjAlphanumeric, isValidCnpjNumeric, validateCnpj } from './chunk-FBARVLLP.js';
72
73
  import './chunk-OTZHMJYE.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/format/document.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBO,IAAM,0BAAA,GAA6B;AAAA,EACxC,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF;AAEO,SAAS,0BAA0B,IAAA,EAA+C;AACvF,EAAA,OAAQ,0BAAA,CAAiD,SAAS,IAAI,CAAA;AACxE;AAEO,SAAS,cAAA,CAAe,MAA+B,KAAA,EAA6B;AACzF,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,KAAA;AACH,MAAA,OAAO,UAAU,KAAK,CAAA;AAAA,IACxB,KAAK,MAAA;AACH,MAAA,OAAO,WAAW,KAAK,CAAA;AAAA,IACzB,KAAK,KAAA;AACH,MAAA,OAAO,UAAU,KAAK,CAAA;AAAA,IACxB,KAAK,OAAA;AACH,MAAA,OAAO,YAAY,KAAK,CAAA;AAAA,IAC1B,KAAK,WAAA;AACH,MAAA,OAAO,eAAe,KAAK,CAAA;AAAA,IAC7B,KAAK,KAAA;AACH,MAAA,OAAO,aAAa,KAAK,CAAA;AAAA,IAC3B,KAAK,QAAA;AACH,MAAA,OAAO,aAAa,KAAK,CAAA;AAAA,IAC3B,KAAK,gBAAA;AACH,MAAA,OAAO,oBAAoB,KAAK,CAAA;AAAA;AAEtC;AAGO,SAAS,qBAAA,CAAsB,MAAc,KAAA,EAA6B;AAC/E,EAAA,IAAI,CAAC,yBAAA,CAA0B,IAAI,CAAA,EAAG;AACpC,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,sBAAsB,OAAA,EAAS,CAAA,uBAAA,EAA0B,IAAI,CAAA,CAAA,EAAG;AAAA,EAC5F;AACA,EAAA,OAAO,cAAA,CAAe,MAAM,KAAK,CAAA;AACnC","file":"index.js","sourcesContent":["/**\n * Format decorator — union entrypoint (UC-003).\n * @see docs/use-cases/UC-003-format-document.md\n */\nimport type { FormatResult } from '../types/validation-result.js';\nimport { formatBoleto } from './boleto.js';\nimport { formatCartaoCredito } from './cartao-credito.js';\nimport { formatCep } from './cep.js';\nimport { formatCnpj } from './cnpj.js';\nimport { formatCpf } from './cpf.js';\nimport { formatPisPasep } from './pis-pasep.js';\nimport { formatPixKey } from './pix.js';\nimport { formatPlaca } from './placa.js';\n\nexport type FormattableDocumentType =\n | 'cpf'\n | 'cnpj'\n | 'cep'\n | 'placa'\n | 'pis-pasep'\n | 'pix'\n | 'boleto'\n | 'cartao-credito';\n\nexport const FORMATTABLE_DOCUMENT_TYPES = [\n 'cpf',\n 'cnpj',\n 'cep',\n 'placa',\n 'pis-pasep',\n 'pix',\n 'boleto',\n 'cartao-credito',\n] as const satisfies readonly FormattableDocumentType[];\n\nexport function isFormattableDocumentType(type: string): type is FormattableDocumentType {\n return (FORMATTABLE_DOCUMENT_TYPES as readonly string[]).includes(type);\n}\n\nexport function formatDocument(type: FormattableDocumentType, input: string): FormatResult {\n switch (type) {\n case 'cpf':\n return formatCpf(input);\n case 'cnpj':\n return formatCnpj(input);\n case 'cep':\n return formatCep(input);\n case 'placa':\n return formatPlaca(input);\n case 'pis-pasep':\n return formatPisPasep(input);\n case 'pix':\n return formatPixKey(input);\n case 'boleto':\n return formatBoleto(input);\n case 'cartao-credito':\n return formatCartaoCredito(input);\n }\n}\n\n/** Runtime guard for dynamic callers (non-exhaustive type string). */\nexport function formatDocumentRuntime(type: string, input: string): FormatResult {\n if (!isFormattableDocumentType(type)) {\n return { ok: false, code: 'UNSUPPORTED_FORMAT', message: `Unknown document type: ${type}` };\n }\n return formatDocument(type, input);\n}\n"]}
1
+ {"version":3,"sources":["../src/format/document.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBO,IAAM,0BAAA,GAA6B;AAAA,EACxC,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF;AAEO,SAAS,0BAA0B,IAAA,EAA+C;AACvF,EAAA,OAAQ,0BAAA,CAAiD,SAAS,IAAI,CAAA;AACxE;AAEO,SAAS,cAAA,CAAe,MAA+B,KAAA,EAA6B;AACzF,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,KAAA;AACH,MAAA,OAAO,UAAU,KAAK,CAAA;AAAA,IACxB,KAAK,MAAA;AACH,MAAA,OAAO,WAAW,KAAK,CAAA;AAAA,IACzB,KAAK,KAAA;AACH,MAAA,OAAO,UAAU,KAAK,CAAA;AAAA,IACxB,KAAK,OAAA;AACH,MAAA,OAAO,YAAY,KAAK,CAAA;AAAA,IAC1B,KAAK,WAAA;AACH,MAAA,OAAO,eAAe,KAAK,CAAA;AAAA,IAC7B,KAAK,KAAA;AACH,MAAA,OAAO,aAAa,KAAK,CAAA;AAAA,IAC3B,KAAK,QAAA;AACH,MAAA,OAAO,aAAa,KAAK,CAAA;AAAA,IAC3B,KAAK,gBAAA;AACH,MAAA,OAAO,oBAAoB,KAAK,CAAA;AAAA;AAEtC;AAGO,SAAS,qBAAA,CAAsB,MAAc,KAAA,EAA6B;AAC/E,EAAA,IAAI,CAAC,yBAAA,CAA0B,IAAI,CAAA,EAAG;AACpC,IAAA,OAAO,EAAE,IAAI,KAAA,EAAO,IAAA,EAAM,sBAAsB,OAAA,EAAS,CAAA,uBAAA,EAA0B,IAAI,CAAA,CAAA,EAAG;AAAA,EAC5F;AACA,EAAA,OAAO,cAAA,CAAe,MAAM,KAAK,CAAA;AACnC","file":"index.js","sourcesContent":["/**\n * Format decorator — union entrypoint (UC-003).\n * @see docs/use-cases/UC-003-format-document.md\n */\nimport type { FormatResult } from '../types/validation-result.js';\nimport { formatBoleto } from './boleto.js';\nimport { formatCartaoCredito } from './cartao-credito.js';\nimport { formatCep } from './cep.js';\nimport { formatCnpj } from './cnpj.js';\nimport { formatCpf } from './cpf.js';\nimport { formatPisPasep } from './pis-pasep.js';\nimport { formatPixKey } from './pix.js';\nimport { formatPlaca } from './placa.js';\n\nexport type FormattableDocumentType =\n | 'cpf'\n | 'cnpj'\n | 'cep'\n | 'placa'\n | 'pis-pasep'\n | 'pix'\n | 'boleto'\n | 'cartao-credito';\n\nexport const FORMATTABLE_DOCUMENT_TYPES = [\n 'cpf',\n 'cnpj',\n 'cep',\n 'placa',\n 'pis-pasep',\n 'pix',\n 'boleto',\n 'cartao-credito',\n] as const satisfies readonly FormattableDocumentType[];\n\nexport function isFormattableDocumentType(type: string): type is FormattableDocumentType {\n return (FORMATTABLE_DOCUMENT_TYPES as readonly string[]).includes(type);\n}\n\nexport function formatDocument(type: FormattableDocumentType, input: string): FormatResult {\n switch (type) {\n case 'cpf':\n return formatCpf(input);\n case 'cnpj':\n return formatCnpj(input);\n case 'cep':\n return formatCep(input);\n case 'placa':\n return formatPlaca(input);\n case 'pis-pasep':\n return formatPisPasep(input);\n case 'pix':\n return formatPixKey(input);\n case 'boleto':\n return formatBoleto(input);\n case 'cartao-credito':\n return formatCartaoCredito(input);\n }\n}\n\n/** Runtime guard for dynamic callers (non-exhaustive type string). */\nexport function formatDocumentRuntime(type: string, input: string): FormatResult {\n if (!isFormattableDocumentType(type)) {\n return { ok: false, code: 'UNSUPPORTED_FORMAT', message: `Unknown document type: ${type}` };\n }\n return formatDocument(type, input);\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import './chunk-MFNJTAUS.js';
2
- export { formatIeProdutorRural } from './chunk-54UWHK5L.js';
3
2
  import './chunk-GVK6IMBF.js';
3
+ export { formatIeProdutorRural } from './chunk-54UWHK5L.js';
4
4
  export { IE_SP_RURAL_GOLDEN, IE_SP_RURAL_GOLDEN_MASKED, IE_SP_RURAL_LENGTH, IE_SP_RURAL_OFFICIAL_SOURCE_URL, getIeProdutorRuralOfficialSourceUrl, isSpRuralIeInput, isValidIeProdutorRural, stripIeSpRural, stripIeSpRural as stripInscricaoEstadualProdutorRural, validateIeProdutorRural, validateIeSpRural } from './chunk-CDNOUZEI.js';
5
5
  import './chunk-NUQSMT4Y.js';
6
6
  //# sourceMappingURL=inscricao-estadual-produtor-rural.js.map
package/dist/mask.js CHANGED
@@ -1,36 +1,37 @@
1
- export { MASKABLE_DOCUMENT_TYPES, isMaskableDocumentType, mask, maskRuntime } from './chunk-BFMRXXFE.js';
1
+ export { MASKABLE_DOCUMENT_TYPES, isMaskableDocumentType, mask, maskRuntime } from './chunk-ASQ2XIN2.js';
2
+ import './chunk-PNPESCSP.js';
3
+ import './chunk-EVULAGR5.js';
4
+ import './chunk-54UWHK5L.js';
2
5
  import './chunk-JKDU7QYP.js';
3
6
  import './chunk-VSW3NBJQ.js';
4
7
  import './chunk-IYOPXJLY.js';
5
8
  import './chunk-YD5MPZWY.js';
6
9
  import './chunk-LAEUXOF6.js';
7
- import './chunk-PD7ZTWMM.js';
8
- import './chunk-EVULAGR5.js';
9
10
  import './chunk-TJCE4TVX.js';
10
- import './chunk-54UWHK5L.js';
11
- import './chunk-XWHGXSQV.js';
12
- import './chunk-B6A7VF4R.js';
13
- import './chunk-MESOO5GZ.js';
14
- import './chunk-VWVQWN2G.js';
15
- import './chunk-RMTHCPIV.js';
16
11
  import './chunk-I66ZRSEN.js';
17
- import './chunk-AO6UTQ4A.js';
18
- import './chunk-JLCQ7MGC.js';
19
- import './chunk-3LMDBXU6.js';
20
- import './chunk-DAR6VOMT.js';
12
+ import './chunk-EFEE6CMO.js';
21
13
  import './chunk-CSVGWTCG.js';
22
14
  import './chunk-665E36SC.js';
23
15
  import './chunk-CDNOUZEI.js';
16
+ import './chunk-AO6UTQ4A.js';
17
+ import './chunk-JLCQ7MGC.js';
18
+ import './chunk-3LMDBXU6.js';
19
+ import './chunk-KTEQPYYN.js';
20
+ import './chunk-XWHGXSQV.js';
24
21
  import './chunk-E2EFGMWA.js';
25
22
  import './chunk-H3MLGGFI.js';
26
23
  import './chunk-P2KNN6ZR.js';
27
24
  import './chunk-63G7QO73.js';
25
+ import './chunk-B6A7VF4R.js';
28
26
  import './chunk-ANWQBKGN.js';
27
+ import './chunk-MESOO5GZ.js';
29
28
  import './chunk-TE6NSONR.js';
29
+ import './chunk-VWVQWN2G.js';
30
30
  import './chunk-YNVMVDFN.js';
31
31
  import './chunk-YYHS5WQN.js';
32
32
  import './chunk-4SNBZFS5.js';
33
33
  import './chunk-UCJPSJN5.js';
34
+ import './chunk-RMTHCPIV.js';
34
35
  import './chunk-CSRBRKXY.js';
35
36
  import './chunk-FBARVLLP.js';
36
37
  import './chunk-OTZHMJYE.js';
package/dist/sanitize.js CHANGED
@@ -1,14 +1,15 @@
1
- export { sanitize } from './chunk-SAZA3V2U.js';
2
- import './chunk-FKFRB3RJ.js';
1
+ export { sanitize } from './chunk-MKYCKCZ6.js';
2
+ import './chunk-5V6N4JWQ.js';
3
3
  import './chunk-GVK6IMBF.js';
4
4
  import './chunk-I66ZRSEN.js';
5
- import './chunk-AO6UTQ4A.js';
6
- import './chunk-JLCQ7MGC.js';
7
- import './chunk-3LMDBXU6.js';
8
- import './chunk-DAR6VOMT.js';
5
+ import './chunk-EFEE6CMO.js';
9
6
  import './chunk-CSVGWTCG.js';
10
7
  import './chunk-665E36SC.js';
11
8
  import './chunk-CDNOUZEI.js';
9
+ import './chunk-AO6UTQ4A.js';
10
+ import './chunk-JLCQ7MGC.js';
11
+ import './chunk-3LMDBXU6.js';
12
+ import './chunk-KTEQPYYN.js';
12
13
  import './chunk-AU6TW3GH.js';
13
14
  import './chunk-N6RQICAP.js';
14
15
  import './chunk-E2EFGMWA.js';
@@ -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-PD7ZTWMM.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-DAR6VOMT.js';
2
+ export { formatTelefone } from './chunk-PNPESCSP.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-EFEE6CMO.js';
4
+ import './chunk-KTEQPYYN.js';
4
5
  import './chunk-NUQSMT4Y.js';
5
6
  //# sourceMappingURL=telefone.js.map
6
7
  //# sourceMappingURL=telefone.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.0.0",
3
+ "version": "1.1.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,9 @@
38
38
  "compare",
39
39
  "batch",
40
40
  "diff",
41
+ "ibge",
42
+ "bancos",
43
+ "data-catalog",
41
44
  "typescript"
42
45
  ],
43
46
  "publishConfig": {
@@ -142,6 +145,18 @@
142
145
  "./diff": {
143
146
  "types": "./dist/diff.d.ts",
144
147
  "import": "./dist/diff.js"
148
+ },
149
+ "./ibge": {
150
+ "types": "./dist/ibge.d.ts",
151
+ "import": "./dist/ibge.js"
152
+ },
153
+ "./bancos": {
154
+ "types": "./dist/bancos.d.ts",
155
+ "import": "./dist/bancos.js"
156
+ },
157
+ "./data-catalog": {
158
+ "types": "./dist/data-catalog.d.ts",
159
+ "import": "./dist/data-catalog.js"
145
160
  }
146
161
  },
147
162
  "files": [
@@ -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":"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","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"]}