🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@br-validators/core

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@br-validators/core - npm Package Compare versions

Comparing version
1.0.0
to
1.1.0
+41
dist/bancos.d.ts
import { b as DatasetChanges, c as DatasetVerification } from './types-CBIZxgfG.js';
interface Banco {
codigo: string;
ispb: string;
nome: string;
nomeReduzido: string;
participaCompe: boolean;
}
interface BancosDataVersion {
id: 'bancos';
nome: string;
fonte: string;
endpoints: string[];
capturadoEm: string;
atualizadoEm: string;
contagens: {
bancos: number;
};
alteracoes: DatasetChanges;
verificacao: DatasetVerification;
documentacao: string;
}
/**
* Bacen STR participant lookup — offline embedded data from official STR CSV.
* @see https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv
*/
declare function getBancos(): readonly Banco[];
declare function getBancoPorCodigo(codigo: string): Banco | undefined;
declare function getBancoPorIspb(ispb: string): Banco | undefined;
declare const BANCOS_STR_URL = "https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv";
declare const BANCOS_GOLDEN_COMPE_BB = "001";
declare const BANCOS_GOLDEN_COMPE_ITAU = "341";
declare const BANCOS_GOLDEN_COMPE_NUBANK = "260";
declare const BANCOS_DATA_VERSION: BancosDataVersion;
export { BANCOS_DATA_VERSION, BANCOS_GOLDEN_COMPE_BB, BANCOS_GOLDEN_COMPE_ITAU, BANCOS_GOLDEN_COMPE_NUBANK, BANCOS_STR_URL, type Banco, type BancosDataVersion, getBancoPorCodigo, getBancoPorIspb, getBancos };

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

import { normalizeTelefoneDigits, extractTelefoneDigits } from './chunk-EFEE6CMO.js';
import { stripInscricaoEstadual } from './chunk-665E36SC.js';
import { stripIeSpRural } from './chunk-CDNOUZEI.js';
import { stripPisPasep } from './chunk-JLCQ7MGC.js';
import { stripTituloEleitor, stripRenavam, stripCnh, stripPlaca, stripCep } from './chunk-YYHS5WQN.js';
import { stripNfeChave } from './chunk-4SNBZFS5.js';
import { stripCpf } from './chunk-UCJPSJN5.js';
import { stripCnpj } from './chunk-EB3G4IG6.js';
// src/sanitize/fixes.ts
function trimFix(raw) {
const trimmed = raw.trim();
const fixes = [];
if (trimmed !== raw) {
fixes.push("trimmed");
}
return { value: trimmed, fixes };
}
function digitsFix(value, fixes) {
const digits = value.replace(/\D/g, "");
if (digits !== value) {
fixes.push("removed_non_digits");
}
return { value: digits, fixes };
}
function upperAndStripSeparators(value, fixes) {
const upper = value.toUpperCase();
if (upper !== value) {
fixes.push("uppercased");
}
const stripped = upper.replace(/[^A-Z0-9]/g, "");
if (stripped !== upper) {
fixes.push("removed_separators");
}
return { value: stripped, fixes };
}
function placaFix(value, fixes) {
const upper = value.toUpperCase();
if (upper !== value) {
fixes.push("uppercased");
}
if (/[-.\s/]/.test(value)) {
fixes.push("removed_separators");
}
return { value: stripPlaca(upper), fixes };
}
function telefoneFix(value, fixes) {
if (/[\s()-]/.test(value)) {
fixes.push("removed_mask_chars");
}
const digitsOnly = extractTelefoneDigits(value);
const normalized = normalizeTelefoneDigits(value);
if (normalized !== digitsOnly && normalized.length > 0) {
fixes.push("normalized_national");
}
return { value: normalized, fixes };
}
function ieProdutorRuralFix(value, fixes) {
const upper = value.toUpperCase();
if (upper !== value) {
fixes.push("uppercased");
}
if (/^[Pp]/.test(upper)) {
fixes.push("preserved_p_prefix");
}
return { value: stripIeSpRural(upper), fixes };
}
function applyFixes(raw, type) {
const { value: trimmed, fixes } = trimFix(raw);
switch (type) {
case "cpf":
case "cep":
case "pis-pasep":
case "cnh":
case "renavam":
case "nfe-chave":
case "cartao-credito":
case "boleto":
case "titulo-eleitor":
case "inscricao-estadual":
return digitsFix(trimmed, fixes);
case "cnpj":
return upperAndStripSeparators(trimmed, fixes);
case "placa":
return placaFix(trimmed, fixes);
case "telefone":
return telefoneFix(trimmed, fixes);
case "inscricao-estadual-produtor-rural":
return ieProdutorRuralFix(trimmed, fixes);
default: {
const _exhaustive = type;
return { value: _exhaustive, fixes };
}
}
}
function stripForType(value, type) {
switch (type) {
case "cpf":
return stripCpf(value);
case "cnpj":
return stripCnpj(value);
case "cep":
return stripCep(value);
case "placa":
return stripPlaca(value);
case "pis-pasep":
return stripPisPasep(value);
case "telefone":
return normalizeTelefoneDigits(value);
case "cnh":
return stripCnh(value);
case "renavam":
return stripRenavam(value);
case "titulo-eleitor":
return stripTituloEleitor(value);
case "nfe-chave":
return stripNfeChave(value);
case "boleto":
return value.replace(/\D/g, "");
case "cartao-credito":
return value.replace(/\D/g, "");
case "inscricao-estadual":
return stripInscricaoEstadual(value);
case "inscricao-estadual-produtor-rural":
return stripIeSpRural(value);
default: {
const _exhaustive = type;
return _exhaustive;
}
}
}
export { applyFixes, stripForType };
//# sourceMappingURL=chunk-5V6N4JWQ.js.map
//# sourceMappingURL=chunk-5V6N4JWQ.js.map
{"version":3,"sources":["../src/sanitize/fixes.ts"],"names":[],"mappings":"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","file":"chunk-5V6N4JWQ.js","sourcesContent":["import { stripCep } from '../strip/cep.js';\nimport { stripCnh } from '../strip/cnh.js';\nimport { stripCnpj } from '../strip/cnpj.js';\nimport { stripCpf } from '../strip/cpf.js';\nimport { stripIeSpRural } from '../strip/inscricao-estadual-produtor-rural.js';\nimport { stripInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { stripNfeChave } from '../strip/nfe-chave.js';\nimport { stripPisPasep } from '../strip/pis-pasep.js';\nimport { stripPlaca } from '../strip/placa.js';\nimport { stripRenavam } from '../strip/renavam.js';\nimport { stripTituloEleitor } from '../strip/titulo-eleitor.js';\nimport { extractTelefoneDigits, normalizeTelefoneDigits } from '../strip/telefone.js';\n\nexport type SanitizableDocumentType =\n | 'cpf'\n | 'cnpj'\n | 'cep'\n | 'placa'\n | 'pis-pasep'\n | 'telefone'\n | 'cnh'\n | 'renavam'\n | 'titulo-eleitor'\n | 'nfe-chave'\n | 'boleto'\n | 'cartao-credito'\n | 'inscricao-estadual'\n | 'inscricao-estadual-produtor-rural';\n\nexport type FixResult = {\n value: string;\n fixes: string[];\n};\n\nfunction trimFix(raw: string): FixResult {\n const trimmed = raw.trim();\n const fixes: string[] = [];\n if (trimmed !== raw) {\n fixes.push('trimmed');\n }\n return { value: trimmed, fixes };\n}\n\nfunction digitsFix(value: string, fixes: string[]): FixResult {\n const digits = value.replace(/\\D/g, '');\n if (digits !== value) {\n fixes.push('removed_non_digits');\n }\n return { value: digits, fixes };\n}\n\nfunction upperAndStripSeparators(value: string, fixes: string[]): FixResult {\n const upper = value.toUpperCase();\n if (upper !== value) {\n fixes.push('uppercased');\n }\n const stripped = upper.replace(/[^A-Z0-9]/g, '');\n if (stripped !== upper) {\n fixes.push('removed_separators');\n }\n return { value: stripped, fixes };\n}\n\nfunction placaFix(value: string, fixes: string[]): FixResult {\n const upper = value.toUpperCase();\n if (upper !== value) {\n fixes.push('uppercased');\n }\n if (/[-.\\s/]/.test(value)) {\n fixes.push('removed_separators');\n }\n return { value: stripPlaca(upper), fixes };\n}\n\nfunction telefoneFix(value: string, fixes: string[]): FixResult {\n if (/[\\s()-]/.test(value)) {\n fixes.push('removed_mask_chars');\n }\n const digitsOnly = extractTelefoneDigits(value);\n const normalized = normalizeTelefoneDigits(value);\n if (normalized !== digitsOnly && normalized.length > 0) {\n fixes.push('normalized_national');\n }\n return { value: normalized, fixes };\n}\n\nfunction ieProdutorRuralFix(value: string, fixes: string[]): FixResult {\n const upper = value.toUpperCase();\n if (upper !== value) {\n fixes.push('uppercased');\n }\n if (/^[Pp]/.test(upper)) {\n fixes.push('preserved_p_prefix');\n }\n return { value: stripIeSpRural(upper), fixes };\n}\n\nexport function applyFixes(raw: string, type: SanitizableDocumentType): FixResult {\n const { value: trimmed, fixes } = trimFix(raw);\n\n switch (type) {\n case 'cpf':\n case 'cep':\n case 'pis-pasep':\n case 'cnh':\n case 'renavam':\n case 'nfe-chave':\n case 'cartao-credito':\n case 'boleto':\n case 'titulo-eleitor':\n case 'inscricao-estadual':\n return digitsFix(trimmed, fixes);\n case 'cnpj':\n return upperAndStripSeparators(trimmed, fixes);\n case 'placa':\n return placaFix(trimmed, fixes);\n case 'telefone':\n return telefoneFix(trimmed, fixes);\n case 'inscricao-estadual-produtor-rural':\n return ieProdutorRuralFix(trimmed, fixes);\n default: {\n const _exhaustive: never = type;\n return { value: _exhaustive, fixes };\n }\n }\n}\n\n/** Validates canonical strip output matches fix pipeline (used in tests). */\nexport function stripForType(value: string, type: SanitizableDocumentType): string {\n switch (type) {\n case 'cpf':\n return stripCpf(value);\n case 'cnpj':\n return stripCnpj(value);\n case 'cep':\n return stripCep(value);\n case 'placa':\n return stripPlaca(value);\n case 'pis-pasep':\n return stripPisPasep(value);\n case 'telefone':\n return normalizeTelefoneDigits(value);\n case 'cnh':\n return stripCnh(value);\n case 'renavam':\n return stripRenavam(value);\n case 'titulo-eleitor':\n return stripTituloEleitor(value);\n case 'nfe-chave':\n return stripNfeChave(value);\n case 'boleto':\n return value.replace(/\\D/g, '');\n case 'cartao-credito':\n return value.replace(/\\D/g, '');\n case 'inscricao-estadual':\n return stripInscricaoEstadual(value);\n case 'inscricao-estadual-produtor-rural':\n return stripIeSpRural(value);\n default: {\n const _exhaustive: never = type;\n return _exhaustive;\n }\n }\n}\n"]}
import { formatTelefone } from './chunk-PNPESCSP.js';
import { formatTituloEleitor } from './chunk-EVULAGR5.js';
import { formatIeProdutorRural } from './chunk-54UWHK5L.js';
import { formatNfeChave } from './chunk-JKDU7QYP.js';
import { formatPisPasep } from './chunk-VSW3NBJQ.js';
import { formatPixKey } from './chunk-IYOPXJLY.js';
import { formatPlaca } from './chunk-YD5MPZWY.js';
import { formatRenavam } from './chunk-LAEUXOF6.js';
import { formatCpf } from './chunk-TJCE4TVX.js';
import { formatInscricaoEstadual } from './chunk-665E36SC.js';
import { formatBoleto } from './chunk-XWHGXSQV.js';
import { formatCartaoCredito } from './chunk-B6A7VF4R.js';
import { formatCep } from './chunk-MESOO5GZ.js';
import { formatCnh } from './chunk-VWVQWN2G.js';
import { formatCnpj } from './chunk-RMTHCPIV.js';
// src/mask/index.ts
var MASKABLE_DOCUMENT_TYPES = [
"cpf",
"cnpj",
"cep",
"placa",
"pis-pasep",
"telefone",
"cnh",
"renavam",
"titulo-eleitor",
"nfe-chave",
"boleto",
"cartao-credito",
"inscricao-estadual",
"inscricao-estadual-produtor-rural",
"pix"
];
function isMaskableDocumentType(type) {
return MASKABLE_DOCUMENT_TYPES.includes(type);
}
function mask(raw, type, options = {}) {
if (type === "inscricao-estadual" && !options.uf) {
return {
ok: false,
code: "UNSUPPORTED_FORMAT",
message: "UF is required for inscricao-estadual masking"
};
}
return dispatchMask(raw, type, options);
}
function maskRuntime(type, raw, options = {}) {
if (!isMaskableDocumentType(type)) {
return { ok: false, code: "UNSUPPORTED_FORMAT", message: `Unknown document type: ${type}` };
}
return mask(raw, type, options);
}
function dispatchMask(raw, type, options) {
switch (type) {
case "cpf":
return formatCpf(raw);
case "cnpj":
return formatCnpj(raw);
case "cep":
return formatCep(raw);
case "placa":
return formatPlaca(raw);
case "pis-pasep":
return formatPisPasep(raw);
case "telefone":
return formatTelefone(raw);
case "cnh":
return formatCnh(raw);
case "renavam":
return formatRenavam(raw);
case "titulo-eleitor":
return formatTituloEleitor(raw);
case "nfe-chave":
return formatNfeChave(raw);
case "boleto":
return formatBoleto(raw);
case "cartao-credito":
return formatCartaoCredito(raw);
case "inscricao-estadual":
return formatInscricaoEstadual(raw, { uf: options.uf });
case "inscricao-estadual-produtor-rural":
return formatIeProdutorRural(raw);
case "pix":
return formatPixKey(raw);
default: {
const _exhaustive = type;
return {
ok: false,
code: "UNSUPPORTED_FORMAT",
message: `Unsupported type: ${String(_exhaustive)}`
};
}
}
}
export { MASKABLE_DOCUMENT_TYPES, isMaskableDocumentType, mask, maskRuntime };
//# sourceMappingURL=chunk-ASQ2XIN2.js.map
//# sourceMappingURL=chunk-ASQ2XIN2.js.map
{"version":3,"sources":["../src/mask/index.ts"],"names":[],"mappings":"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","file":"chunk-ASQ2XIN2.js","sourcesContent":["/**\n * Unified display mask — delegates to existing `format*` (BR-MASK-001).\n * @see docs/use-cases/UC-003-format-document.md\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { formatInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { formatBoleto } from '../format/boleto.js';\nimport { formatCartaoCredito } from '../format/cartao-credito.js';\nimport { formatCep } from '../format/cep.js';\nimport { formatCnh } from '../format/cnh.js';\nimport { formatCnpj } from '../format/cnpj.js';\nimport { formatCpf } from '../format/cpf.js';\nimport { formatIeProdutorRural } from '../format/inscricao-estadual-produtor-rural.js';\nimport { formatNfeChave } from '../format/nfe-chave.js';\nimport { formatPisPasep } from '../format/pis-pasep.js';\nimport { formatPixKey } from '../format/pix.js';\nimport { formatPlaca } from '../format/placa.js';\nimport { formatRenavam } from '../format/renavam.js';\nimport { formatTelefone } from '../format/telefone.js';\nimport { formatTituloEleitor } from '../format/titulo-eleitor.js';\nimport type { FormatResult, UfCode } from '../types/validation-result.js';\n\nexport type MaskableDocumentType =\n | 'cpf'\n | 'cnpj'\n | 'cep'\n | 'placa'\n | 'pis-pasep'\n | 'telefone'\n | 'cnh'\n | 'renavam'\n | 'titulo-eleitor'\n | 'nfe-chave'\n | 'boleto'\n | 'cartao-credito'\n | 'inscricao-estadual'\n | 'inscricao-estadual-produtor-rural'\n | 'pix';\n\nexport const MASKABLE_DOCUMENT_TYPES = [\n 'cpf',\n 'cnpj',\n 'cep',\n 'placa',\n 'pis-pasep',\n 'telefone',\n 'cnh',\n 'renavam',\n 'titulo-eleitor',\n 'nfe-chave',\n 'boleto',\n 'cartao-credito',\n 'inscricao-estadual',\n 'inscricao-estadual-produtor-rural',\n 'pix',\n] as const satisfies readonly MaskableDocumentType[];\n\nexport type MaskOptions = {\n uf?: UfCode;\n};\n\nexport function isMaskableDocumentType(type: string): type is MaskableDocumentType {\n return (MASKABLE_DOCUMENT_TYPES as readonly string[]).includes(type);\n}\n\nexport function mask(\n raw: string,\n type: MaskableDocumentType,\n options: MaskOptions = {},\n): FormatResult {\n if (type === 'inscricao-estadual' && !options.uf) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'UF is required for inscricao-estadual masking',\n };\n }\n\n return dispatchMask(raw, type, options);\n}\n\n/** Runtime guard for dynamic callers (non-exhaustive type string). */\nexport function maskRuntime(\n type: string,\n raw: string,\n options: MaskOptions = {},\n): FormatResult {\n if (!isMaskableDocumentType(type)) {\n return { ok: false, code: 'UNSUPPORTED_FORMAT', message: `Unknown document type: ${type}` };\n }\n return mask(raw, type, options);\n}\n\nfunction dispatchMask(raw: string, type: MaskableDocumentType, options: MaskOptions): FormatResult {\n switch (type) {\n case 'cpf':\n return formatCpf(raw);\n case 'cnpj':\n return formatCnpj(raw);\n case 'cep':\n return formatCep(raw);\n case 'placa':\n return formatPlaca(raw);\n case 'pis-pasep':\n return formatPisPasep(raw);\n case 'telefone':\n return formatTelefone(raw);\n case 'cnh':\n return formatCnh(raw);\n case 'renavam':\n return formatRenavam(raw);\n case 'titulo-eleitor':\n return formatTituloEleitor(raw);\n case 'nfe-chave':\n return formatNfeChave(raw);\n case 'boleto':\n return formatBoleto(raw);\n case 'cartao-credito':\n return formatCartaoCredito(raw);\n case 'inscricao-estadual':\n return formatInscricaoEstadual(raw, { uf: options.uf as UfCode });\n case 'inscricao-estadual-produtor-rural':\n return formatIeProdutorRural(raw);\n case 'pix':\n return formatPixKey(raw);\n default: {\n const _exhaustive: never = type;\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: `Unsupported type: ${String(_exhaustive)}`,\n };\n }\n }\n}\n"]}
import { formatTelefone } from './chunk-PNPESCSP.js';
import { formatTituloEleitor } from './chunk-EVULAGR5.js';
import { formatIeProdutorRural } from './chunk-54UWHK5L.js';
import { formatNfeChave } from './chunk-JKDU7QYP.js';
import { formatPisPasep } from './chunk-VSW3NBJQ.js';
import { formatPixKey } from './chunk-IYOPXJLY.js';
import { formatPlaca } from './chunk-YD5MPZWY.js';
import { formatRenavam } from './chunk-LAEUXOF6.js';
import { formatCpf } from './chunk-TJCE4TVX.js';
import { computeRenavamCheckDigit, RENAVAM_BASE_LENGTH } from './chunk-I66ZRSEN.js';
import { ANATEL_DDDS, validateTelefone } from './chunk-EFEE6CMO.js';
import { TITULO_ELEITOR_UF_BY_CODE, validateTituloEleitor, TITULO_ELEITOR_SEQUENTIAL_LENGTH, computeTituloEleitorCheckDigits, TITULO_ELEITOR_GOLDEN_PRIMARY, TITULO_ELEITOR_GOLDEN_SP_SPECIAL } from './chunk-CSVGWTCG.js';
import { validateInscricaoEstadual, formatInscricaoEstadual } from './chunk-665E36SC.js';
import { validateIeSpRural, computeIeSpCheckDigit, IE_SP_DV1_WEIGHTS, IE_SP_RURAL_GOLDEN, IE_SP_GOLDEN, IE_MT_GOLDEN_LEGACY, IE_DF_GOLDEN, computeIeToCheckDigit, computeIeRoCheckDigit, computeIeCyclicMod11CheckDigit, computeIeRrCheckDigit, computeIeAmCheckDigit, computeIeAlCheckDigit, IE_AP_PREFIX, computeIeApCheckDigit, IE_GO_PREFIXES, computeIeGoCheckDigit, computeIePeCheckDigit, computeIeBaModule, computeIeBaCheckDigit, computeIeMgFirstCheckDigit, computeIeMgSecondCheckDigit, IE_MT_PREFIX, computeIeMtCheckDigit, IE_DF_PREFIX, computeIeDfCheckDigit, IE_DF_DV1_WEIGHTS, IE_DF_DV2_WEIGHTS, IE_SP_DV2_WEIGHTS, IE_RR_PREFIX, computeIeCeCheckDigit, IE_AL_PREFIX, computeIePrStyleCheckDigit, IE_RN_PREFIX, IE_MA_PREFIX, IE_PA_PREFIX, IE_MS_PREFIX, computeIeAcCheckDigit, IE_AC_PREFIX } from './chunk-CDNOUZEI.js';
import { NFE_IBGE_UF_CODES, validateNfeChave, NFE_MODELO_NFE, computeNfeChaveCheckDigit, NFE_CHAVE_GOLDEN_PRIMARY } from './chunk-AO6UTQ4A.js';
import { PIS_PASEP_DV_WEIGHTS, PIS_PASEP_BASE_LENGTH } from './chunk-JLCQ7MGC.js';
import { PLACA_LEGACY_PATTERN, PLACA_MERCOSUL_PATTERN, validatePlaca } from './chunk-3LMDBXU6.js';
import { formatBoleto } from './chunk-XWHGXSQV.js';
import { buildArrecadacaoGoldenPair, validateArrecadacao, validateCodigoBarras } from './chunk-N6RQICAP.js';
import { convertCodigoBarrasToLinhaDigits, BOLETO_GOLDEN_LINHA_STRIPPED, computeModulo11BarcodeDv, BOLETO_CURRENCY_REAL } from './chunk-E2EFGMWA.js';
import { validateBrCode, buildStaticPixBrCode, BRCODE_GOLDEN_STATIC_EVP } from './chunk-V7UJ55KW.js';
import { validatePixEvpKey, PIX_GOLDEN_EVP } from './chunk-H3MLGGFI.js';
import { CPF_DV1_WEIGHTS, CPF_DV2_WEIGHTS, CPF_BASE_LENGTH } from './chunk-63G7QO73.js';
import { formatCartaoCredito } from './chunk-B6A7VF4R.js';
import { detectCardBrand, validateCartaoCredito, CARTAO_GOLDEN_AMEX, CARTAO_GOLDEN_MASTERCARD, CARTAO_GOLDEN_VISA, HIPERCARD_IIN_PREFIXES, ELO_IIN_PREFIXES } from './chunk-ANWQBKGN.js';
import { formatCep } from './chunk-MESOO5GZ.js';
import { validateCep } from './chunk-TE6NSONR.js';
import { formatCnh } from './chunk-VWVQWN2G.js';
import { computeCnhCheckDigits, CNH_BASE_LENGTH } from './chunk-YNVMVDFN.js';
import { formatCnpj } from './chunk-RMTHCPIV.js';
import { CNPJ_DV1_WEIGHTS, cnpjCharValue, CNPJ_DV2_WEIGHTS, CNPJ_BASE_LENGTH } from './chunk-FBARVLLP.js';
import { computeCheckDigit } from './chunk-OTZHMJYE.js';
// src/generate/apply-mask.ts
function applyMask(type, value) {
switch (type) {
case "cpf": {
const result = formatCpf(value);
return result.ok ? result.formatted : value;
}
case "cnpj": {
const result = formatCnpj(value);
return result.ok ? result.formatted : value;
}
case "cep": {
const result = formatCep(value);
return result.ok ? result.formatted : value;
}
case "placa": {
const result = formatPlaca(value);
return result.ok ? result.formatted : value;
}
case "pis-pasep": {
const result = formatPisPasep(value);
return result.ok ? result.formatted : value;
}
case "renavam": {
const result = formatRenavam(value);
return result.ok ? result.formatted : value;
}
case "cnh": {
const result = formatCnh(value);
return result.ok ? result.formatted : value;
}
case "telefone": {
const result = formatTelefone(value);
return result.ok ? result.formatted : value;
}
case "cartao-credito": {
const result = formatCartaoCredito(value);
return result.ok ? result.formatted : value;
}
case "inscricao-estadual":
return value;
case "titulo-eleitor": {
const result = formatTituloEleitor(value);
return result.ok ? result.formatted : value;
}
case "pix": {
const result = formatPixKey(value);
return result.ok ? result.formatted : value;
}
case "nfe-chave": {
const result = formatNfeChave(value);
return result.ok ? result.formatted : value;
}
case "boleto": {
const result = formatBoleto(value);
return result.ok ? result.formatted : value;
}
case "boleto-arrecadacao":
return value;
case "brcode":
return value;
case "inscricao-estadual-produtor-rural": {
const result = formatIeProdutorRural(value);
return result.ok ? result.formatted : value;
}
default: {
const _exhaustive = type;
return _exhaustive;
}
}
}
// src/generate/boleto.ts
var MAX_ATTEMPTS = 80;
var BANK_CODES = ["001", "033", "104", "237", "341", "756"];
function buildBarcode(rng, validateBarcode) {
const bank = rng.pick(BANK_CODES);
const fator = rng.digits(4);
const valor = rng.digits(10);
const freeField = rng.digits(25);
const withoutDv = bank + BOLETO_CURRENCY_REAL + fator + valor + freeField;
const dv = computeModulo11BarcodeDv(withoutDv);
const barcode = `${bank}${BOLETO_CURRENCY_REAL}${String(dv)}${fator}${valor}${freeField}`;
if (!validateBarcode(barcode).ok) {
return null;
}
return barcode;
}
function generateBoletoValue(rng, validateBarcode = validateCodigoBarras) {
for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
const barcode = buildBarcode(rng, validateBarcode);
if (barcode) {
return convertCodigoBarrasToLinhaDigits(barcode);
}
}
return BOLETO_GOLDEN_LINHA_STRIPPED;
}
// src/generate/boleto-arrecadacao.ts
var ARRECADACAO_GOLDEN_LINHA = buildArrecadacaoGoldenPair({
segment: "4",
valueType: "6",
value: "00000008123",
company: "4567",
free: "89012345678901234567890123"
}).linha;
var MAX_ATTEMPTS2 = 80;
var VALUE_TYPES = ["6", "7", "8", "9"];
var SEGMENTS = ["1", "2", "3", "4", "5", "6", "7", "9"];
function applyArrecadacaoLinhaMask(linha) {
return `${linha.slice(0, 11)} ${linha.slice(11, 23)} ${linha.slice(23, 35)} ${linha.slice(35, 47)} ${linha.charAt(47)}`;
}
function generateBoletoArrecadacaoValue(rng, validate = validateArrecadacao) {
for (let attempt = 0; attempt < MAX_ATTEMPTS2; attempt++) {
const pair = buildArrecadacaoGoldenPair({
segment: rng.pick(SEGMENTS),
valueType: rng.pick(VALUE_TYPES),
value: rng.digits(11),
company: rng.digits(4),
free: rng.digits(25)
});
if (validate(pair.linha).ok) {
return pair.linha;
}
}
return ARRECADACAO_GOLDEN_LINHA;
}
// src/generate/pix.ts
var MAX_ATTEMPTS3 = 80;
function seededUuidV4(rng) {
const bytes = Array.from({ length: 16 }, () => rng.int(0, 255));
bytes[6] = bytes[6] & 15 | 64;
bytes[8] = bytes[8] & 63 | 128;
const hex = bytes.map((byte) => byte.toString(16).padStart(2, "0")).join("");
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;
}
function generatePixEvpValue(rng, validate = validatePixEvpKey) {
for (let attempt = 0; attempt < MAX_ATTEMPTS3; attempt++) {
const candidate = seededUuidV4(rng);
if (validate(candidate).ok) {
return candidate;
}
}
return PIX_GOLDEN_EVP;
}
// src/generate/brcode.ts
var MAX_ATTEMPTS4 = 50;
var DEFAULT_MERCHANT_NAME = "Merchant Test";
var DEFAULT_MERCHANT_CITY = "BRASILIA";
function generateBrcodeValue(rng, input = {}, validate = validateBrCode) {
const pixKey = input.pixKey ?? generatePixEvpValue(rng);
const merchantName = input.merchantName ?? DEFAULT_MERCHANT_NAME;
const merchantCity = input.merchantCity ?? DEFAULT_MERCHANT_CITY;
for (let attempt = 0; attempt < MAX_ATTEMPTS4; attempt++) {
const payload = buildStaticPixBrCode({
pixKey,
merchantName,
merchantCity,
...input.amount ? { amount: input.amount } : {},
...input.txid ? { txid: input.txid } : {}
});
if (validate(payload).ok) {
return payload;
}
}
return BRCODE_GOLDEN_STATIC_EVP;
}
// src/generate/random.ts
function mulberry32(seed) {
let state = seed >>> 0;
return () => {
state = state + 1831565813 >>> 0;
let t = state;
t = Math.imul(t ^ t >>> 15, t | 1);
t ^= t + Math.imul(t ^ t >>> 7, t | 61);
return ((t ^ t >>> 14) >>> 0) / 4294967296;
};
}
function createRandomSource(seed) {
const nextFn = seed === void 0 ? () => Math.random() : mulberry32(seed);
return {
next: nextFn,
int(min, max) {
return Math.floor(nextFn() * (max - min + 1)) + min;
},
digit() {
return String(Math.floor(nextFn() * 10));
},
digits(count) {
let out = "";
for (let i = 0; i < count; i++) {
out += this.digit();
}
return out;
},
letter() {
const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
return letters.charAt(this.int(0, letters.length - 1));
},
pick(items) {
return items[this.int(0, items.length - 1)];
}
};
}
function hasRepeatedChars(value) {
const first = value[0];
for (let i = 1; i < value.length; i++) {
if (value[i] !== first) {
return false;
}
}
return true;
}
function computeLuhnCheckDigit(partial) {
let sum = 0;
let double = true;
for (let i = partial.length - 1; i >= 0; i--) {
let digit = Number(partial.charAt(i));
if (double) {
digit *= 2;
if (digit > 9) {
digit -= 9;
}
}
sum += digit;
double = !double;
}
return String((10 - sum % 10) % 10);
}
// src/generate/cartao-credito.ts
var MAX_ATTEMPTS5 = 50;
var GENERATABLE_CARD_BRANDS = [
"visa",
"mastercard",
"amex",
"elo",
"hipercard"
];
var BRAND_FALLBACKS = {
visa: CARTAO_GOLDEN_VISA,
mastercard: CARTAO_GOLDEN_MASTERCARD,
amex: CARTAO_GOLDEN_AMEX,
elo: "401178000000006",
hipercard: "606282000000003"
};
function buildBrandPartial(rng, brand) {
switch (brand) {
case "visa":
return `411111${rng.digits(9)}`;
case "mastercard":
return `${rng.pick(["51", "52", "53", "54", "55"])}${rng.digits(13)}`;
case "amex":
return `${rng.pick(["34", "37"])}${rng.digits(12)}`;
case "elo": {
const prefix = rng.pick(ELO_IIN_PREFIXES);
return `${prefix}${rng.digits(16 - prefix.length - 1)}`;
}
case "hipercard": {
const prefix = rng.pick(HIPERCARD_IIN_PREFIXES);
return `${prefix}${rng.digits(16 - prefix.length - 1)}`;
}
default: {
const _exhaustive = brand;
return _exhaustive;
}
}
}
function buildRandomPartial(rng) {
const length = rng.int(13, 16);
return rng.digits(length - 1);
}
function generateCartaoCreditoValue(rng, brand, detectBrand = detectCardBrand, validate = validateCartaoCredito) {
for (let attempt = 0; attempt < MAX_ATTEMPTS5; attempt++) {
const partial = brand ? buildBrandPartial(rng, brand) : buildRandomPartial(rng);
if (hasRepeatedChars(partial)) {
continue;
}
const candidate = partial + computeLuhnCheckDigit(partial);
if (!validate(candidate).ok) {
continue;
}
if (brand && detectBrand(candidate) !== brand) {
continue;
}
return candidate;
}
if (brand) {
return BRAND_FALLBACKS[brand];
}
return CARTAO_GOLDEN_VISA;
}
function isGeneratableCardBrand(brand) {
return GENERATABLE_CARD_BRANDS.includes(brand);
}
// src/generate/cpf-alpha.ts
var CPF_ALPHA_GENERATE_STUB = {
ok: false,
code: "CPF_ALPHA_SPEC_PENDING",
message: "Alphanumeric CPF generation is pending official RFB specification \u2014 numeric CPF only until published"
};
function rejectCpfAlphanumericGenerate() {
return CPF_ALPHA_GENERATE_STUB;
}
function assertCpfAlphanumericGenerateAllowed() {
throw new Error(`${CPF_ALPHA_GENERATE_STUB.code}: ${CPF_ALPHA_GENERATE_STUB.message}`);
}
// src/generate/inscricao-estadual-produtor-rural.ts
var MAX_ATTEMPTS6 = 50;
function generateIeProdutorRuralValue(rng, validate = validateIeSpRural) {
for (let attempt = 0; attempt < MAX_ATTEMPTS6; attempt++) {
const dvInput = rng.digits(8);
const dv = String(computeIeSpCheckDigit(dvInput, IE_SP_DV1_WEIGHTS));
const suffix = rng.digits(3);
const candidate = `P${dvInput}${dv}${suffix}`;
if (validate(candidate).ok) {
return candidate;
}
}
return IE_SP_RURAL_GOLDEN;
}
// src/generate/inscricao-estadual.ts
var MAX_ATTEMPTS7 = 50;
var IE_GENERATE_FALLBACKS = {
AC: "0113253877910",
AL: "248682954",
AM: "917050150",
AP: "039045820",
BA: "63984300",
CE: "836182316",
DF: IE_DF_GOLDEN,
ES: "463921810",
GO: "112237118",
MA: "123517680",
MG: "2490944173923",
MS: "282570926",
MT: IE_MT_GOLDEN_LEGACY,
PA: "153662476",
PB: "312029063",
PE: "064970639",
PI: "465180426",
PR: "0031595584",
RJ: "06540481",
RN: "204502292",
RO: "39206839474860",
RR: "247681047",
RS: "3288345503",
SC: "632480718",
SE: "826594042",
SP: IE_SP_GOLDEN,
TO: "27035910938"
};
function prefixBody8(rng, prefix) {
return prefix + rng.digits(8 - prefix.length);
}
function buildCeStyle(rng, prefix) {
const body = prefix ? prefixBody8(rng, prefix) : rng.digits(8);
return body + String(computeIeCeCheckDigit(body));
}
function buildDualTrailing(rng, prefix, bodyLength, computeFirst, computeSecond) {
const body = prefix + rng.digits(bodyLength - prefix.length);
const first = computeFirst(body);
const second = computeSecond(body + String(first));
return body + String(first) + String(second);
}
function generateSpValue(rng) {
const head = rng.digits(8);
const middle = rng.digits(2);
let partial = `${head}0${middle}0`;
const dv1 = computeIeSpCheckDigit(partial, IE_SP_DV1_WEIGHTS);
partial = `${head}${String(dv1)}${middle}0`;
const dv2 = computeIeSpCheckDigit(partial, IE_SP_DV2_WEIGHTS);
return `${head}${String(dv1)}${middle}${String(dv2)}`;
}
function generateDfValue(rng) {
const core11 = IE_DF_PREFIX + rng.digits(9);
const dv1 = computeIeDfCheckDigit(core11, IE_DF_DV1_WEIGHTS);
const dv2 = computeIeDfCheckDigit(core11, IE_DF_DV2_WEIGHTS, true, dv1);
return `${core11}${String(dv1)}${String(dv2)}`;
}
function generateMtValue(rng) {
const padded = `${IE_MT_PREFIX.padStart(4, "0")}${rng.digits(6)}`;
const dv = computeIeMtCheckDigit(padded.slice(0, 10));
return `${padded.slice(0, 10)}${String(dv)}`;
}
function generateMgValue(rng) {
const body = rng.digits(11);
const first = computeIeMgFirstCheckDigit(body);
const second = computeIeMgSecondCheckDigit(body + String(first));
return body + String(first) + String(second);
}
function generateBaValue(rng) {
const body = rng.digits(6);
const mod = computeIeBaModule(`${body}00`);
const second = computeIeBaCheckDigit(body, mod);
const first = computeIeBaCheckDigit(body + String(second), mod);
return body + String(first) + String(second);
}
function generatePeValue(rng) {
const body = rng.digits(7);
const first = computeIePeCheckDigit(body);
const second = computeIePeCheckDigit(body + String(first));
return body + String(first) + String(second);
}
function generateGoValue(rng) {
const prefix = rng.pick([...IE_GO_PREFIXES]);
const body = prefix + rng.digits(6);
return body + String(computeIeGoCheckDigit(body));
}
function generateApValue(rng) {
const body = IE_AP_PREFIX + rng.digits(6);
const dv = computeIeApCheckDigit(body);
return body + String(dv);
}
var GENERATORS = {
SP: generateSpValue,
DF: generateDfValue,
MT: generateMtValue,
MG: generateMgValue,
BA: generateBaValue,
PE: generatePeValue,
GO: generateGoValue,
AP: generateApValue,
AC: (rng) => buildDualTrailing(rng, IE_AC_PREFIX, 11, computeIeAcCheckDigit, computeIeAcCheckDigit),
AL: (rng) => {
const body = prefixBody8(rng, IE_AL_PREFIX);
return body + String(computeIeAlCheckDigit(body));
},
AM: (rng) => {
const body = rng.digits(8);
return body + String(computeIeAmCheckDigit(body));
},
CE: (rng) => buildCeStyle(rng),
ES: (rng) => buildCeStyle(rng),
SC: (rng) => buildCeStyle(rng),
SE: (rng) => buildCeStyle(rng),
PB: (rng) => buildCeStyle(rng),
PI: (rng) => buildCeStyle(rng),
MS: (rng) => buildCeStyle(rng, IE_MS_PREFIX),
PA: (rng) => buildCeStyle(rng, IE_PA_PREFIX),
MA: (rng) => buildCeStyle(rng, IE_MA_PREFIX),
RN: (rng) => buildCeStyle(rng, IE_RN_PREFIX),
RR: (rng) => {
const body = prefixBody8(rng, IE_RR_PREFIX);
return body + String(computeIeRrCheckDigit(body));
},
PR: (rng) => buildDualTrailing(rng, "", 8, computeIePrStyleCheckDigit, computeIePrStyleCheckDigit),
RJ: (rng) => {
const body = rng.digits(7);
return body + String(computeIeCyclicMod11CheckDigit(body, 2, 7));
},
RS: (rng) => {
const body = rng.digits(9);
return body + String(computeIeCyclicMod11CheckDigit(body, 2, 9));
},
RO: (rng) => {
const body = rng.digits(13);
return body + String(computeIeRoCheckDigit(body));
},
TO: (rng) => {
const body = rng.digits(8);
return body + String(computeIeToCheckDigit(body));
}
};
function generateInscricaoEstadualValue(uf, rng, validate = validateInscricaoEstadual) {
const generator = GENERATORS[uf];
for (let attempt = 0; attempt < MAX_ATTEMPTS7; attempt++) {
const candidate = generator(rng);
if (validate(candidate, { uf }).ok) {
return candidate;
}
}
return IE_GENERATE_FALLBACKS[uf];
}
// src/generate/nfe-chave.ts
var MAX_ATTEMPTS8 = 80;
var NFE_UF_CODES = [...NFE_IBGE_UF_CODES];
function generateNfeChaveValue(rng, validate = validateNfeChave) {
for (let attempt = 0; attempt < MAX_ATTEMPTS8; attempt++) {
const cuf = String(rng.pick(NFE_UF_CODES)).padStart(2, "0");
const aamm = rng.digits(4);
const cnpj = rng.digits(14);
const serie = rng.digits(3);
const invoiceNumber = rng.digits(9);
const emissionType = String(rng.int(0, 9));
const numericCode = rng.digits(8);
const base43 = `${cuf}${aamm}${cnpj}${NFE_MODELO_NFE}${serie}${invoiceNumber}${emissionType}${numericCode}`;
const candidate = `${base43}${String(computeNfeChaveCheckDigit(base43))}`;
if (validate(candidate).ok) {
return candidate;
}
}
return NFE_CHAVE_GOLDEN_PRIMARY;
}
// src/generate/titulo-eleitor.ts
var MAX_ATTEMPTS9 = 50;
var TITULO_ELEITOR_CODE_BY_UF = Object.fromEntries(
Object.entries(TITULO_ELEITOR_UF_BY_CODE).map(([code, uf]) => [uf, Number(code)])
);
var TITULO_GENERATE_FALLBACKS = {
SP: TITULO_ELEITOR_GOLDEN_SP_SPECIAL,
SC: TITULO_ELEITOR_GOLDEN_PRIMARY
};
function deterministicTituloFallback(uf) {
const ufCode = TITULO_ELEITOR_CODE_BY_UF[uf];
const ufDigits = String(ufCode).padStart(2, "0");
const sequential = "12345678";
const checkDigits = computeTituloEleitorCheckDigits(sequential, ufDigits, ufCode);
return `${sequential}${ufDigits}${checkDigits}`;
}
function generateTituloEleitorValue(uf, rng, validate = validateTituloEleitor) {
const ufCode = TITULO_ELEITOR_CODE_BY_UF[uf];
const ufDigits = String(ufCode).padStart(2, "0");
for (let attempt = 0; attempt < MAX_ATTEMPTS9; attempt++) {
const sequential = rng.digits(TITULO_ELEITOR_SEQUENTIAL_LENGTH);
if (hasRepeatedChars(sequential)) {
continue;
}
const checkDigits = computeTituloEleitorCheckDigits(sequential, ufDigits, ufCode);
const candidate = `${sequential}${ufDigits}${checkDigits}`;
if (validate(candidate).ok) {
return candidate;
}
}
return TITULO_GENERATE_FALLBACKS[uf] ?? deterministicTituloFallback(uf);
}
// src/generate/index.ts
var CNPJ_ALNUM_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var MAX_ATTEMPTS10 = 50;
function digitValue(char) {
return Number(char);
}
function randomBaseDigits(rng, length) {
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
const base = rng.digits(length);
if (!hasRepeatedChars(base)) {
return base;
}
}
return "123456789".slice(0, length).padEnd(length, "1");
}
function randomCnpjAlphanumericBase(rng) {
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
let base = "";
for (let i = 0; i < CNPJ_BASE_LENGTH; i++) {
base += CNPJ_ALNUM_CHARS.charAt(rng.int(0, CNPJ_ALNUM_CHARS.length - 1));
}
if (!hasRepeatedChars(base)) {
return base;
}
}
return "12ABC34501DE";
}
function generateCpfValue(rng) {
const base = randomBaseDigits(rng, CPF_BASE_LENGTH);
const dv1 = String(computeCheckDigit(base, CPF_DV1_WEIGHTS, digitValue));
const dv2 = String(computeCheckDigit(base + dv1, CPF_DV2_WEIGHTS, digitValue));
return base + dv1 + dv2;
}
function generateCnpjValue(rng, format) {
if (format === "alphanumeric") {
const base2 = randomCnpjAlphanumericBase(rng);
const dv12 = String(computeCheckDigit(base2, CNPJ_DV1_WEIGHTS, cnpjCharValue));
const dv22 = String(computeCheckDigit(base2 + dv12, CNPJ_DV2_WEIGHTS, cnpjCharValue));
return base2 + dv12 + dv22;
}
const base = randomBaseDigits(rng, CNPJ_BASE_LENGTH);
const dv1 = String(computeCheckDigit(base, CNPJ_DV1_WEIGHTS, digitValue));
const dv2 = String(computeCheckDigit(base + dv1, CNPJ_DV2_WEIGHTS, digitValue));
return base + dv1 + dv2;
}
function generateCepValue(rng) {
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
const value = rng.digits(8);
if (value !== "00000000" && validateCep(value).ok) {
return value;
}
}
return "01310100";
}
function generatePlacaValue(rng, format) {
const mode = format === "legacy" ? "legacy" : "mercosul";
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
const letters = rng.letter() + rng.letter() + rng.letter();
let candidate;
if (mode === "legacy") {
candidate = letters + rng.digits(4);
if (!PLACA_LEGACY_PATTERN.test(candidate)) {
continue;
}
} else {
candidate = letters + rng.digit() + rng.pick(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]) + rng.digits(2);
if (!PLACA_MERCOSUL_PATTERN.test(candidate)) {
continue;
}
}
if (validatePlaca(candidate).ok) {
return candidate;
}
}
return mode === "legacy" ? "ABC1234" : "ABC1D23";
}
function generatePisValue(rng) {
const base = randomBaseDigits(rng, PIS_PASEP_BASE_LENGTH);
const dv = String(computeCheckDigit(base, PIS_PASEP_DV_WEIGHTS, digitValue));
return base + dv;
}
function generateRenavamValue(rng) {
const base = randomBaseDigits(rng, RENAVAM_BASE_LENGTH);
const dv = String(computeRenavamCheckDigit(base));
return base + dv;
}
function generateCnhValue(rng) {
const base = randomBaseDigits(rng, CNH_BASE_LENGTH);
return base + computeCnhCheckDigits(base);
}
function generateTelefoneValue(rng, format) {
const ddd = rng.pick(ANATEL_DDDS);
const useFixo = format === "fixo";
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
const local = useFixo ? String(rng.int(2, 5)) + rng.digits(7) : `9${rng.digits(8)}`;
const candidate = ddd + local;
if (validateTelefone(candidate).ok) {
return candidate;
}
}
return useFixo ? "1133333333" : "11999999999";
}
function generateCartaoValue(rng, brand) {
return generateCartaoCreditoValue(rng, brand);
}
function applyInscricaoEstadualGenerateMask(value, uf) {
const formatted = formatInscricaoEstadual(value, { uf });
return formatted.ok ? formatted.formatted : value;
}
function generate(type, options = {}) {
const rng = createRandomSource(options.seed);
let value;
switch (type) {
case "cpf":
if (options.format === "alphanumeric") {
assertCpfAlphanumericGenerateAllowed();
}
value = generateCpfValue(rng);
break;
case "cnpj":
value = generateCnpjValue(rng, options.format);
break;
case "cep":
value = generateCepValue(rng);
break;
case "placa":
value = generatePlacaValue(rng, options.format);
break;
case "pis-pasep":
value = generatePisValue(rng);
break;
case "renavam":
value = generateRenavamValue(rng);
break;
case "cnh":
value = generateCnhValue(rng);
break;
case "telefone":
value = generateTelefoneValue(rng, options.format);
break;
case "cartao-credito":
value = generateCartaoValue(rng, options.brand);
break;
case "inscricao-estadual": {
if (!options.uf) {
throw new Error("UF is required for inscricao-estadual generation");
}
value = generateInscricaoEstadualValue(options.uf, rng);
break;
}
case "titulo-eleitor": {
if (!options.uf) {
throw new Error("UF is required for titulo-eleitor generation");
}
value = generateTituloEleitorValue(options.uf, rng);
break;
}
case "pix":
value = generatePixEvpValue(rng);
break;
case "nfe-chave":
value = generateNfeChaveValue(rng);
break;
case "brcode":
value = generateBrcodeValue(rng, {
pixKey: options.pixKey,
merchantName: options.merchantName,
merchantCity: options.merchantCity,
amount: options.amount,
txid: options.txid
});
break;
case "boleto":
value = generateBoletoValue(rng);
break;
case "boleto-arrecadacao":
value = generateBoletoArrecadacaoValue(rng);
break;
case "inscricao-estadual-produtor-rural":
value = generateIeProdutorRuralValue(rng);
break;
default: {
const _exhaustive = type;
throw new Error(`Unsupported generatable type: ${String(_exhaustive)}`);
}
}
if (options.masked && type === "inscricao-estadual") {
return applyInscricaoEstadualGenerateMask(value, options.uf);
}
if (options.masked && type === "boleto-arrecadacao") {
return applyArrecadacaoLinhaMask(value);
}
return options.masked ? applyMask(type, value) : value;
}
export { CPF_ALPHA_GENERATE_STUB, GENERATABLE_CARD_BRANDS, applyArrecadacaoLinhaMask, assertCpfAlphanumericGenerateAllowed, generate, isGeneratableCardBrand, rejectCpfAlphanumericGenerate };
//# sourceMappingURL=chunk-BA3FAVK4.js.map
//# sourceMappingURL=chunk-BA3FAVK4.js.map

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

import { stripForType } from './chunk-5V6N4JWQ.js';
import { validateRenavam } from './chunk-I66ZRSEN.js';
import { validateTelefone } from './chunk-EFEE6CMO.js';
import { validateTituloEleitor } from './chunk-CSVGWTCG.js';
import { validateInscricaoEstadual } from './chunk-665E36SC.js';
import { validateIeSpRural } from './chunk-CDNOUZEI.js';
import { validateNfeChave } from './chunk-AO6UTQ4A.js';
import { validatePisPasep } from './chunk-JLCQ7MGC.js';
import { validatePlaca } from './chunk-3LMDBXU6.js';
import { validateBoleto } from './chunk-AU6TW3GH.js';
import { validateBrCode } from './chunk-V7UJ55KW.js';
import { validatePixKey } from './chunk-H3MLGGFI.js';
import { validateCpf } from './chunk-63G7QO73.js';
import { validateCartaoCredito } from './chunk-ANWQBKGN.js';
import { validateCep } from './chunk-TE6NSONR.js';
import { validateCnh } from './chunk-YNVMVDFN.js';
import { validateCnpj } from './chunk-FBARVLLP.js';
// src/platform/normalize.ts
var SANITIZABLE_PLATFORM_TYPES = /* @__PURE__ */ new Set([
"cpf",
"cnpj",
"cep",
"placa",
"pis-pasep",
"telefone",
"cnh",
"renavam",
"titulo-eleitor",
"nfe-chave",
"boleto",
"cartao-credito",
"inscricao-estadual",
"inscricao-estadual-produtor-rural"
]);
function isSanitizablePlatformType(type) {
return SANITIZABLE_PLATFORM_TYPES.has(type);
}
function stripForPlatform(raw, type) {
if (type === "pix" || type === "brcode") {
return raw;
}
if (isSanitizablePlatformType(type)) {
return stripForType(raw, type);
}
return raw;
}
function normalizeForPlatform(raw, type, options = {}) {
const trimmed = raw.trim();
const stripped = stripForPlatform(trimmed, type);
const validated = tryValidatedCanonical(stripped, type, options.uf);
return validated ?? stripped;
}
function tryValidatedCanonical(value, type, uf) {
switch (type) {
case "cpf": {
const result = validateCpf(value);
return result.ok ? result.value : null;
}
case "cnpj": {
const result = validateCnpj(value);
return result.ok ? result.value : null;
}
case "cep": {
const result = validateCep(value);
return result.ok ? result.value : null;
}
case "placa": {
const result = validatePlaca(value);
return result.ok ? result.value : null;
}
case "pis-pasep": {
const result = validatePisPasep(value);
return result.ok ? result.value : null;
}
case "telefone": {
const result = validateTelefone(value);
return result.ok ? result.value : null;
}
case "cnh": {
const result = validateCnh(value);
return result.ok ? result.value : null;
}
case "renavam": {
const result = validateRenavam(value);
return result.ok ? result.value : null;
}
case "titulo-eleitor": {
const result = validateTituloEleitor(value);
return result.ok ? result.value : null;
}
case "nfe-chave": {
const result = validateNfeChave(value);
return result.ok ? result.value : null;
}
case "boleto": {
const result = validateBoleto(value);
return result.ok ? result.value : null;
}
case "cartao-credito": {
const result = validateCartaoCredito(value);
return result.ok ? result.value : null;
}
case "inscricao-estadual": {
if (!uf) {
return null;
}
const result = validateInscricaoEstadual(value, { uf });
return result.ok ? result.value : null;
}
case "inscricao-estadual-produtor-rural": {
const result = validateIeSpRural(value);
return result.ok ? result.value : null;
}
case "pix": {
const result = validatePixKey(value);
return result.ok ? result.value : null;
}
case "brcode": {
const result = validateBrCode(value);
return result.ok ? result.value : null;
}
default: {
return null;
}
}
}
export { normalizeForPlatform };
//# sourceMappingURL=chunk-FOP5LO7W.js.map
//# sourceMappingURL=chunk-FOP5LO7W.js.map
{"version":3,"sources":["../src/platform/normalize.ts"],"names":[],"mappings":"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","file":"chunk-FOP5LO7W.js","sourcesContent":["/**\n * Canonical normalization for platform compare/diff (BR-PLATFORM-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { validateBrCode } from '../core/brcode/index.js';\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport { validateCep } from '../core/cep/index.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport { validateCnpj } from '../core/cnpj/index.js';\nimport { validateCpf } from '../core/cpf/index.js';\nimport { validateInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { validateIeSpRural } from '../core/inscricao-estadual/sp-rural.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport { validatePisPasep } from '../core/pis-pasep/index.js';\nimport { validatePlaca } from '../core/placa/index.js';\nimport { validatePixKey } from '../core/pix/index.js';\nimport { validateRenavam } from '../core/renavam/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport { stripForType } from '../sanitize/fixes.js';\nimport type { SanitizableDocumentType } from '../sanitize/index.js';\nimport type { UfCode } from '../types/validation-result.js';\nimport type { PlatformDocumentType, PlatformOptions } from './types.js';\n\nconst SANITIZABLE_PLATFORM_TYPES = new Set<PlatformDocumentType>([\n 'cpf',\n 'cnpj',\n 'cep',\n 'placa',\n 'pis-pasep',\n 'telefone',\n 'cnh',\n 'renavam',\n 'titulo-eleitor',\n 'nfe-chave',\n 'boleto',\n 'cartao-credito',\n 'inscricao-estadual',\n 'inscricao-estadual-produtor-rural',\n]);\n\nfunction isSanitizablePlatformType(type: PlatformDocumentType): type is SanitizableDocumentType {\n return SANITIZABLE_PLATFORM_TYPES.has(type);\n}\n\nfunction stripForPlatform(raw: string, type: PlatformDocumentType): string {\n if (type === 'pix' || type === 'brcode') {\n return raw;\n }\n if (isSanitizablePlatformType(type)) {\n return stripForType(raw, type);\n }\n return raw;\n}\n\nexport function normalizeForPlatform(\n raw: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): string {\n const trimmed = raw.trim();\n const stripped = stripForPlatform(trimmed, type);\n const validated = tryValidatedCanonical(stripped, type, options.uf);\n return validated ?? stripped;\n}\n\nfunction tryValidatedCanonical(\n value: string,\n type: PlatformDocumentType,\n uf?: UfCode,\n): string | null {\n switch (type) {\n case 'cpf': {\n const result = validateCpf(value);\n return result.ok ? result.value : null;\n }\n case 'cnpj': {\n const result = validateCnpj(value);\n return result.ok ? result.value : null;\n }\n case 'cep': {\n const result = validateCep(value);\n return result.ok ? result.value : null;\n }\n case 'placa': {\n const result = validatePlaca(value);\n return result.ok ? result.value : null;\n }\n case 'pis-pasep': {\n const result = validatePisPasep(value);\n return result.ok ? result.value : null;\n }\n case 'telefone': {\n const result = validateTelefone(value);\n return result.ok ? result.value : null;\n }\n case 'cnh': {\n const result = validateCnh(value);\n return result.ok ? result.value : null;\n }\n case 'renavam': {\n const result = validateRenavam(value);\n return result.ok ? result.value : null;\n }\n case 'titulo-eleitor': {\n const result = validateTituloEleitor(value);\n return result.ok ? result.value : null;\n }\n case 'nfe-chave': {\n const result = validateNfeChave(value);\n return result.ok ? result.value : null;\n }\n case 'boleto': {\n const result = validateBoleto(value);\n return result.ok ? result.value : null;\n }\n case 'cartao-credito': {\n const result = validateCartaoCredito(value);\n return result.ok ? result.value : null;\n }\n case 'inscricao-estadual': {\n if (!uf) {\n return null;\n }\n const result = validateInscricaoEstadual(value, { uf });\n return result.ok ? result.value : null;\n }\n case 'inscricao-estadual-produtor-rural': {\n const result = validateIeSpRural(value);\n return result.ok ? result.value : null;\n }\n case 'pix': {\n const result = validatePixKey(value);\n return result.ok ? result.value : null;\n }\n case 'brcode': {\n const result = validateBrCode(value);\n return result.ok ? result.value : null;\n }\n default: {\n return null;\n }\n }\n}\n"]}
import { normalizeForPlatform } from './chunk-FOP5LO7W.js';
// src/platform/types.ts
var PLATFORM_DOCUMENT_TYPES = [
"cpf",
"cnpj",
"cep",
"placa",
"pis-pasep",
"telefone",
"cnh",
"renavam",
"titulo-eleitor",
"nfe-chave",
"boleto",
"cartao-credito",
"inscricao-estadual",
"inscricao-estadual-produtor-rural",
"pix",
"brcode"
];
function isPlatformDocumentType(type) {
return PLATFORM_DOCUMENT_TYPES.includes(type);
}
// src/compare/index.ts
function compare(a, b, type, options = {}) {
const left = normalizeForPlatform(a, type, options);
const right = normalizeForPlatform(b, type, options);
return { equal: left === right };
}
function compareRuntime(a, b, type, options = {}) {
if (!isPlatformDocumentType(type)) {
return { equal: false, code: "UNSUPPORTED_FORMAT", message: `Unknown document type: ${type}` };
}
return compare(a, b, type, options);
}
export { compare, compareRuntime };
//# sourceMappingURL=chunk-JCWQDTZB.js.map
//# sourceMappingURL=chunk-JCWQDTZB.js.map
{"version":3,"sources":["../src/platform/types.ts","../src/compare/index.ts"],"names":[],"mappings":";;;AAKO,IAAM,uBAAA,GAA0B;AAAA,EACrC,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mCAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA;AAMO,SAAS,uBAAuB,IAAA,EAA4C;AACjF,EAAA,OAAQ,uBAAA,CAA8C,SAAS,IAAI,CAAA;AACrE;;;AClBO,SAAS,QACd,CAAA,EACA,CAAA,EACA,IAAA,EACA,OAAA,GAA2B,EAAC,EACb;AACf,EAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,CAAA,EAAG,IAAA,EAAM,OAAO,CAAA;AAClD,EAAA,MAAM,KAAA,GAAQ,oBAAA,CAAqB,CAAA,EAAG,IAAA,EAAM,OAAO,CAAA;AACnD,EAAA,OAAO,EAAE,KAAA,EAAO,IAAA,KAAS,KAAA,EAAM;AACjC;AAGO,SAAS,eACd,CAAA,EACA,CAAA,EACA,IAAA,EACA,OAAA,GAA2B,EAAC,EACmD;AAC/E,EAAA,IAAI,CAAC,sBAAA,CAAuB,IAAI,CAAA,EAAG;AACjC,IAAA,OAAO,EAAE,OAAO,KAAA,EAAO,IAAA,EAAM,sBAAsB,OAAA,EAAS,CAAA,uBAAA,EAA0B,IAAI,CAAA,CAAA,EAAG;AAAA,EAC/F;AACA,EAAA,OAAO,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,IAAA,EAAM,OAAO,CAAA;AACpC","file":"chunk-JCWQDTZB.js","sourcesContent":["import type { SanitizableDocumentType } from '../sanitize/index.js';\n\n/** Document types supported by compare, batch, and diff platform APIs. */\nexport type PlatformDocumentType = SanitizableDocumentType | 'pix' | 'brcode';\n\nexport const PLATFORM_DOCUMENT_TYPES = [\n 'cpf',\n 'cnpj',\n 'cep',\n 'placa',\n 'pis-pasep',\n 'telefone',\n 'cnh',\n 'renavam',\n 'titulo-eleitor',\n 'nfe-chave',\n 'boleto',\n 'cartao-credito',\n 'inscricao-estadual',\n 'inscricao-estadual-produtor-rural',\n 'pix',\n 'brcode',\n] as const satisfies readonly PlatformDocumentType[];\n\nexport type PlatformOptions = {\n uf?: import('../types/validation-result.js').UfCode;\n};\n\nexport function isPlatformDocumentType(type: string): type is PlatformDocumentType {\n return (PLATFORM_DOCUMENT_TYPES as readonly string[]).includes(type);\n}\n","/**\n * Unified equality check — normalizes via strip/validate canonical (BR-COMPARE-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { normalizeForPlatform } from '../platform/normalize.js';\nimport { isPlatformDocumentType } from '../platform/types.js';\nimport type { PlatformDocumentType, PlatformOptions } from '../platform/types.js';\n\nexport type CompareResult = {\n equal: boolean;\n};\n\nexport function compare(\n a: string,\n b: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): CompareResult {\n const left = normalizeForPlatform(a, type, options);\n const right = normalizeForPlatform(b, type, options);\n return { equal: left === right };\n}\n\n/** Runtime guard for dynamic callers (non-exhaustive type string). */\nexport function compareRuntime(\n a: string,\n b: string,\n type: string,\n options: PlatformOptions = {},\n): CompareResult | { equal: false; code: 'UNSUPPORTED_FORMAT'; message: string } {\n if (!isPlatformDocumentType(type)) {\n return { equal: false, code: 'UNSUPPORTED_FORMAT', message: `Unknown document type: ${type}` };\n }\n return compare(a, b, type, options);\n}\n"]}
// src/core/telefone/data/ddd-metadata.json
var ddd_metadata_default = {
id: "telefone-ddd",
nome: "Anatel DDD Geographic Lookup",
fonte: "Anatel Plano de Numera\xE7\xE3o + IBGE municipios",
endpoints: [
"https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais",
"packages/br-validators/src/ibge/data/municipios.json"
],
capturadoEm: "2026-06-23",
atualizadoEm: "2026-06-23T14:34:40.909Z",
contagens: {
ddds: 67
},
alteracoes: {
adicionados: 67,
removidos: 0,
alterados: 0,
comparadoCom: null
},
verificacao: {
agendamento: "semanal",
workflow: "data-refresh-bot.yml",
ultimaExecucao: "2026-06-23T14:34:40.909Z"
},
documentacao: "docs/OFFICIAL-SOURCES.md#anatel-ddd-lookup"
};
export { ddd_metadata_default };
//# sourceMappingURL=chunk-KTEQPYYN.js.map
//# sourceMappingURL=chunk-KTEQPYYN.js.map
{"version":3,"sources":["../src/core/telefone/data/ddd-metadata.json"],"names":[],"mappings":";AAAA,IAAA,oBAAA,GAAA;AAAA,EACE,EAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAQ,8BAAA;AAAA,EACR,KAAA,EAAS,mDAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX,8EAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,IAAA,EAAQ;AAAA,GACV;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,EAAA;AAAA,IACf,SAAA,EAAa,CAAA;AAAA,IACb,SAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAgB;AAAA,GAClB;AAAA,EACA,WAAA,EAAe;AAAA,IACb,WAAA,EAAe,SAAA;AAAA,IACf,QAAA,EAAY,sBAAA;AAAA,IACZ,cAAA,EAAkB;AAAA,GACpB;AAAA,EACA,YAAA,EAAgB;AAClB","file":"chunk-KTEQPYYN.js","sourcesContent":["{\n \"id\": \"telefone-ddd\",\n \"nome\": \"Anatel DDD Geographic Lookup\",\n \"fonte\": \"Anatel Plano de Numeração + IBGE municipios\",\n \"endpoints\": [\n \"https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais\",\n \"packages/br-validators/src/ibge/data/municipios.json\"\n ],\n \"capturadoEm\": \"2026-06-23\",\n \"atualizadoEm\": \"2026-06-23T14:34:40.909Z\",\n \"contagens\": {\n \"ddds\": 67\n },\n \"alteracoes\": {\n \"adicionados\": 67,\n \"removidos\": 0,\n \"alterados\": 0,\n \"comparadoCom\": null\n },\n \"verificacao\": {\n \"agendamento\": \"semanal\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-23T14:34:40.909Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#anatel-ddd-lookup\"\n}\n"]}
import { normalizeForPlatform } from './chunk-FOP5LO7W.js';
// src/diff/index.ts
function diff(a, b, type, options = {}) {
const left = normalizeForPlatform(a, type, options);
const right = normalizeForPlatform(b, type, options);
if (left === right) {
return { changed: false, fields: [] };
}
const leftFields = splitFields(left, type);
const rightFields = splitFields(right, type);
const keys = /* @__PURE__ */ new Set([...Object.keys(leftFields), ...Object.keys(rightFields)]);
const fields = [];
for (const field of keys) {
const leftValue = leftFields[field];
const rightValue = rightFields[field];
if (leftValue !== rightValue) {
fields.push({ field, a: leftValue, b: rightValue });
}
}
return { changed: fields.length > 0, fields };
}
function splitFields(value, type) {
switch (type) {
case "cpf":
return {
base: value.slice(0, 9),
dv: value.slice(9, 11)
};
case "cnpj":
return {
base: value.slice(0, 12),
dv: value.slice(12, 14)
};
case "cep":
return {
prefix: value.slice(0, 5),
suffix: value.slice(5, 8)
};
case "telefone":
return { ddd: value.slice(0, 2), subscriber: value.slice(2) };
case "pis-pasep":
return {
base: value.slice(0, 10),
dv: value.slice(10, 11)
};
case "cnh":
return {
base: value.slice(0, 9),
dv1: value.slice(9, 10),
dv2: value.slice(10, 11)
};
case "renavam":
return {
base: value.slice(0, 10),
dv: value.slice(10, 11)
};
case "titulo-eleitor":
return {
sequential: value.slice(0, 8),
uf: value.slice(8, 10),
dv: value.slice(10, 12)
};
case "nfe-chave":
return {
cUF: value.slice(0, 2),
aamm: value.slice(2, 6),
cnpj: value.slice(6, 20),
mod: value.slice(20, 22),
serie: value.slice(22, 25),
nNF: value.slice(25, 34),
tpEmis: value.slice(34, 35),
cNF: value.slice(35, 43),
cDV: value.slice(43, 44)
};
case "placa":
return { value };
case "boleto":
case "cartao-credito":
case "inscricao-estadual":
case "inscricao-estadual-produtor-rural":
case "pix":
case "brcode":
return { value };
default: {
return { value };
}
}
}
export { diff };
//# sourceMappingURL=chunk-LRUZVPLR.js.map
//# sourceMappingURL=chunk-LRUZVPLR.js.map
{"version":3,"sources":["../src/diff/index.ts"],"names":[],"mappings":"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","file":"chunk-LRUZVPLR.js","sourcesContent":["/**\n * Field-level document diff — per-type structural decomposition (BR-DIFF-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { normalizeForPlatform } from '../platform/normalize.js';\nimport type { PlatformDocumentType, PlatformOptions } from '../platform/types.js';\n\nexport type DiffField = {\n field: string;\n a: string;\n b: string;\n};\n\nexport type DiffResult = {\n changed: boolean;\n fields: DiffField[];\n};\n\nexport function diff(\n a: string,\n b: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): DiffResult {\n const left = normalizeForPlatform(a, type, options);\n const right = normalizeForPlatform(b, type, options);\n\n if (left === right) {\n return { changed: false, fields: [] };\n }\n\n const leftFields = splitFields(left, type);\n const rightFields = splitFields(right, type);\n const keys = new Set([...Object.keys(leftFields), ...Object.keys(rightFields)]);\n const fields: DiffField[] = [];\n\n for (const field of keys) {\n const leftValue = leftFields[field];\n const rightValue = rightFields[field];\n if (leftValue !== rightValue) {\n fields.push({ field, a: leftValue, b: rightValue });\n }\n }\n\n return { changed: fields.length > 0, fields };\n}\n\nfunction splitFields(value: string, type: PlatformDocumentType): Record<string, string> {\n switch (type) {\n case 'cpf':\n return {\n base: value.slice(0, 9),\n dv: value.slice(9, 11),\n };\n case 'cnpj':\n return {\n base: value.slice(0, 12),\n dv: value.slice(12, 14),\n };\n case 'cep':\n return {\n prefix: value.slice(0, 5),\n suffix: value.slice(5, 8),\n };\n case 'telefone':\n return { ddd: value.slice(0, 2), subscriber: value.slice(2) };\n case 'pis-pasep':\n return {\n base: value.slice(0, 10),\n dv: value.slice(10, 11),\n };\n case 'cnh':\n return {\n base: value.slice(0, 9),\n dv1: value.slice(9, 10),\n dv2: value.slice(10, 11),\n };\n case 'renavam':\n return {\n base: value.slice(0, 10),\n dv: value.slice(10, 11),\n };\n case 'titulo-eleitor':\n return {\n sequential: value.slice(0, 8),\n uf: value.slice(8, 10),\n dv: value.slice(10, 12),\n };\n case 'nfe-chave':\n return {\n cUF: value.slice(0, 2),\n aamm: value.slice(2, 6),\n cnpj: value.slice(6, 20),\n mod: value.slice(20, 22),\n serie: value.slice(22, 25),\n nNF: value.slice(25, 34),\n tpEmis: value.slice(34, 35),\n cNF: value.slice(35, 43),\n cDV: value.slice(43, 44),\n };\n case 'placa':\n return { value };\n case 'boleto':\n case 'cartao-credito':\n case 'inscricao-estadual':\n case 'inscricao-estadual-produtor-rural':\n case 'pix':\n case 'brcode':\n return { value };\n default: {\n const _exhaustive: never = type;\n void _exhaustive;\n return { value };\n }\n }\n}\n"]}
import { applyFixes } from './chunk-5V6N4JWQ.js';
import { validateRenavam } from './chunk-I66ZRSEN.js';
import { validateTelefone } from './chunk-EFEE6CMO.js';
import { validateTituloEleitor } from './chunk-CSVGWTCG.js';
import { validateInscricaoEstadual } from './chunk-665E36SC.js';
import { validateIeSpRural } from './chunk-CDNOUZEI.js';
import { validateNfeChave } from './chunk-AO6UTQ4A.js';
import { validatePisPasep } from './chunk-JLCQ7MGC.js';
import { validatePlaca } from './chunk-3LMDBXU6.js';
import { validateBoleto } from './chunk-AU6TW3GH.js';
import { validateCpf } from './chunk-63G7QO73.js';
import { validateCartaoCredito } from './chunk-ANWQBKGN.js';
import { validateCep } from './chunk-TE6NSONR.js';
import { validateCnh } from './chunk-YNVMVDFN.js';
import { validateCnpj } from './chunk-FBARVLLP.js';
// src/sanitize/index.ts
function sanitize(raw, type, options = {}) {
const { value: fixed, fixes } = applyFixes(raw, type);
if (type === "inscricao-estadual" && !options.uf) {
return {
ok: false,
code: "UNSUPPORTED_FORMAT",
message: "UF is required for inscricao-estadual sanitization"
};
}
const validation = validateFixed(fixed, type, options.uf);
if (!validation.ok) {
return { ok: false, code: validation.code, message: validation.message };
}
return { ok: true, value: validation.value, fixes };
}
function validateFixed(value, type, uf) {
switch (type) {
case "cpf": {
const result = validateCpf(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cnpj": {
const result = validateCnpj(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cep": {
const result = validateCep(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "placa": {
const result = validatePlaca(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "pis-pasep": {
const result = validatePisPasep(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "telefone": {
const result = validateTelefone(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cnh": {
const result = validateCnh(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "renavam": {
const result = validateRenavam(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "titulo-eleitor": {
const result = validateTituloEleitor(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "nfe-chave": {
const result = validateNfeChave(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "boleto": {
const result = validateBoleto(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cartao-credito": {
const result = validateCartaoCredito(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "inscricao-estadual": {
const result = validateInscricaoEstadual(value, { uf });
return result.ok ? { ok: true, value: result.value } : result;
}
case "inscricao-estadual-produtor-rural": {
const result = validateIeSpRural(value);
return result.ok ? { ok: true, value: result.value } : result;
}
default: {
const _exhaustive = type;
return { ok: false, code: "UNSUPPORTED_FORMAT", message: `Unsupported type: ${String(_exhaustive)}` };
}
}
}
export { sanitize };
//# sourceMappingURL=chunk-MKYCKCZ6.js.map
//# sourceMappingURL=chunk-MKYCKCZ6.js.map
{"version":3,"sources":["../src/sanitize/index.ts"],"names":[],"mappings":"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","file":"chunk-MKYCKCZ6.js","sourcesContent":["/**\n * ETL-style document sanitization — applies fixes then validates (BR-SANITIZE-001).\n * @see docs/VALIDATION-RULES.md\n */\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport { validateCep } from '../core/cep/index.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport { validateCnpj } from '../core/cnpj/index.js';\nimport { validateCpf } from '../core/cpf/index.js';\nimport { validateInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { validateIeSpRural } from '../core/inscricao-estadual/sp-rural.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport { validatePisPasep } from '../core/pis-pasep/index.js';\nimport { validatePlaca } from '../core/placa/index.js';\nimport { validateRenavam } from '../core/renavam/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport type { UfCode, ValidationErrorCode } from '../types/validation-result.js';\nimport { applyFixes } from './fixes.js';\n\nexport type SanitizableDocumentType =\n | 'cpf'\n | 'cnpj'\n | 'cep'\n | 'placa'\n | 'pis-pasep'\n | 'telefone'\n | 'cnh'\n | 'renavam'\n | 'titulo-eleitor'\n | 'nfe-chave'\n | 'boleto'\n | 'cartao-credito'\n | 'inscricao-estadual'\n | 'inscricao-estadual-produtor-rural';\n\nexport type SanitizeOptions = {\n uf?: UfCode;\n};\n\nexport type SanitizeSuccess = {\n ok: true;\n value: string;\n fixes: string[];\n};\n\nexport type SanitizeFailure = {\n ok: false;\n code: ValidationErrorCode;\n message: string;\n};\n\nexport type SanitizeResult = SanitizeSuccess | SanitizeFailure;\n\nexport type { FixResult } from './fixes.js';\n\ntype ValidateFixedResult =\n | { ok: true; value: string }\n | { ok: false; code: ValidationErrorCode; message: string };\n\nexport function sanitize(\n raw: string,\n type: SanitizableDocumentType,\n options: SanitizeOptions = {},\n): SanitizeResult {\n const { value: fixed, fixes } = applyFixes(raw, type);\n\n if (type === 'inscricao-estadual' && !options.uf) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'UF is required for inscricao-estadual sanitization',\n };\n }\n\n const validation = validateFixed(fixed, type, options.uf);\n if (!validation.ok) {\n return { ok: false, code: validation.code, message: validation.message };\n }\n\n return { ok: true, value: validation.value, fixes };\n}\n\nfunction validateFixed(value: string, type: SanitizableDocumentType, uf?: UfCode): ValidateFixedResult {\n switch (type) {\n case 'cpf': {\n const result = validateCpf(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnpj': {\n const result = validateCnpj(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cep': {\n const result = validateCep(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'placa': {\n const result = validatePlaca(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'pis-pasep': {\n const result = validatePisPasep(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'telefone': {\n const result = validateTelefone(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnh': {\n const result = validateCnh(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'renavam': {\n const result = validateRenavam(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'titulo-eleitor': {\n const result = validateTituloEleitor(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'nfe-chave': {\n const result = validateNfeChave(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'boleto': {\n const result = validateBoleto(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cartao-credito': {\n const result = validateCartaoCredito(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual': {\n const result = validateInscricaoEstadual(value, { uf: uf as UfCode });\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual-produtor-rural': {\n const result = validateIeSpRural(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n default: {\n const _exhaustive: never = type;\n return { ok: false, code: 'UNSUPPORTED_FORMAT', message: `Unsupported type: ${String(_exhaustive)}` };\n }\n }\n}\n"]}
import { validateRenavam } from './chunk-I66ZRSEN.js';
import { validateTelefone } from './chunk-EFEE6CMO.js';
import { validateTituloEleitor } from './chunk-CSVGWTCG.js';
import { validateInscricaoEstadual } from './chunk-665E36SC.js';
import { validateIeSpRural } from './chunk-CDNOUZEI.js';
import { validateNfeChave } from './chunk-AO6UTQ4A.js';
import { validatePisPasep } from './chunk-JLCQ7MGC.js';
import { validatePlaca } from './chunk-3LMDBXU6.js';
import { validateBoleto } from './chunk-AU6TW3GH.js';
import { validateBrCode } from './chunk-V7UJ55KW.js';
import { validatePixKey } from './chunk-H3MLGGFI.js';
import { validateCpf } from './chunk-63G7QO73.js';
import { validateCartaoCredito } from './chunk-ANWQBKGN.js';
import { validateCep } from './chunk-TE6NSONR.js';
import { validateCnh } from './chunk-YNVMVDFN.js';
import { validateCnpj } from './chunk-FBARVLLP.js';
// src/platform/validate-dispatch.ts
function validateForPlatform(input, type, options = {}) {
if (type === "inscricao-estadual" && !options.uf) {
return {
ok: false,
code: "UNSUPPORTED_FORMAT",
message: "UF is required for inscricao-estadual validation"
};
}
switch (type) {
case "cpf": {
const result = validateCpf(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cnpj": {
const result = validateCnpj(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cep": {
const result = validateCep(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "placa": {
const result = validatePlaca(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "pis-pasep": {
const result = validatePisPasep(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "telefone": {
const result = validateTelefone(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cnh": {
const result = validateCnh(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "renavam": {
const result = validateRenavam(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "titulo-eleitor": {
const result = validateTituloEleitor(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "nfe-chave": {
const result = validateNfeChave(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "boleto": {
const result = validateBoleto(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cartao-credito": {
const result = validateCartaoCredito(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "inscricao-estadual": {
const result = validateInscricaoEstadual(input, { uf: options.uf });
return result.ok ? { ok: true, value: result.value } : result;
}
case "inscricao-estadual-produtor-rural": {
const result = validateIeSpRural(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "pix": {
const result = validatePixKey(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "brcode": {
const result = validateBrCode(input);
return result.ok ? { ok: true, value: result.value } : result;
}
default: {
const _exhaustive = type;
return {
ok: false,
code: "UNSUPPORTED_FORMAT",
message: `Unsupported type: ${String(_exhaustive)}`
};
}
}
}
// src/batch/index.ts
function batch(inputs, type, options = {}) {
const valid = [];
const invalid = [];
inputs.forEach((input, index) => {
const result = validateForPlatform(input, type, options);
if (result.ok) {
valid.push({ index, input, value: result.value });
} else {
invalid.push({ index, input, code: result.code, message: result.message });
}
});
return {
valid,
invalid,
summary: {
total: inputs.length,
valid: valid.length,
invalid: invalid.length
}
};
}
export { batch };
//# sourceMappingURL=chunk-N5CER3QZ.js.map
//# sourceMappingURL=chunk-N5CER3QZ.js.map
{"version":3,"sources":["../src/platform/validate-dispatch.ts","../src/batch/index.ts"],"names":[],"mappings":"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","file":"chunk-N5CER3QZ.js","sourcesContent":["import { validateBrCode } from '../core/brcode/index.js';\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport { validateCep } from '../core/cep/index.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport { validateCnpj } from '../core/cnpj/index.js';\nimport { validateCpf } from '../core/cpf/index.js';\nimport { validateInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { validateIeSpRural } from '../core/inscricao-estadual/sp-rural.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport { validatePisPasep } from '../core/pis-pasep/index.js';\nimport { validatePlaca } from '../core/placa/index.js';\nimport { validatePixKey } from '../core/pix/index.js';\nimport { validateRenavam } from '../core/renavam/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport type { UfCode, ValidationErrorCode } from '../types/validation-result.js';\nimport type { PlatformDocumentType, PlatformOptions } from './types.js';\n\nexport type ValidateDispatchSuccess = { ok: true; value: string };\nexport type ValidateDispatchFailure = {\n ok: false;\n code: ValidationErrorCode;\n message: string;\n};\nexport type ValidateDispatchResult = ValidateDispatchSuccess | ValidateDispatchFailure;\n\nexport function validateForPlatform(\n input: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): ValidateDispatchResult {\n if (type === 'inscricao-estadual' && !options.uf) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'UF is required for inscricao-estadual validation',\n };\n }\n\n switch (type) {\n case 'cpf': {\n const result = validateCpf(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnpj': {\n const result = validateCnpj(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cep': {\n const result = validateCep(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'placa': {\n const result = validatePlaca(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'pis-pasep': {\n const result = validatePisPasep(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'telefone': {\n const result = validateTelefone(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnh': {\n const result = validateCnh(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'renavam': {\n const result = validateRenavam(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'titulo-eleitor': {\n const result = validateTituloEleitor(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'nfe-chave': {\n const result = validateNfeChave(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'boleto': {\n const result = validateBoleto(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cartao-credito': {\n const result = validateCartaoCredito(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual': {\n const result = validateInscricaoEstadual(input, { uf: options.uf as UfCode });\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual-produtor-rural': {\n const result = validateIeSpRural(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'pix': {\n const result = validatePixKey(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'brcode': {\n const result = validateBrCode(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n default: {\n const _exhaustive: never = type;\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: `Unsupported type: ${String(_exhaustive)}`,\n };\n }\n }\n}\n","/**\n * Batch validation — maps `validate*` per row, never throws (BR-BATCH-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { validateForPlatform } from '../platform/validate-dispatch.js';\nimport type { PlatformDocumentType, PlatformOptions } from '../platform/types.js';\nimport type { ValidationErrorCode } from '../types/validation-result.js';\n\nexport type BatchValidEntry = {\n index: number;\n input: string;\n value: string;\n};\n\nexport type BatchInvalidEntry = {\n index: number;\n input: string;\n code: ValidationErrorCode;\n message: string;\n};\n\nexport type BatchSummary = {\n total: number;\n valid: number;\n invalid: number;\n};\n\nexport type BatchResult = {\n valid: BatchValidEntry[];\n invalid: BatchInvalidEntry[];\n summary: BatchSummary;\n};\n\nexport function batch(\n inputs: readonly string[],\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): BatchResult {\n const valid: BatchValidEntry[] = [];\n const invalid: BatchInvalidEntry[] = [];\n\n inputs.forEach((input, index) => {\n const result = validateForPlatform(input, type, options);\n if (result.ok) {\n valid.push({ index, input, value: result.value });\n } else {\n invalid.push({ index, input, code: result.code, message: result.message });\n }\n });\n\n return {\n valid,\n invalid,\n summary: {\n total: inputs.length,\n valid: valid.length,\n invalid: invalid.length,\n },\n };\n}\n"]}
import { validateTelefone } from './chunk-EFEE6CMO.js';
import { validateTituloEleitor } from './chunk-CSVGWTCG.js';
import { validateInscricaoEstadual } from './chunk-665E36SC.js';
import { isSpRuralIeInput, validateIeProdutorRural } from './chunk-CDNOUZEI.js';
import { validateNfeChave, NFE_CHAVE_LENGTH } from './chunk-AO6UTQ4A.js';
import { validatePisPasep } from './chunk-JLCQ7MGC.js';
import { validatePlaca, PLACA_LENGTH } from './chunk-3LMDBXU6.js';
import { validateBoleto } from './chunk-AU6TW3GH.js';
import { validateArrecadacao } from './chunk-N6RQICAP.js';
import { detectBoletoInputKind } from './chunk-E2EFGMWA.js';
import { validateBrCode } from './chunk-V7UJ55KW.js';
import { validatePixKey } from './chunk-H3MLGGFI.js';
import { validateCpf } from './chunk-63G7QO73.js';
import { validateCartaoCredito, CARTAO_PAN_MIN_LENGTH, CARTAO_PAN_MAX_LENGTH } from './chunk-ANWQBKGN.js';
import { validateCep } from './chunk-TE6NSONR.js';
import { validateCnh } from './chunk-YNVMVDFN.js';
import { validateCnpj, CNPJ_LENGTH } from './chunk-FBARVLLP.js';
// src/detect/helpers.ts
function stripDigits(input) {
return input.replace(/\D/g, "");
}
function stripAlnumUpper(input) {
return input.replace(/[^A-Za-z0-9]/g, "").toUpperCase();
}
function hasLetters(input) {
return /[A-Za-z]/.test(input);
}
function looksLikeBrCode(input) {
const trimmed = input.trim();
return trimmed.startsWith("00020") && trimmed.length > 20;
}
function looksLikeBoleto(input) {
const kind = detectBoletoInputKind(input);
return kind === "linha-digitavel" || kind === "codigo-barras";
}
function isBoletoArrecadacao(input) {
return detectBoletoInputKind(input) === "arrecadacao";
}
function looksLikeNfeChave(input) {
const digits = stripDigits(input);
return digits.length === NFE_CHAVE_LENGTH && /^\d+$/.test(digits);
}
function looksLikeCnpjNumeric(input) {
const digits = stripDigits(input);
return digits.length === CNPJ_LENGTH && /^\d+$/.test(digits);
}
function looksLikeCnpjAlphanumeric(input) {
const stripped = stripAlnumUpper(input);
return stripped.length === CNPJ_LENGTH && hasLetters(input);
}
function looksLikeElevenDigits(input) {
const digits = stripDigits(input);
return digits.length === 11 && /^\d+$/.test(digits);
}
function looksLikeTituloEleitor(input) {
const digits = stripDigits(input);
return digits.length === 12 && /^\d+$/.test(digits);
}
function looksLikeCep(input) {
const digits = stripDigits(input);
return digits.length === 8 && /^\d+$/.test(digits);
}
function looksLikePlaca(input) {
const stripped = stripAlnumUpper(input);
return stripped.length === PLACA_LENGTH && /^[A-Z0-9]+$/.test(stripped);
}
function looksLikeCartao(input) {
const withoutMask = input.replace(/[\s-]/g, "");
if (/[^0-9]/.test(withoutMask)) {
return false;
}
const digits = stripDigits(input);
return digits.length >= CARTAO_PAN_MIN_LENGTH && digits.length <= CARTAO_PAN_MAX_LENGTH;
}
function looksLikeIe(input, uf) {
if (!uf) {
return false;
}
if (uf === "SP" && isSpRuralIeInput(input)) {
return true;
}
const digits = stripDigits(input);
return digits.length >= 8 && digits.length <= 14;
}
function looksLikePix(input) {
const trimmed = input.trim();
if (trimmed.includes("@")) {
return true;
}
if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(trimmed)) {
return true;
}
if (/^\+?\d/.test(trimmed)) {
const digits = stripDigits(trimmed);
return digits.length === 11 || digits.length === 14;
}
return false;
}
function looksLikeTelefone(input) {
const digits = stripDigits(input);
return digits.length >= 10 && digits.length <= 13;
}
// src/detect/index.ts
function success(type, value, format, meta) {
return { type, ok: true, value, ...format ? { format } : {}, ...meta ? { meta } : {} };
}
function tryValidators(attempts) {
for (const attempt of attempts) {
const result = attempt();
if (result) {
return result;
}
}
return null;
}
var CANDIDATES = [
{
canTry: (raw) => isBoletoArrecadacao(raw),
detect: (raw) => {
const result = validateArrecadacao(raw);
if (!result.ok) {
return null;
}
return success("boleto", result.value, "arrecadacao", {
inputKind: result.inputKind,
segment: result.segment,
valueType: result.valueType
});
}
},
{
canTry: (raw) => looksLikeBoleto(raw) && !isBoletoArrecadacao(raw),
detect: (raw) => {
const result = validateBoleto(raw);
if (!result.ok || result.format === "arrecadacao") {
return null;
}
return success("boleto", result.value, result.format, {
inputKind: result.inputKind,
situacao: result.situacao
});
}
},
{
canTry: (raw) => looksLikeNfeChave(raw),
detect: (raw) => {
const result = validateNfeChave(raw);
if (!result.ok) {
return null;
}
return success("nfe-chave", result.value, result.format, {
parsed: result.parsed,
uf: result.uf
});
}
},
{
canTry: (raw) => looksLikeBrCode(raw),
detect: (raw) => {
const result = validateBrCode(raw);
if (!result.ok) {
return null;
}
return success("brcode", result.value, result.format, {
merchantName: result.merchantName,
merchantCity: result.merchantCity,
pixKey: result.pixKey,
pixKeyType: result.pixKeyType
});
}
},
{
canTry: (raw) => looksLikeCnpjAlphanumeric(raw),
detect: (raw) => {
const result = validateCnpj(raw);
if (!result.ok) {
return null;
}
return success("cnpj", result.value, result.format);
}
},
{
canTry: (raw) => looksLikeCnpjNumeric(raw),
detect: (raw) => {
const result = validateCnpj(raw);
if (!result.ok) {
return null;
}
return success("cnpj", result.value, result.format);
}
},
{
canTry: (raw) => looksLikeElevenDigits(raw),
detect: (raw) => tryValidators([
() => {
const result = validateCpf(raw);
return result.ok ? success("cpf", result.value, result.format) : null;
},
() => {
const result = validateCnh(raw);
return result.ok ? success("cnh", result.value, result.format) : null;
},
() => {
const result = validatePisPasep(raw);
return result.ok ? success("pis-pasep", result.value, result.format) : null;
}
])
},
{
canTry: (raw) => looksLikeTituloEleitor(raw),
detect: (raw) => {
const result = validateTituloEleitor(raw);
if (!result.ok) {
return null;
}
return success("titulo-eleitor", result.value, result.format, {
ufCode: result.ufCode,
...result.uf ? { uf: result.uf } : {},
...result.exterior ? { exterior: result.exterior } : {}
});
}
},
{
canTry: (raw) => looksLikeCep(raw),
detect: (raw) => {
const result = validateCep(raw);
if (!result.ok) {
return null;
}
return success("cep", result.value, result.format);
}
},
{
canTry: (raw) => looksLikePlaca(raw),
detect: (raw) => {
const result = validatePlaca(raw);
if (!result.ok) {
return null;
}
return success("placa", result.value, result.format);
}
},
{
canTry: (raw) => looksLikePix(raw),
detect: (raw) => {
const result = validatePixKey(raw);
if (!result.ok) {
return null;
}
return success("pix", result.value, result.format, { keyType: result.keyType });
}
},
{
canTry: (raw) => looksLikeTelefone(raw),
detect: (raw) => {
const result = validateTelefone(raw);
if (!result.ok) {
return null;
}
return success("telefone", result.value, result.format, { tipo: result.tipo });
}
},
{
canTry: (raw) => looksLikeCartao(raw),
detect: (raw) => {
const result = validateCartaoCredito(raw);
if (!result.ok) {
return null;
}
return success("cartao-credito", result.value, result.format, { brand: result.brand });
}
},
{
canTry: (raw, options) => looksLikeIe(raw, options.uf),
detect: (raw, options) => {
const uf = options.uf;
if (uf === "SP" && isSpRuralIeInput(raw)) {
const result2 = validateIeProdutorRural(uf, raw);
if (!result2.ok) {
return null;
}
return success("inscricao-estadual-produtor-rural", result2.value, result2.format, { uf: result2.uf });
}
const result = validateInscricaoEstadual(raw, { uf });
if (!result.ok) {
return null;
}
return success("inscricao-estadual", result.value, result.format, { uf: result.uf });
}
}
];
function detect(raw, options = {}) {
const trimmed = raw.trim();
if (trimmed.length === 0) {
return {
type: "unknown",
ok: false,
code: "EMPTY_INPUT",
message: "Input is empty"
};
}
for (const candidate of CANDIDATES) {
if (!candidate.canTry(trimmed, options)) {
continue;
}
const result = candidate.detect(trimmed, options);
if (result?.ok) {
return result;
}
}
return {
type: "unknown",
ok: false,
code: "UNSUPPORTED_FORMAT",
message: options.uf ? "No supported document type matched the input" : "No supported document type matched the input; provide options.uf for Inscri\xE7\xE3o Estadual detection"
};
}
export { detect };
//# sourceMappingURL=chunk-PCP77SLS.js.map
//# sourceMappingURL=chunk-PCP77SLS.js.map
{"version":3,"sources":["../src/detect/helpers.ts","../src/detect/index.ts"],"names":["result"],"mappings":"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","file":"chunk-PCP77SLS.js","sourcesContent":["import { BOLETO_CODIGO_BARRAS_LENGTH, BOLETO_LINHA_LENGTH } from '../core/boleto/constants.js';\nimport { CARTAO_PAN_MAX_LENGTH, CARTAO_PAN_MIN_LENGTH } from '../core/cartao-credito/constants.js';\nimport { CNPJ_LENGTH } from '../core/cnpj/constants.js';\nimport { NFE_CHAVE_LENGTH } from '../core/nfe-chave/constants.js';\nimport { PLACA_LENGTH } from '../core/placa/constants.js';\nimport { detectBoletoInputKind } from '../core/boleto/detect.js';\nimport { isSpRuralIeInput } from '../core/inscricao-estadual/sp-rural.js';\n\nexport function stripDigits(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function stripAlnumUpper(input: string): string {\n return input.replace(/[^A-Za-z0-9]/g, '').toUpperCase();\n}\n\nexport function hasLetters(input: string): boolean {\n return /[A-Za-z]/.test(input);\n}\n\nexport function looksLikeBrCode(input: string): boolean {\n const trimmed = input.trim();\n return trimmed.startsWith('00020') && trimmed.length > 20;\n}\n\nexport function looksLikeBoleto(input: string): boolean {\n const kind = detectBoletoInputKind(input);\n return kind === 'linha-digitavel' || kind === 'codigo-barras';\n}\n\nexport function isBoletoArrecadacao(input: string): boolean {\n return detectBoletoInputKind(input) === 'arrecadacao';\n}\n\nexport function looksLikeNfeChave(input: string): boolean {\n const digits = stripDigits(input);\n return digits.length === NFE_CHAVE_LENGTH && /^\\d+$/.test(digits);\n}\n\nexport function looksLikeCnpjNumeric(input: string): boolean {\n const digits = stripDigits(input);\n return digits.length === CNPJ_LENGTH && /^\\d+$/.test(digits);\n}\n\nexport function looksLikeCnpjAlphanumeric(input: string): boolean {\n const stripped = stripAlnumUpper(input);\n return stripped.length === CNPJ_LENGTH && hasLetters(input);\n}\n\nexport function looksLikeElevenDigits(input: string): boolean {\n const digits = stripDigits(input);\n return digits.length === 11 && /^\\d+$/.test(digits);\n}\n\nexport function looksLikeTituloEleitor(input: string): boolean {\n const digits = stripDigits(input);\n return digits.length === 12 && /^\\d+$/.test(digits);\n}\n\nexport function looksLikeCep(input: string): boolean {\n const digits = stripDigits(input);\n return digits.length === 8 && /^\\d+$/.test(digits);\n}\n\nexport function looksLikePlaca(input: string): boolean {\n const stripped = stripAlnumUpper(input);\n return stripped.length === PLACA_LENGTH && /^[A-Z0-9]+$/.test(stripped);\n}\n\nexport function looksLikeCartao(input: string): boolean {\n const withoutMask = input.replace(/[\\s-]/g, '');\n if (/[^0-9]/.test(withoutMask)) {\n return false;\n }\n const digits = stripDigits(input);\n return digits.length >= CARTAO_PAN_MIN_LENGTH && digits.length <= CARTAO_PAN_MAX_LENGTH;\n}\n\nexport function looksLikeIe(input: string, uf?: string): boolean {\n if (!uf) {\n return false;\n }\n if (uf === 'SP' && isSpRuralIeInput(input)) {\n return true;\n }\n const digits = stripDigits(input);\n return digits.length >= 8 && digits.length <= 14;\n}\n\nexport function looksLikePix(input: string): boolean {\n const trimmed = input.trim();\n if (trimmed.includes('@')) {\n return true;\n }\n if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(trimmed)) {\n return true;\n }\n if (/^\\+?\\d/.test(trimmed)) {\n const digits = stripDigits(trimmed);\n return digits.length === 11 || digits.length === 14;\n }\n return false;\n}\n\nexport function looksLikeTelefone(input: string): boolean {\n const digits = stripDigits(input);\n return digits.length >= 10 && digits.length <= 13;\n}\n\nexport {\n BOLETO_CODIGO_BARRAS_LENGTH,\n BOLETO_LINHA_LENGTH,\n};\n","/**\n * Unified document type detection — delegates to existing validators (BR-DETECT-001).\n * @see docs/VALIDATION-RULES.md\n */\nimport { validateArrecadacao } from '../core/boleto/arrecadacao.js';\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateBrCode } from '../core/brcode/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport { validateCep } from '../core/cep/index.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport { validateCnpj } from '../core/cnpj/index.js';\nimport { validateCpf } from '../core/cpf/index.js';\nimport { validateInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { validateIeProdutorRural } from '../core/inscricao-estadual/validate-produtor-rural.js';\nimport { isSpRuralIeInput } from '../core/inscricao-estadual/sp-rural.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport { validatePisPasep } from '../core/pis-pasep/index.js';\nimport { validatePlaca } from '../core/placa/index.js';\nimport { validatePixKey } from '../core/pix/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport {\n isBoletoArrecadacao,\n looksLikeBoleto,\n looksLikeBrCode,\n looksLikeCartao,\n looksLikeCep,\n looksLikeCnpjAlphanumeric,\n looksLikeCnpjNumeric,\n looksLikeElevenDigits,\n looksLikeIe,\n looksLikeNfeChave,\n looksLikePix,\n looksLikePlaca,\n looksLikeTelefone,\n looksLikeTituloEleitor,\n} from './helpers.js';\nimport type { DocumentFormat, UfCode, ValidationErrorCode } from '../types/validation-result.js';\n\nexport type DetectableDocumentType =\n | 'cpf'\n | 'cnpj'\n | 'cep'\n | 'placa'\n | 'pis-pasep'\n | 'pix'\n | 'telefone'\n | 'boleto'\n | 'cartao-credito'\n | 'cnh'\n | 'renavam'\n | 'nfe-chave'\n | 'titulo-eleitor'\n | 'inscricao-estadual'\n | 'inscricao-estadual-produtor-rural'\n | 'brcode'\n | 'unknown';\n\nexport type DetectOptions = {\n uf?: UfCode;\n};\n\nexport type DetectSuccess = {\n type: DetectableDocumentType;\n ok: true;\n value: string;\n format?: DocumentFormat;\n meta?: Record<string, unknown>;\n};\n\nexport type DetectFailure = {\n type: DetectableDocumentType;\n ok: false;\n code: ValidationErrorCode;\n message: string;\n};\n\nexport type DetectResult = DetectSuccess | DetectFailure;\n\ntype Candidate = {\n canTry: (raw: string, options: DetectOptions) => boolean;\n detect: (raw: string, options: DetectOptions) => DetectResult | null;\n};\n\n/** @internal Test hook for success result branches. */\nexport function buildDetectSuccess(\n type: DetectableDocumentType,\n value: string,\n format?: DocumentFormat,\n meta?: Record<string, unknown>,\n): DetectResult {\n return success(type, value, format, meta);\n}\n\nfunction success(\n type: DetectableDocumentType,\n value: string,\n format?: DocumentFormat,\n meta?: Record<string, unknown>,\n): DetectResult {\n return { type, ok: true, value, ...(format ? { format } : {}), ...(meta ? { meta } : {}) };\n}\n\nfunction tryValidators(attempts: Array<() => DetectResult | null>): DetectResult | null {\n for (const attempt of attempts) {\n const result = attempt();\n if (result) {\n return result;\n }\n }\n return null;\n}\n\nconst CANDIDATES: Candidate[] = [\n {\n canTry: (raw) => isBoletoArrecadacao(raw),\n detect: (raw) => {\n const result = validateArrecadacao(raw);\n if (!result.ok) {\n return null;\n }\n return success('boleto', result.value, 'arrecadacao', {\n inputKind: result.inputKind,\n segment: result.segment,\n valueType: result.valueType,\n });\n },\n },\n {\n canTry: (raw) => looksLikeBoleto(raw) && !isBoletoArrecadacao(raw),\n detect: (raw) => {\n const result = validateBoleto(raw);\n if (!result.ok || result.format === 'arrecadacao') {\n return null;\n }\n return success('boleto', result.value, result.format, {\n inputKind: result.inputKind,\n situacao: result.situacao,\n });\n },\n },\n {\n canTry: (raw) => looksLikeNfeChave(raw),\n detect: (raw) => {\n const result = validateNfeChave(raw);\n if (!result.ok) {\n return null;\n }\n return success('nfe-chave', result.value, result.format, {\n parsed: result.parsed,\n uf: result.uf,\n });\n },\n },\n {\n canTry: (raw) => looksLikeBrCode(raw),\n detect: (raw) => {\n const result = validateBrCode(raw);\n if (!result.ok) {\n return null;\n }\n return success('brcode', result.value, result.format, {\n merchantName: result.merchantName,\n merchantCity: result.merchantCity,\n pixKey: result.pixKey,\n pixKeyType: result.pixKeyType,\n });\n },\n },\n {\n canTry: (raw) => looksLikeCnpjAlphanumeric(raw),\n detect: (raw) => {\n const result = validateCnpj(raw);\n if (!result.ok) {\n return null;\n }\n return success('cnpj', result.value, result.format);\n },\n },\n {\n canTry: (raw) => looksLikeCnpjNumeric(raw),\n detect: (raw) => {\n const result = validateCnpj(raw);\n if (!result.ok) {\n return null;\n }\n return success('cnpj', result.value, result.format);\n },\n },\n {\n canTry: (raw) => looksLikeElevenDigits(raw),\n detect: (raw) =>\n tryValidators([\n () => {\n const result = validateCpf(raw);\n return result.ok ? success('cpf', result.value, result.format) : null;\n },\n () => {\n const result = validateCnh(raw);\n return result.ok ? success('cnh', result.value, result.format) : null;\n },\n () => {\n const result = validatePisPasep(raw);\n return result.ok ? success('pis-pasep', result.value, result.format) : null;\n },\n ]),\n },\n {\n canTry: (raw) => looksLikeTituloEleitor(raw),\n detect: (raw) => {\n const result = validateTituloEleitor(raw);\n if (!result.ok) {\n return null;\n }\n return success('titulo-eleitor', result.value, result.format, {\n ufCode: result.ufCode,\n ...(result.uf ? { uf: result.uf } : {}),\n ...(result.exterior ? { exterior: result.exterior } : {}),\n });\n },\n },\n {\n canTry: (raw) => looksLikeCep(raw),\n detect: (raw) => {\n const result = validateCep(raw);\n if (!result.ok) {\n return null;\n }\n return success('cep', result.value, result.format);\n },\n },\n {\n canTry: (raw) => looksLikePlaca(raw),\n detect: (raw) => {\n const result = validatePlaca(raw);\n if (!result.ok) {\n return null;\n }\n return success('placa', result.value, result.format);\n },\n },\n {\n canTry: (raw) => looksLikePix(raw),\n detect: (raw) => {\n const result = validatePixKey(raw);\n if (!result.ok) {\n return null;\n }\n return success('pix', result.value, result.format, { keyType: result.keyType });\n },\n },\n {\n canTry: (raw) => looksLikeTelefone(raw),\n detect: (raw) => {\n const result = validateTelefone(raw);\n if (!result.ok) {\n return null;\n }\n return success('telefone', result.value, result.format, { tipo: result.tipo });\n },\n },\n {\n canTry: (raw) => looksLikeCartao(raw),\n detect: (raw) => {\n const result = validateCartaoCredito(raw);\n if (!result.ok) {\n return null;\n }\n return success('cartao-credito', result.value, result.format, { brand: result.brand });\n },\n },\n {\n canTry: (raw, options) => looksLikeIe(raw, options.uf),\n detect: (raw, options) => {\n const uf = options.uf as UfCode;\n if (uf === 'SP' && isSpRuralIeInput(raw)) {\n const result = validateIeProdutorRural(uf, raw);\n if (!result.ok) {\n return null;\n }\n return success('inscricao-estadual-produtor-rural', result.value, result.format, { uf: result.uf });\n }\n const result = validateInscricaoEstadual(raw, { uf });\n if (!result.ok) {\n return null;\n }\n return success('inscricao-estadual', result.value, result.format, { uf: result.uf });\n },\n },\n];\n\nexport function detect(raw: string, options: DetectOptions = {}): DetectResult {\n const trimmed = raw.trim();\n if (trimmed.length === 0) {\n return {\n type: 'unknown',\n ok: false,\n code: 'EMPTY_INPUT',\n message: 'Input is empty',\n };\n }\n\n for (const candidate of CANDIDATES) {\n if (!candidate.canTry(trimmed, options)) {\n continue;\n }\n const result = candidate.detect(trimmed, options);\n if (result?.ok) {\n return result;\n }\n }\n\n return {\n type: 'unknown',\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: options.uf\n ? 'No supported document type matched the input'\n : 'No supported document type matched the input; provide options.uf for Inscrição Estadual detection',\n };\n}\n"]}
import { validateTelefone, TELEFONE_CELULAR_MASK_PATTERN, TELEFONE_FIXO_MASK_PATTERN } from './chunk-EFEE6CMO.js';
// src/core/telefone/mask.ts
function applyTelefoneMask(canonical, tipo) {
const pattern = tipo === "celular" ? TELEFONE_CELULAR_MASK_PATTERN : TELEFONE_FIXO_MASK_PATTERN;
const match = pattern.exec(canonical);
if (!match) {
throw new Error(`Telephone must have valid ${tipo} length to apply mask`);
}
return `(${match[1]}) ${match[2]}-${match[3]}`;
}
// src/format/telefone.ts
function formatTelefone(input) {
const result = validateTelefone(input);
if (!result.ok) {
return { ok: false, code: result.code, message: result.message };
}
return { ok: true, formatted: applyTelefoneMask(result.value, result.tipo) };
}
export { formatTelefone };
//# sourceMappingURL=chunk-PNPESCSP.js.map
//# sourceMappingURL=chunk-PNPESCSP.js.map
{"version":3,"sources":["../src/core/telefone/mask.ts","../src/format/telefone.ts"],"names":[],"mappings":";;;AAOO,SAAS,iBAAA,CAAkB,WAAmB,IAAA,EAA4B;AAC/E,EAAA,MAAM,OAAA,GAAU,IAAA,KAAS,SAAA,GAAY,6BAAA,GAAgC,0BAAA;AACrE,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAA;AACpC,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,IAAI,CAAA,qBAAA,CAAuB,CAAA;AAAA,EAC1E;AACA,EAAA,OAAO,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAC9C;;;ACVO,SAAS,eAAe,KAAA,EAA6B;AAC1D,EAAA,MAAM,MAAA,GAAS,iBAAiB,KAAK,CAAA;AACrC,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,IAAI,IAAA,EAAM,SAAA,EAAW,kBAAkB,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,IAAI,CAAA,EAAE;AAC7E","file":"chunk-PNPESCSP.js","sourcesContent":["import {\n TELEFONE_CELULAR_MASK_PATTERN,\n TELEFONE_FIXO_MASK_PATTERN,\n} from './constants.js';\nimport type { TelefoneTipo } from '../../types/validation-result.js';\n\n/** Mask (DD) 9XXXX-XXXX or (DD) XXXX-XXXX per Anatel E.164 layout. */\nexport function applyTelefoneMask(canonical: string, tipo: TelefoneTipo): string {\n const pattern = tipo === 'celular' ? TELEFONE_CELULAR_MASK_PATTERN : TELEFONE_FIXO_MASK_PATTERN;\n const match = pattern.exec(canonical);\n if (!match) {\n throw new Error(`Telephone must have valid ${tipo} length to apply mask`);\n }\n return `(${match[1]}) ${match[2]}-${match[3]}`;\n}\n","import { applyTelefoneMask } from '../core/telefone/mask.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatTelefone(input: string): FormatResult {\n const result = validateTelefone(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyTelefoneMask(result.value, result.tipo) };\n}\n"]}
// src/ibge/data/metadata.json
var metadata_default = {
id: "ibge",
nome: "IBGE Localidades",
fonte: "IBGE API v1 /localidades",
endpoints: [
"https://servicodados.ibge.gov.br/api/v1/localidades/estados",
"https://servicodados.ibge.gov.br/api/v1/localidades/municipios"
],
capturadoEm: "2026-06-23",
atualizadoEm: "2026-06-23T14:16:50.155Z",
contagens: {
estados: 27,
municipios: 5571
},
alteracoes: {
adicionados: 5598,
removidos: 0,
alterados: 0,
comparadoCom: null
},
verificacao: {
agendamento: "semanal",
workflow: "data-refresh-bot.yml",
ultimaExecucao: "2026-06-23T14:16:50.155Z"
},
documentacao: "docs/OFFICIAL-SOURCES.md#ibge-localities"
};
export { metadata_default };
//# sourceMappingURL=chunk-UCNPXHIJ.js.map
//# sourceMappingURL=chunk-UCNPXHIJ.js.map
{"version":3,"sources":["../src/ibge/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAQ,kBAAA;AAAA,EACR,KAAA,EAAS,0BAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX,6DAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,OAAA,EAAW,EAAA;AAAA,IACX,UAAA,EAAc;AAAA,GAChB;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,IAAA;AAAA,IACf,SAAA,EAAa,CAAA;AAAA,IACb,SAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAgB;AAAA,GAClB;AAAA,EACA,WAAA,EAAe;AAAA,IACb,WAAA,EAAe,SAAA;AAAA,IACf,QAAA,EAAY,sBAAA;AAAA,IACZ,cAAA,EAAkB;AAAA,GACpB;AAAA,EACA,YAAA,EAAgB;AAClB","file":"chunk-UCNPXHIJ.js","sourcesContent":["{\n \"id\": \"ibge\",\n \"nome\": \"IBGE Localidades\",\n \"fonte\": \"IBGE API v1 /localidades\",\n \"endpoints\": [\n \"https://servicodados.ibge.gov.br/api/v1/localidades/estados\",\n \"https://servicodados.ibge.gov.br/api/v1/localidades/municipios\"\n ],\n \"capturadoEm\": \"2026-06-23\",\n \"atualizadoEm\": \"2026-06-23T14:16:50.155Z\",\n \"contagens\": {\n \"estados\": 27,\n \"municipios\": 5571\n },\n \"alteracoes\": {\n \"adicionados\": 5598,\n \"removidos\": 0,\n \"alterados\": 0,\n \"comparadoCom\": null\n },\n \"verificacao\": {\n \"agendamento\": \"semanal\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-23T14:16:50.155Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#ibge-localities\"\n}\n"]}
// src/bancos/data/metadata.json
var metadata_default = {
id: "bancos",
nome: "Bacen STR Participants",
fonte: "Banco Central \u2014 Participantes STR",
endpoints: [
"https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv"
],
capturadoEm: "2026-06-23",
atualizadoEm: "2026-06-23T14:34:40.533Z",
contagens: {
bancos: 468
},
alteracoes: {
adicionados: 468,
removidos: 0,
alterados: 0,
comparadoCom: null
},
verificacao: {
agendamento: "semanal",
workflow: "data-refresh-bot.yml",
ultimaExecucao: "2026-06-23T14:34:40.533Z"
},
documentacao: "docs/OFFICIAL-SOURCES.md#bacen-banks"
};
export { metadata_default };
//# sourceMappingURL=chunk-XADVBV73.js.map
//# sourceMappingURL=chunk-XADVBV73.js.map
{"version":3,"sources":["../src/bancos/data/metadata.json"],"names":[],"mappings":";AAAA,IAAA,gBAAA,GAAA;AAAA,EACE,EAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAQ,wBAAA;AAAA,EACR,KAAA,EAAS,wCAAA;AAAA,EACT,SAAA,EAAa;AAAA,IACX;AAAA,GACF;AAAA,EACA,WAAA,EAAe,YAAA;AAAA,EACf,YAAA,EAAgB,0BAAA;AAAA,EAChB,SAAA,EAAa;AAAA,IACX,MAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAc;AAAA,IACZ,WAAA,EAAe,GAAA;AAAA,IACf,SAAA,EAAa,CAAA;AAAA,IACb,SAAA,EAAa,CAAA;AAAA,IACb,YAAA,EAAgB;AAAA,GAClB;AAAA,EACA,WAAA,EAAe;AAAA,IACb,WAAA,EAAe,SAAA;AAAA,IACf,QAAA,EAAY,sBAAA;AAAA,IACZ,cAAA,EAAkB;AAAA,GACpB;AAAA,EACA,YAAA,EAAgB;AAClB","file":"chunk-XADVBV73.js","sourcesContent":["{\n \"id\": \"bancos\",\n \"nome\": \"Bacen STR Participants\",\n \"fonte\": \"Banco Central — Participantes STR\",\n \"endpoints\": [\n \"https://www.bcb.gov.br/content/estabilidadefinanceira/str1/ParticipantesSTR.csv\"\n ],\n \"capturadoEm\": \"2026-06-23\",\n \"atualizadoEm\": \"2026-06-23T14:34:40.533Z\",\n \"contagens\": {\n \"bancos\": 468\n },\n \"alteracoes\": {\n \"adicionados\": 468,\n \"removidos\": 0,\n \"alterados\": 0,\n \"comparadoCom\": null\n },\n \"verificacao\": {\n \"agendamento\": \"semanal\",\n \"workflow\": \"data-refresh-bot.yml\",\n \"ultimaExecucao\": \"2026-06-23T14:34:40.533Z\"\n },\n \"documentacao\": \"docs/OFFICIAL-SOURCES.md#bacen-banks\"\n}\n"]}
import { D as DataCatalogVersion, a as DatasetMetadata } from './types-CBIZxgfG.js';
export { b as DatasetChanges, c as DatasetVerification } from './types-CBIZxgfG.js';
declare function getDataCatalog(): readonly DatasetMetadata[];
declare function getDatasetMetadata(id: string): DatasetMetadata | undefined;
declare const DATA_CATALOG_VERSION: DataCatalogVersion;
interface DatasetRegistryEntry {
id: string;
metadata: DatasetMetadata;
}
declare const DATASET_REGISTRY: readonly DatasetRegistryEntry[];
export { DATASET_REGISTRY, DATA_CATALOG_VERSION, DataCatalogVersion, DatasetMetadata, getDataCatalog, getDatasetMetadata };
import { metadata_default } from './chunk-UCNPXHIJ.js';
import { metadata_default as metadata_default$1 } from './chunk-XADVBV73.js';
import { ddd_metadata_default } from './chunk-KTEQPYYN.js';
// src/data-catalog/registry.ts
var DATASET_REGISTRY = [
{ id: "ibge", metadata: metadata_default },
{ id: "bancos", metadata: metadata_default$1 },
{ id: "telefone-ddd", metadata: ddd_metadata_default }
];
// src/data-catalog/catalog.ts
function getDataCatalog() {
return DATASET_REGISTRY.map((entry) => entry.metadata);
}
function getDatasetMetadata(id) {
return DATASET_REGISTRY.find((entry) => entry.id === id)?.metadata;
}
var DATA_CATALOG_VERSION = {
totalDatasets: DATASET_REGISTRY.length
};
export { DATASET_REGISTRY, DATA_CATALOG_VERSION, getDataCatalog, getDatasetMetadata };
//# sourceMappingURL=data-catalog.js.map
//# sourceMappingURL=data-catalog.js.map
{"version":3,"sources":["../src/data-catalog/registry.ts","../src/data-catalog/catalog.ts"],"names":["metadata_default"],"mappings":";;;;;AAUO,IAAM,gBAAA,GAAoD;AAAA,EAC/D,EAAE,EAAA,EAAI,MAAA,EAAQ,QAAA,EAAUA,gBAAAA,EAAgC;AAAA,EACxD,EAAE,EAAA,EAAI,QAAA,EAAU,QAAA,EAAUA,kBAAA,EAAkC;AAAA,EAC5D,EAAE,EAAA,EAAI,cAAA,EAAgB,QAAA,EAAU,oBAAA;AAClC;;;ACXO,SAAS,cAAA,GAA6C;AAC3D,EAAA,OAAO,gBAAA,CAAiB,GAAA,CAAI,CAAC,KAAA,KAAU,MAAM,QAAQ,CAAA;AACvD;AAEO,SAAS,mBAAmB,EAAA,EAAyC;AAC1E,EAAA,OAAO,iBAAiB,IAAA,CAAK,CAAC,UAAU,KAAA,CAAM,EAAA,KAAO,EAAE,CAAA,EAAG,QAAA;AAC5D;AAEO,IAAM,oBAAA,GAA2C;AAAA,EACtD,eAAe,gBAAA,CAAiB;AAClC","file":"data-catalog.js","sourcesContent":["import ibgeMetadata from '../ibge/data/metadata.json';\nimport bancosMetadata from '../bancos/data/metadata.json';\nimport telefoneDddMetadata from '../core/telefone/data/ddd-metadata.json';\nimport type { DatasetMetadata } from './types.js';\n\nexport interface DatasetRegistryEntry {\n id: string;\n metadata: DatasetMetadata;\n}\n\nexport const DATASET_REGISTRY: readonly DatasetRegistryEntry[] = [\n { id: 'ibge', metadata: ibgeMetadata as DatasetMetadata },\n { id: 'bancos', metadata: bancosMetadata as DatasetMetadata },\n { id: 'telefone-ddd', metadata: telefoneDddMetadata as DatasetMetadata },\n];\n","import { DATASET_REGISTRY } from './registry.js';\nimport type { DataCatalogVersion, DatasetMetadata } from './types.js';\n\nexport function getDataCatalog(): readonly DatasetMetadata[] {\n return DATASET_REGISTRY.map((entry) => entry.metadata);\n}\n\nexport function getDatasetMetadata(id: string): DatasetMetadata | undefined {\n return DATASET_REGISTRY.find((entry) => entry.id === id)?.metadata;\n}\n\nexport const DATA_CATALOG_VERSION: DataCatalogVersion = {\n totalDatasets: DATASET_REGISTRY.length,\n};\n"]}
import { b as DatasetChanges, c as DatasetVerification } from './types-CBIZxgfG.js';
interface IbgeRegiao {
id: number;
nome: string;
}
interface Estado {
codigo: number;
sigla: string;
nome: string;
regiao: IbgeRegiao;
}
interface Municipio {
codigo: number;
nome: string;
uf: string;
}
interface IbgeDataVersion {
id: 'ibge';
nome: string;
fonte: string;
endpoints: string[];
capturadoEm: string;
atualizadoEm: string;
contagens: {
estados: number;
municipios: number;
};
alteracoes: DatasetChanges;
verificacao: DatasetVerification;
documentacao: string;
}
/**
* IBGE locality lookup — offline embedded data from official IBGE API.
* @see https://servicodados.ibge.gov.br/api/docs/localidades
*/
declare function getEstados(): readonly Estado[];
declare function getMunicipios(options?: {
uf?: string;
}): readonly Municipio[];
declare function getMunicipioPorCodigo(codigo: number): Municipio | undefined;
/**
* IBGE localities — official Brazilian states and municipalities.
* @see https://servicodados.ibge.gov.br/api/docs/localidades
*/
declare const IBGE_OFFICIAL_DOCS_URL = "https://servicodados.ibge.gov.br/api/docs/localidades";
declare const IBGE_ESTADOS_URL = "https://servicodados.ibge.gov.br/api/v1/localidades/estados";
declare const IBGE_MUNICIPIOS_URL = "https://servicodados.ibge.gov.br/api/v1/localidades/municipios";
/** All 27 federative unit siglas — used for UF filter validation. */
declare const IBGE_UF_SIGLAS: readonly ["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"];
/** Golden municipality — São Paulo capital (IBGE 3550308). */
declare const IBGE_GOLDEN_MUNICIPIO_SP = 3550308;
/** Golden municipality — Sorriso, MT (IBGE 5107925). */
declare const IBGE_GOLDEN_MUNICIPIO_SORRISO = 5107925;
/** Golden municipality — Brasília, DF (IBGE 5300108). */
declare const IBGE_GOLDEN_MUNICIPIO_BRASILIA = 5300108;
/** Golden state — São Paulo (IBGE 35). */
declare const IBGE_GOLDEN_ESTADO_SP = 35;
declare const IBGE_DATA_VERSION: IbgeDataVersion;
export { type Estado, IBGE_DATA_VERSION, IBGE_ESTADOS_URL, IBGE_GOLDEN_ESTADO_SP, IBGE_GOLDEN_MUNICIPIO_BRASILIA, IBGE_GOLDEN_MUNICIPIO_SORRISO, IBGE_GOLDEN_MUNICIPIO_SP, IBGE_MUNICIPIOS_URL, IBGE_OFFICIAL_DOCS_URL, IBGE_UF_SIGLAS, type IbgeDataVersion, type IbgeRegiao, type Municipio, getEstados, getMunicipioPorCodigo, getMunicipios };

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

interface DatasetChanges {
adicionados: number;
removidos: number;
alterados: number;
comparadoCom: string | null;
}
interface DatasetVerification {
agendamento: 'semanal';
workflow: 'data-refresh-bot.yml';
ultimaExecucao?: string;
}
interface DatasetMetadata {
id: string;
nome: string;
fonte: string;
endpoints: string[];
capturadoEm: string;
atualizadoEm: string;
contagens: Record<string, number>;
alteracoes: DatasetChanges;
verificacao: DatasetVerification;
documentacao: string;
}
interface DataCatalogVersion {
totalDatasets: number;
}
export type { DataCatalogVersion as D, DatasetMetadata as a, DatasetChanges as b, DatasetVerification as c };
+6
-5

@@ -1,10 +0,11 @@

export { batch } from './chunk-N2WVO3GF.js';
export { batch } from './chunk-N5CER3QZ.js';
import './chunk-I66ZRSEN.js';
import './chunk-EFEE6CMO.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-AO6UTQ4A.js';
import './chunk-JLCQ7MGC.js';
import './chunk-3LMDBXU6.js';
import './chunk-DAR6VOMT.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-KTEQPYYN.js';
import './chunk-AU6TW3GH.js';

@@ -11,0 +12,0 @@ import './chunk-N6RQICAP.js';

@@ -1,13 +0,14 @@

export { compare, compareRuntime } from './chunk-HUIMOB5E.js';
import './chunk-G6OBZRZM.js';
import './chunk-FKFRB3RJ.js';
export { compare, compareRuntime } from './chunk-JCWQDTZB.js';
import './chunk-FOP5LO7W.js';
import './chunk-5V6N4JWQ.js';
import './chunk-GVK6IMBF.js';
import './chunk-I66ZRSEN.js';
import './chunk-EFEE6CMO.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-AO6UTQ4A.js';
import './chunk-JLCQ7MGC.js';
import './chunk-3LMDBXU6.js';
import './chunk-DAR6VOMT.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-KTEQPYYN.js';
import './chunk-AU6TW3GH.js';

@@ -14,0 +15,0 @@ import './chunk-N6RQICAP.js';

@@ -1,9 +0,10 @@

export { detect } from './chunk-WC6YYFWP.js';
export { detect } from './chunk-PCP77SLS.js';
import './chunk-EFEE6CMO.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-AO6UTQ4A.js';
import './chunk-JLCQ7MGC.js';
import './chunk-3LMDBXU6.js';
import './chunk-DAR6VOMT.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-KTEQPYYN.js';
import './chunk-AU6TW3GH.js';

@@ -10,0 +11,0 @@ import './chunk-N6RQICAP.js';

@@ -1,13 +0,14 @@

export { diff } from './chunk-N6N5ATLY.js';
import './chunk-G6OBZRZM.js';
import './chunk-FKFRB3RJ.js';
export { diff } from './chunk-LRUZVPLR.js';
import './chunk-FOP5LO7W.js';
import './chunk-5V6N4JWQ.js';
import './chunk-GVK6IMBF.js';
import './chunk-I66ZRSEN.js';
import './chunk-EFEE6CMO.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-AO6UTQ4A.js';
import './chunk-JLCQ7MGC.js';
import './chunk-3LMDBXU6.js';
import './chunk-DAR6VOMT.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-KTEQPYYN.js';
import './chunk-AU6TW3GH.js';

@@ -14,0 +15,0 @@ import './chunk-N6RQICAP.js';

@@ -1,2 +0,5 @@

export { CPF_ALPHA_GENERATE_STUB, GENERATABLE_CARD_BRANDS, applyArrecadacaoLinhaMask, assertCpfAlphanumericGenerateAllowed, generate, isGeneratableCardBrand, rejectCpfAlphanumericGenerate } from './chunk-I7DM47IR.js';
export { CPF_ALPHA_GENERATE_STUB, GENERATABLE_CARD_BRANDS, applyArrecadacaoLinhaMask, assertCpfAlphanumericGenerateAllowed, generate, isGeneratableCardBrand, rejectCpfAlphanumericGenerate } from './chunk-BA3FAVK4.js';
import './chunk-PNPESCSP.js';
import './chunk-EVULAGR5.js';
import './chunk-54UWHK5L.js';
import './chunk-JKDU7QYP.js';

@@ -7,19 +10,13 @@ import './chunk-VSW3NBJQ.js';

import './chunk-LAEUXOF6.js';
import './chunk-PD7ZTWMM.js';
import './chunk-EVULAGR5.js';
import './chunk-TJCE4TVX.js';
import './chunk-54UWHK5L.js';
import './chunk-XWHGXSQV.js';
import './chunk-B6A7VF4R.js';
import './chunk-MESOO5GZ.js';
import './chunk-VWVQWN2G.js';
import './chunk-RMTHCPIV.js';
import './chunk-I66ZRSEN.js';
import './chunk-EFEE6CMO.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-AO6UTQ4A.js';
import './chunk-JLCQ7MGC.js';
import './chunk-3LMDBXU6.js';
import './chunk-DAR6VOMT.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-KTEQPYYN.js';
import './chunk-XWHGXSQV.js';
import './chunk-N6RQICAP.js';

@@ -31,4 +28,7 @@ import './chunk-E2EFGMWA.js';

import './chunk-63G7QO73.js';
import './chunk-B6A7VF4R.js';
import './chunk-ANWQBKGN.js';
import './chunk-MESOO5GZ.js';
import './chunk-TE6NSONR.js';
import './chunk-VWVQWN2G.js';
import './chunk-YNVMVDFN.js';

@@ -38,2 +38,3 @@ import './chunk-YYHS5WQN.js';

import './chunk-UCJPSJN5.js';
import './chunk-RMTHCPIV.js';
import './chunk-CSRBRKXY.js';

@@ -40,0 +41,0 @@ import './chunk-FBARVLLP.js';

@@ -6,3 +6,3 @@ export { CNPJ_GOLDEN_ALPHANUMERIC, CNPJ_GOLDEN_ALPHANUMERIC_MASKED, CNPJ_GOLDEN_NUMERIC, CNPJ_GOLDEN_NUMERIC_MASKED, CNPJ_OFFICIAL_SOURCE_URL, detectCnpjFormat, formatCnpj, formatCnpjAlphanumeric, formatCnpjNumeric, isValidCnpj, isValidCnpjAlphanumeric, isValidCnpjNumeric, stripCnpj, validateCnpj } from './cnpj.js';

export { CEP_GOLDEN_PRIMARY, CEP_GOLDEN_PRIMARY_MASKED, CEP_GOLDEN_SECONDARY, CEP_OFFICIAL_SOURCE_URL, formatCep, isValidCep, stripCep, validateCep } from './cep.js';
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';
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';
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';

@@ -28,2 +28,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, formatRenavam, isValidRenavam, stripRenavam, validateRenavam } from './renavam.js';

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';
import './types-CBIZxgfG.js';
import './types-MXifBcV5.js';

@@ -30,0 +31,0 @@

@@ -0,1 +1,7 @@

export { sanitize } from './chunk-MKYCKCZ6.js';
import './chunk-ZH4RJNG7.js';
import './chunk-7ULDLG4C.js';
import './chunk-MFNJTAUS.js';
import './chunk-QGMVUIDD.js';
export { MASKABLE_DOCUMENT_TYPES, isMaskableDocumentType, mask, maskRuntime } from './chunk-ASQ2XIN2.js';
import './chunk-4J5IMD7B.js';

@@ -6,12 +12,13 @@ import './chunk-P55H5YRX.js';

import './chunk-G24G7WR5.js';
export { sanitize } from './chunk-SAZA3V2U.js';
import './chunk-ZH4RJNG7.js';
import './chunk-7ULDLG4C.js';
export { compare, compareRuntime } from './chunk-JCWQDTZB.js';
import './chunk-YGA5W54J.js';
export { detect } from './chunk-WC6YYFWP.js';
export { diff } from './chunk-N6N5ATLY.js';
export { CPF_ALPHA_GENERATE_STUB, GENERATABLE_CARD_BRANDS, applyArrecadacaoLinhaMask, assertCpfAlphanumericGenerateAllowed, generate, isGeneratableCardBrand, rejectCpfAlphanumericGenerate } from './chunk-I7DM47IR.js';
import './chunk-MFNJTAUS.js';
import './chunk-QGMVUIDD.js';
export { MASKABLE_DOCUMENT_TYPES, isMaskableDocumentType, mask, maskRuntime } from './chunk-BFMRXXFE.js';
export { detect } from './chunk-PCP77SLS.js';
export { diff } from './chunk-LRUZVPLR.js';
import './chunk-FOP5LO7W.js';
import './chunk-5V6N4JWQ.js';
import './chunk-GVK6IMBF.js';
export { CPF_ALPHA_GENERATE_STUB, GENERATABLE_CARD_BRANDS, applyArrecadacaoLinhaMask, assertCpfAlphanumericGenerateAllowed, generate, isGeneratableCardBrand, rejectCpfAlphanumericGenerate } from './chunk-BA3FAVK4.js';
export { formatTelefone } from './chunk-PNPESCSP.js';
export { formatTituloEleitor } from './chunk-EVULAGR5.js';
export { formatIeProdutorRural } from './chunk-54UWHK5L.js';
export { formatNfeChave } from './chunk-JKDU7QYP.js';

@@ -25,38 +32,21 @@ import { formatPisPasep } from './chunk-VSW3NBJQ.js';

export { formatRenavam } from './chunk-LAEUXOF6.js';
export { formatTelefone } from './chunk-PD7ZTWMM.js';
export { formatTituloEleitor } from './chunk-EVULAGR5.js';
import { formatCpf } from './chunk-TJCE4TVX.js';
export { formatCpf } from './chunk-TJCE4TVX.js';
export { formatIeProdutorRural } from './chunk-54UWHK5L.js';
export { batch } from './chunk-N2WVO3GF.js';
import './chunk-KBNWI6GE.js';
import { formatBoleto } from './chunk-XWHGXSQV.js';
export { formatBoleto } from './chunk-XWHGXSQV.js';
import './chunk-RYGAK7PB.js';
import './chunk-CQPM43VV.js';
import { formatCartaoCredito } from './chunk-B6A7VF4R.js';
export { formatCartaoCredito } from './chunk-B6A7VF4R.js';
import './chunk-2CNYSY3Z.js';
import { formatCep } from './chunk-MESOO5GZ.js';
export { formatCep } from './chunk-MESOO5GZ.js';
import './chunk-Y2KUN2D3.js';
export { formatCnh } from './chunk-VWVQWN2G.js';
import './chunk-LF2B4VPE.js';
import { formatCnpj } from './chunk-RMTHCPIV.js';
export { formatCnpj, formatCnpjAlphanumeric, formatCnpjNumeric } from './chunk-RMTHCPIV.js';
export { compare, compareRuntime } from './chunk-HUIMOB5E.js';
import './chunk-G6OBZRZM.js';
import './chunk-FKFRB3RJ.js';
import './chunk-GVK6IMBF.js';
export { batch } from './chunk-N5CER3QZ.js';
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';
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';
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';
export { formatInscricaoEstadual, getIeOfficialSourceUrl, isValidInscricaoEstadual, stripInscricaoEstadual, validateIeDf, validateIeMt, validateIeSp, validateInscricaoEstadual } from './chunk-665E36SC.js';
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';
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';
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';
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';
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';
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';
export { formatInscricaoEstadual, getIeOfficialSourceUrl, isValidInscricaoEstadual, stripInscricaoEstadual, validateIeDf, validateIeMt, validateIeSp, validateInscricaoEstadual } from './chunk-665E36SC.js';
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';
import './chunk-KTEQPYYN.js';
import './chunk-KBNWI6GE.js';
import { formatBoleto } from './chunk-XWHGXSQV.js';
export { formatBoleto } from './chunk-XWHGXSQV.js';
export { convertCodigoBarrasToLinhaDigitavel, convertLinhaToCodigoBarras, isValidBoleto, validateBoleto, validateFatorVencimento, validateValorDocumento } from './chunk-AU6TW3GH.js';
export { computeArrecadacaoModulo11Dv, isValidArrecadacao, linhaArrecadacaoToCodigoBarras, stripArrecadacao, stripCodigoBarras, validateArrecadacao, validateArrecadacaoCodigoBarras, validateArrecadacaoLinha, validateCodigoBarras } from './chunk-N6RQICAP.js';
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';
import './chunk-RYGAK7PB.js';
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';

@@ -66,4 +56,12 @@ 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';

export { CPF_GOLDEN_PRIMARY, CPF_GOLDEN_PRIMARY_MASKED, CPF_GOLDEN_SECONDARY, CPF_OFFICIAL_SOURCE_URL, isValidCpf, validateCpf } from './chunk-63G7QO73.js';
import './chunk-CQPM43VV.js';
import { formatCartaoCredito } from './chunk-B6A7VF4R.js';
export { formatCartaoCredito } from './chunk-B6A7VF4R.js';
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';
import './chunk-2CNYSY3Z.js';
import { formatCep } from './chunk-MESOO5GZ.js';
export { formatCep } from './chunk-MESOO5GZ.js';
export { CEP_GOLDEN_PRIMARY, CEP_GOLDEN_PRIMARY_MASKED, CEP_GOLDEN_SECONDARY, CEP_OFFICIAL_SOURCE_URL, isValidCep, validateCep } from './chunk-TE6NSONR.js';
import './chunk-Y2KUN2D3.js';
export { formatCnh } from './chunk-VWVQWN2G.js';
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';

@@ -73,2 +71,5 @@ export { stripCep, stripCnh, stripPlaca, stripRenavam, stripTituloEleitor } from './chunk-YYHS5WQN.js';

export { stripCpf } from './chunk-UCJPSJN5.js';
import './chunk-LF2B4VPE.js';
import { formatCnpj } from './chunk-RMTHCPIV.js';
export { formatCnpj, formatCnpjAlphanumeric, formatCnpjNumeric } from './chunk-RMTHCPIV.js';
import './chunk-CSRBRKXY.js';

@@ -75,0 +76,0 @@ 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';

@@ -1,1 +0,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"]}
{"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"]}
import './chunk-MFNJTAUS.js';
import './chunk-GVK6IMBF.js';
export { formatIeProdutorRural } from './chunk-54UWHK5L.js';
import './chunk-GVK6IMBF.js';
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,0 +5,0 @@ import './chunk-NUQSMT4Y.js';

@@ -1,2 +0,5 @@

export { MASKABLE_DOCUMENT_TYPES, isMaskableDocumentType, mask, maskRuntime } from './chunk-BFMRXXFE.js';
export { MASKABLE_DOCUMENT_TYPES, isMaskableDocumentType, mask, maskRuntime } from './chunk-ASQ2XIN2.js';
import './chunk-PNPESCSP.js';
import './chunk-EVULAGR5.js';
import './chunk-54UWHK5L.js';
import './chunk-JKDU7QYP.js';

@@ -7,19 +10,13 @@ import './chunk-VSW3NBJQ.js';

import './chunk-LAEUXOF6.js';
import './chunk-PD7ZTWMM.js';
import './chunk-EVULAGR5.js';
import './chunk-TJCE4TVX.js';
import './chunk-54UWHK5L.js';
import './chunk-XWHGXSQV.js';
import './chunk-B6A7VF4R.js';
import './chunk-MESOO5GZ.js';
import './chunk-VWVQWN2G.js';
import './chunk-RMTHCPIV.js';
import './chunk-I66ZRSEN.js';
import './chunk-EFEE6CMO.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-AO6UTQ4A.js';
import './chunk-JLCQ7MGC.js';
import './chunk-3LMDBXU6.js';
import './chunk-DAR6VOMT.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-KTEQPYYN.js';
import './chunk-XWHGXSQV.js';
import './chunk-E2EFGMWA.js';

@@ -29,4 +26,7 @@ import './chunk-H3MLGGFI.js';

import './chunk-63G7QO73.js';
import './chunk-B6A7VF4R.js';
import './chunk-ANWQBKGN.js';
import './chunk-MESOO5GZ.js';
import './chunk-TE6NSONR.js';
import './chunk-VWVQWN2G.js';
import './chunk-YNVMVDFN.js';

@@ -36,2 +36,3 @@ import './chunk-YYHS5WQN.js';

import './chunk-UCJPSJN5.js';
import './chunk-RMTHCPIV.js';
import './chunk-CSRBRKXY.js';

@@ -38,0 +39,0 @@ import './chunk-FBARVLLP.js';

@@ -1,12 +0,13 @@

export { sanitize } from './chunk-SAZA3V2U.js';
import './chunk-FKFRB3RJ.js';
export { sanitize } from './chunk-MKYCKCZ6.js';
import './chunk-5V6N4JWQ.js';
import './chunk-GVK6IMBF.js';
import './chunk-I66ZRSEN.js';
import './chunk-EFEE6CMO.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-AO6UTQ4A.js';
import './chunk-JLCQ7MGC.js';
import './chunk-3LMDBXU6.js';
import './chunk-DAR6VOMT.js';
import './chunk-CSVGWTCG.js';
import './chunk-665E36SC.js';
import './chunk-CDNOUZEI.js';
import './chunk-KTEQPYYN.js';
import './chunk-AU6TW3GH.js';

@@ -13,0 +14,0 @@ import './chunk-N6RQICAP.js';

import { u as TelefoneValidationResult, F as FormatResult } from './validation-result-BaI2Xder.js';
export { D as DocumentFormat, T as Telefone, t as TelefoneTipo, V as ValidationErrorCode } from './validation-result-BaI2Xder.js';
import { b as DatasetChanges, c as DatasetVerification } from './types-CBIZxgfG.js';

@@ -14,2 +15,32 @@ /** 67 official Anatel national area codes (CN / DDD). */

interface DddInfo {
ddd: string;
uf: string;
regiao: string;
municipios: readonly string[];
}
interface TelefoneDddDataVersion {
id: 'telefone-ddd';
nome: string;
fonte: string;
endpoints: string[];
capturadoEm: string;
atualizadoEm: string;
contagens: {
ddds: number;
};
alteracoes: DatasetChanges;
verificacao: DatasetVerification;
documentacao: string;
}
/**
* Anatel DDD geographic lookup — offline embedded data.
* @see https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais
*/
declare function getDddInfo(ddd: string): DddInfo | undefined;
declare const TELEFONE_DDD_DATA_VERSION: TelefoneDddDataVersion;
declare function isValidTelefone(input: string): boolean;

@@ -30,2 +61,2 @@ declare function validateTelefone(input: string): TelefoneValidationResult;

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 };
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 };
import './chunk-ZH4RJNG7.js';
export { formatTelefone } from './chunk-PD7ZTWMM.js';
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';
export { formatTelefone } from './chunk-PNPESCSP.js';
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';
import './chunk-KTEQPYYN.js';
import './chunk-NUQSMT4Y.js';
//# sourceMappingURL=telefone.js.map
//# sourceMappingURL=telefone.js.map
{
"name": "@br-validators/core",
"version": "1.0.0",
"version": "1.1.0",
"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.",

@@ -41,2 +41,5 @@ "homepage": "https://www.npmjs.com/package/@br-validators/core",

"diff",
"ibge",
"bancos",
"data-catalog",
"typescript"

@@ -146,2 +149,14 @@ ],

"import": "./dist/diff.js"
},
"./ibge": {
"types": "./dist/ibge.d.ts",
"import": "./dist/ibge.js"
},
"./bancos": {
"types": "./dist/bancos.d.ts",
"import": "./dist/bancos.js"
},
"./data-catalog": {
"types": "./dist/data-catalog.d.ts",
"import": "./dist/data-catalog.js"
}

@@ -148,0 +163,0 @@ },

@@ -32,2 +32,3 @@ # @br-validators/core

- ✅ **Tree-shakeable** — subpath imports per document type
- ✅ **Reference data** — IBGE, Bacen banks, DDD lookup with weekly freshness ([DATA-FRESHNESS.md](../../docs/DATA-FRESHNESS.md))
- ✅ **ESM only**, Node ≥ 18, works in browser, Bun, Deno

@@ -34,0 +35,0 @@

import { formatNfeChave } from './chunk-JKDU7QYP.js';
import { formatPisPasep } from './chunk-VSW3NBJQ.js';
import { formatPixKey } from './chunk-IYOPXJLY.js';
import { formatPlaca } from './chunk-YD5MPZWY.js';
import { formatRenavam } from './chunk-LAEUXOF6.js';
import { formatTelefone } from './chunk-PD7ZTWMM.js';
import { formatTituloEleitor } from './chunk-EVULAGR5.js';
import { formatCpf } from './chunk-TJCE4TVX.js';
import { formatIeProdutorRural } from './chunk-54UWHK5L.js';
import { formatBoleto } from './chunk-XWHGXSQV.js';
import { formatCartaoCredito } from './chunk-B6A7VF4R.js';
import { formatCep } from './chunk-MESOO5GZ.js';
import { formatCnh } from './chunk-VWVQWN2G.js';
import { formatCnpj } from './chunk-RMTHCPIV.js';
import { formatInscricaoEstadual } from './chunk-665E36SC.js';
// src/mask/index.ts
var MASKABLE_DOCUMENT_TYPES = [
"cpf",
"cnpj",
"cep",
"placa",
"pis-pasep",
"telefone",
"cnh",
"renavam",
"titulo-eleitor",
"nfe-chave",
"boleto",
"cartao-credito",
"inscricao-estadual",
"inscricao-estadual-produtor-rural",
"pix"
];
function isMaskableDocumentType(type) {
return MASKABLE_DOCUMENT_TYPES.includes(type);
}
function mask(raw, type, options = {}) {
if (type === "inscricao-estadual" && !options.uf) {
return {
ok: false,
code: "UNSUPPORTED_FORMAT",
message: "UF is required for inscricao-estadual masking"
};
}
return dispatchMask(raw, type, options);
}
function maskRuntime(type, raw, options = {}) {
if (!isMaskableDocumentType(type)) {
return { ok: false, code: "UNSUPPORTED_FORMAT", message: `Unknown document type: ${type}` };
}
return mask(raw, type, options);
}
function dispatchMask(raw, type, options) {
switch (type) {
case "cpf":
return formatCpf(raw);
case "cnpj":
return formatCnpj(raw);
case "cep":
return formatCep(raw);
case "placa":
return formatPlaca(raw);
case "pis-pasep":
return formatPisPasep(raw);
case "telefone":
return formatTelefone(raw);
case "cnh":
return formatCnh(raw);
case "renavam":
return formatRenavam(raw);
case "titulo-eleitor":
return formatTituloEleitor(raw);
case "nfe-chave":
return formatNfeChave(raw);
case "boleto":
return formatBoleto(raw);
case "cartao-credito":
return formatCartaoCredito(raw);
case "inscricao-estadual":
return formatInscricaoEstadual(raw, { uf: options.uf });
case "inscricao-estadual-produtor-rural":
return formatIeProdutorRural(raw);
case "pix":
return formatPixKey(raw);
default: {
const _exhaustive = type;
return {
ok: false,
code: "UNSUPPORTED_FORMAT",
message: `Unsupported type: ${String(_exhaustive)}`
};
}
}
}
export { MASKABLE_DOCUMENT_TYPES, isMaskableDocumentType, mask, maskRuntime };
//# sourceMappingURL=chunk-BFMRXXFE.js.map
//# sourceMappingURL=chunk-BFMRXXFE.js.map
{"version":3,"sources":["../src/mask/index.ts"],"names":[],"mappings":"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","file":"chunk-BFMRXXFE.js","sourcesContent":["/**\n * Unified display mask — delegates to existing `format*` (BR-MASK-001).\n * @see docs/use-cases/UC-003-format-document.md\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { formatInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { formatBoleto } from '../format/boleto.js';\nimport { formatCartaoCredito } from '../format/cartao-credito.js';\nimport { formatCep } from '../format/cep.js';\nimport { formatCnh } from '../format/cnh.js';\nimport { formatCnpj } from '../format/cnpj.js';\nimport { formatCpf } from '../format/cpf.js';\nimport { formatIeProdutorRural } from '../format/inscricao-estadual-produtor-rural.js';\nimport { formatNfeChave } from '../format/nfe-chave.js';\nimport { formatPisPasep } from '../format/pis-pasep.js';\nimport { formatPixKey } from '../format/pix.js';\nimport { formatPlaca } from '../format/placa.js';\nimport { formatRenavam } from '../format/renavam.js';\nimport { formatTelefone } from '../format/telefone.js';\nimport { formatTituloEleitor } from '../format/titulo-eleitor.js';\nimport type { FormatResult, UfCode } from '../types/validation-result.js';\n\nexport type MaskableDocumentType =\n | 'cpf'\n | 'cnpj'\n | 'cep'\n | 'placa'\n | 'pis-pasep'\n | 'telefone'\n | 'cnh'\n | 'renavam'\n | 'titulo-eleitor'\n | 'nfe-chave'\n | 'boleto'\n | 'cartao-credito'\n | 'inscricao-estadual'\n | 'inscricao-estadual-produtor-rural'\n | 'pix';\n\nexport const MASKABLE_DOCUMENT_TYPES = [\n 'cpf',\n 'cnpj',\n 'cep',\n 'placa',\n 'pis-pasep',\n 'telefone',\n 'cnh',\n 'renavam',\n 'titulo-eleitor',\n 'nfe-chave',\n 'boleto',\n 'cartao-credito',\n 'inscricao-estadual',\n 'inscricao-estadual-produtor-rural',\n 'pix',\n] as const satisfies readonly MaskableDocumentType[];\n\nexport type MaskOptions = {\n uf?: UfCode;\n};\n\nexport function isMaskableDocumentType(type: string): type is MaskableDocumentType {\n return (MASKABLE_DOCUMENT_TYPES as readonly string[]).includes(type);\n}\n\nexport function mask(\n raw: string,\n type: MaskableDocumentType,\n options: MaskOptions = {},\n): FormatResult {\n if (type === 'inscricao-estadual' && !options.uf) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'UF is required for inscricao-estadual masking',\n };\n }\n\n return dispatchMask(raw, type, options);\n}\n\n/** Runtime guard for dynamic callers (non-exhaustive type string). */\nexport function maskRuntime(\n type: string,\n raw: string,\n options: MaskOptions = {},\n): FormatResult {\n if (!isMaskableDocumentType(type)) {\n return { ok: false, code: 'UNSUPPORTED_FORMAT', message: `Unknown document type: ${type}` };\n }\n return mask(raw, type, options);\n}\n\nfunction dispatchMask(raw: string, type: MaskableDocumentType, options: MaskOptions): FormatResult {\n switch (type) {\n case 'cpf':\n return formatCpf(raw);\n case 'cnpj':\n return formatCnpj(raw);\n case 'cep':\n return formatCep(raw);\n case 'placa':\n return formatPlaca(raw);\n case 'pis-pasep':\n return formatPisPasep(raw);\n case 'telefone':\n return formatTelefone(raw);\n case 'cnh':\n return formatCnh(raw);\n case 'renavam':\n return formatRenavam(raw);\n case 'titulo-eleitor':\n return formatTituloEleitor(raw);\n case 'nfe-chave':\n return formatNfeChave(raw);\n case 'boleto':\n return formatBoleto(raw);\n case 'cartao-credito':\n return formatCartaoCredito(raw);\n case 'inscricao-estadual':\n return formatInscricaoEstadual(raw, { uf: options.uf as UfCode });\n case 'inscricao-estadual-produtor-rural':\n return formatIeProdutorRural(raw);\n case 'pix':\n return formatPixKey(raw);\n default: {\n const _exhaustive: never = type;\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: `Unsupported type: ${String(_exhaustive)}`,\n };\n }\n }\n}\n"]}
import { brandTelefone } from './chunk-NUQSMT4Y.js';
// src/core/telefone/constants.ts
var TELEFONE_COUNTRY_CODE = "55";
var ANATEL_DDDS = [
"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"
];
var ANATEL_DDD_SET = new Set(ANATEL_DDDS);
var TELEFONE_DDD_LENGTH = 2;
var TELEFONE_CELULAR_MASK_PATTERN = /^(\d{2})(\d{5})(\d{4})$/;
var TELEFONE_FIXO_MASK_PATTERN = /^(\d{2})(\d{4})(\d{4})$/;
var TELEFONE_EMERGENCY_CODES = /* @__PURE__ */ new Set(["190", "192", "193", "197", "198", "199"]);
var TELEFONE_GOLDEN_CELULAR = "11999999999";
var TELEFONE_GOLDEN_CELULAR_MASKED = "(11) 99999-9999";
var TELEFONE_GOLDEN_FIXO = "1133333333";
var TELEFONE_GOLDEN_FIXO_MASKED = "(11) 3333-3333";
var TELEFONE_OFFICIAL_SOURCE_URL = "https://www.gov.br/anatel/pt-br/regulado/numeracao/plano-de-numeracao-brasileiro";
var TELEFONE_ANATEL_DDD_PANEL_URL = "https://informacoes.anatel.gov.br/paineis/areas-tarifarias/codigos-nacionais";
// src/strip/telefone.ts
function extractTelefoneDigits(input) {
return input.replace(/\D/g, "");
}
function normalizeTelefoneDigits(input) {
let digits = extractTelefoneDigits(input);
if (digits.length === 0) {
return "";
}
if (digits.startsWith(TELEFONE_COUNTRY_CODE) && (digits.length === 12 || digits.length === 13)) {
digits = digits.slice(TELEFONE_COUNTRY_CODE.length);
}
if (digits.startsWith("0") && (digits.length === 11 || digits.length === 12)) {
digits = digits.slice(1);
}
return digits;
}
function stripTelefone(input) {
return normalizeTelefoneDigits(input);
}
// src/core/telefone/index.ts
var MASK_CHARS_PATTERN = /[\s().+-]/g;
function failure(code, message) {
return { ok: false, code, message };
}
function hasInvalidCharacters(input) {
const withoutMask = input.replace(MASK_CHARS_PATTERN, "");
return /[^0-9]/.test(withoutMask);
}
function detectTipo(local) {
if (local.length === 9 && local[0] === "9") {
return "celular";
}
if (local.length === 8 && /^[2345]/.test(local)) {
return "fixo";
}
return null;
}
function rejectLocalPattern(local, nationalLength) {
if (nationalLength === 11) {
return failure(
"KNOWN_INVALID_PATTERN",
"Mobile numbers must have 9 digits starting with 9 after DDD (Anatel nono d\xEDgito)"
);
}
if (nationalLength === 10 && /^[6789]/.test(local)) {
return failure(
"KNOWN_INVALID_PATTERN",
"Mobile numbers require 9 digits starting with 9; numbers starting with 6\u20139 without the 9th digit are invalid"
);
}
return failure(
"KNOWN_INVALID_PATTERN",
"Landline numbers must have 8 digits starting with 2, 3, 4, or 5 after DDD"
);
}
function validateStructure(input, normalized) {
if (input.trim().length === 0) {
return failure("EMPTY_INPUT", "Telephone input is empty");
}
if (hasInvalidCharacters(input)) {
return failure("INVALID_CHARACTER", "Telephone contains invalid characters");
}
if (normalized.length === 0) {
return failure("EMPTY_INPUT", "Telephone input is empty");
}
if (TELEFONE_EMERGENCY_CODES.has(normalized)) {
return failure("UNSUPPORTED_FORMAT", "Emergency short codes are not subscriber telephone numbers");
}
if (normalized.length !== 10 && normalized.length !== 11) {
return failure(
"INVALID_LENGTH",
"Telephone must have 10 digits (fixo) or 11 digits (celular) after normalization"
);
}
const ddd = normalized.slice(0, TELEFONE_DDD_LENGTH);
if (!ANATEL_DDD_SET.has(ddd)) {
return failure("KNOWN_INVALID_PATTERN", `Area code ${ddd} is not a valid Anatel DDD`);
}
const local = normalized.slice(TELEFONE_DDD_LENGTH);
const tipo = detectTipo(local);
if (!tipo) {
return rejectLocalPattern(local, normalized.length);
}
return { tipo };
}
function isValidTelefone(input) {
return validateTelefone(input).ok;
}
function validateTelefone(input) {
const normalized = normalizeTelefoneDigits(input);
const structural = validateStructure(input, normalized);
if ("ok" in structural) {
return structural;
}
return {
ok: true,
value: brandTelefone(normalized),
tipo: structural.tipo,
format: "telefone"
};
}
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 };
//# sourceMappingURL=chunk-DAR6VOMT.js.map
//# sourceMappingURL=chunk-DAR6VOMT.js.map
{"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"]}
import { stripPisPasep } from './chunk-JLCQ7MGC.js';
import { normalizeTelefoneDigits, extractTelefoneDigits } from './chunk-DAR6VOMT.js';
import { stripInscricaoEstadual } from './chunk-665E36SC.js';
import { stripIeSpRural } from './chunk-CDNOUZEI.js';
import { stripTituloEleitor, stripRenavam, stripCnh, stripPlaca, stripCep } from './chunk-YYHS5WQN.js';
import { stripNfeChave } from './chunk-4SNBZFS5.js';
import { stripCpf } from './chunk-UCJPSJN5.js';
import { stripCnpj } from './chunk-EB3G4IG6.js';
// src/sanitize/fixes.ts
function trimFix(raw) {
const trimmed = raw.trim();
const fixes = [];
if (trimmed !== raw) {
fixes.push("trimmed");
}
return { value: trimmed, fixes };
}
function digitsFix(value, fixes) {
const digits = value.replace(/\D/g, "");
if (digits !== value) {
fixes.push("removed_non_digits");
}
return { value: digits, fixes };
}
function upperAndStripSeparators(value, fixes) {
const upper = value.toUpperCase();
if (upper !== value) {
fixes.push("uppercased");
}
const stripped = upper.replace(/[^A-Z0-9]/g, "");
if (stripped !== upper) {
fixes.push("removed_separators");
}
return { value: stripped, fixes };
}
function placaFix(value, fixes) {
const upper = value.toUpperCase();
if (upper !== value) {
fixes.push("uppercased");
}
if (/[-.\s/]/.test(value)) {
fixes.push("removed_separators");
}
return { value: stripPlaca(upper), fixes };
}
function telefoneFix(value, fixes) {
if (/[\s()-]/.test(value)) {
fixes.push("removed_mask_chars");
}
const digitsOnly = extractTelefoneDigits(value);
const normalized = normalizeTelefoneDigits(value);
if (normalized !== digitsOnly && normalized.length > 0) {
fixes.push("normalized_national");
}
return { value: normalized, fixes };
}
function ieProdutorRuralFix(value, fixes) {
const upper = value.toUpperCase();
if (upper !== value) {
fixes.push("uppercased");
}
if (/^[Pp]/.test(upper)) {
fixes.push("preserved_p_prefix");
}
return { value: stripIeSpRural(upper), fixes };
}
function applyFixes(raw, type) {
const { value: trimmed, fixes } = trimFix(raw);
switch (type) {
case "cpf":
case "cep":
case "pis-pasep":
case "cnh":
case "renavam":
case "nfe-chave":
case "cartao-credito":
case "boleto":
case "titulo-eleitor":
case "inscricao-estadual":
return digitsFix(trimmed, fixes);
case "cnpj":
return upperAndStripSeparators(trimmed, fixes);
case "placa":
return placaFix(trimmed, fixes);
case "telefone":
return telefoneFix(trimmed, fixes);
case "inscricao-estadual-produtor-rural":
return ieProdutorRuralFix(trimmed, fixes);
default: {
const _exhaustive = type;
return { value: _exhaustive, fixes };
}
}
}
function stripForType(value, type) {
switch (type) {
case "cpf":
return stripCpf(value);
case "cnpj":
return stripCnpj(value);
case "cep":
return stripCep(value);
case "placa":
return stripPlaca(value);
case "pis-pasep":
return stripPisPasep(value);
case "telefone":
return normalizeTelefoneDigits(value);
case "cnh":
return stripCnh(value);
case "renavam":
return stripRenavam(value);
case "titulo-eleitor":
return stripTituloEleitor(value);
case "nfe-chave":
return stripNfeChave(value);
case "boleto":
return value.replace(/\D/g, "");
case "cartao-credito":
return value.replace(/\D/g, "");
case "inscricao-estadual":
return stripInscricaoEstadual(value);
case "inscricao-estadual-produtor-rural":
return stripIeSpRural(value);
default: {
const _exhaustive = type;
return _exhaustive;
}
}
}
export { applyFixes, stripForType };
//# sourceMappingURL=chunk-FKFRB3RJ.js.map
//# sourceMappingURL=chunk-FKFRB3RJ.js.map
{"version":3,"sources":["../src/sanitize/fixes.ts"],"names":[],"mappings":"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","file":"chunk-FKFRB3RJ.js","sourcesContent":["import { stripCep } from '../strip/cep.js';\nimport { stripCnh } from '../strip/cnh.js';\nimport { stripCnpj } from '../strip/cnpj.js';\nimport { stripCpf } from '../strip/cpf.js';\nimport { stripIeSpRural } from '../strip/inscricao-estadual-produtor-rural.js';\nimport { stripInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { stripNfeChave } from '../strip/nfe-chave.js';\nimport { stripPisPasep } from '../strip/pis-pasep.js';\nimport { stripPlaca } from '../strip/placa.js';\nimport { stripRenavam } from '../strip/renavam.js';\nimport { stripTituloEleitor } from '../strip/titulo-eleitor.js';\nimport { extractTelefoneDigits, normalizeTelefoneDigits } from '../strip/telefone.js';\n\nexport type SanitizableDocumentType =\n | 'cpf'\n | 'cnpj'\n | 'cep'\n | 'placa'\n | 'pis-pasep'\n | 'telefone'\n | 'cnh'\n | 'renavam'\n | 'titulo-eleitor'\n | 'nfe-chave'\n | 'boleto'\n | 'cartao-credito'\n | 'inscricao-estadual'\n | 'inscricao-estadual-produtor-rural';\n\nexport type FixResult = {\n value: string;\n fixes: string[];\n};\n\nfunction trimFix(raw: string): FixResult {\n const trimmed = raw.trim();\n const fixes: string[] = [];\n if (trimmed !== raw) {\n fixes.push('trimmed');\n }\n return { value: trimmed, fixes };\n}\n\nfunction digitsFix(value: string, fixes: string[]): FixResult {\n const digits = value.replace(/\\D/g, '');\n if (digits !== value) {\n fixes.push('removed_non_digits');\n }\n return { value: digits, fixes };\n}\n\nfunction upperAndStripSeparators(value: string, fixes: string[]): FixResult {\n const upper = value.toUpperCase();\n if (upper !== value) {\n fixes.push('uppercased');\n }\n const stripped = upper.replace(/[^A-Z0-9]/g, '');\n if (stripped !== upper) {\n fixes.push('removed_separators');\n }\n return { value: stripped, fixes };\n}\n\nfunction placaFix(value: string, fixes: string[]): FixResult {\n const upper = value.toUpperCase();\n if (upper !== value) {\n fixes.push('uppercased');\n }\n if (/[-.\\s/]/.test(value)) {\n fixes.push('removed_separators');\n }\n return { value: stripPlaca(upper), fixes };\n}\n\nfunction telefoneFix(value: string, fixes: string[]): FixResult {\n if (/[\\s()-]/.test(value)) {\n fixes.push('removed_mask_chars');\n }\n const digitsOnly = extractTelefoneDigits(value);\n const normalized = normalizeTelefoneDigits(value);\n if (normalized !== digitsOnly && normalized.length > 0) {\n fixes.push('normalized_national');\n }\n return { value: normalized, fixes };\n}\n\nfunction ieProdutorRuralFix(value: string, fixes: string[]): FixResult {\n const upper = value.toUpperCase();\n if (upper !== value) {\n fixes.push('uppercased');\n }\n if (/^[Pp]/.test(upper)) {\n fixes.push('preserved_p_prefix');\n }\n return { value: stripIeSpRural(upper), fixes };\n}\n\nexport function applyFixes(raw: string, type: SanitizableDocumentType): FixResult {\n const { value: trimmed, fixes } = trimFix(raw);\n\n switch (type) {\n case 'cpf':\n case 'cep':\n case 'pis-pasep':\n case 'cnh':\n case 'renavam':\n case 'nfe-chave':\n case 'cartao-credito':\n case 'boleto':\n case 'titulo-eleitor':\n case 'inscricao-estadual':\n return digitsFix(trimmed, fixes);\n case 'cnpj':\n return upperAndStripSeparators(trimmed, fixes);\n case 'placa':\n return placaFix(trimmed, fixes);\n case 'telefone':\n return telefoneFix(trimmed, fixes);\n case 'inscricao-estadual-produtor-rural':\n return ieProdutorRuralFix(trimmed, fixes);\n default: {\n const _exhaustive: never = type;\n return { value: _exhaustive, fixes };\n }\n }\n}\n\n/** Validates canonical strip output matches fix pipeline (used in tests). */\nexport function stripForType(value: string, type: SanitizableDocumentType): string {\n switch (type) {\n case 'cpf':\n return stripCpf(value);\n case 'cnpj':\n return stripCnpj(value);\n case 'cep':\n return stripCep(value);\n case 'placa':\n return stripPlaca(value);\n case 'pis-pasep':\n return stripPisPasep(value);\n case 'telefone':\n return normalizeTelefoneDigits(value);\n case 'cnh':\n return stripCnh(value);\n case 'renavam':\n return stripRenavam(value);\n case 'titulo-eleitor':\n return stripTituloEleitor(value);\n case 'nfe-chave':\n return stripNfeChave(value);\n case 'boleto':\n return value.replace(/\\D/g, '');\n case 'cartao-credito':\n return value.replace(/\\D/g, '');\n case 'inscricao-estadual':\n return stripInscricaoEstadual(value);\n case 'inscricao-estadual-produtor-rural':\n return stripIeSpRural(value);\n default: {\n const _exhaustive: never = type;\n return _exhaustive;\n }\n }\n}\n"]}
import { stripForType } from './chunk-FKFRB3RJ.js';
import { validateRenavam } from './chunk-I66ZRSEN.js';
import { validateNfeChave } from './chunk-AO6UTQ4A.js';
import { validatePisPasep } from './chunk-JLCQ7MGC.js';
import { validatePlaca } from './chunk-3LMDBXU6.js';
import { validateTelefone } from './chunk-DAR6VOMT.js';
import { validateTituloEleitor } from './chunk-CSVGWTCG.js';
import { validateInscricaoEstadual } from './chunk-665E36SC.js';
import { validateIeSpRural } from './chunk-CDNOUZEI.js';
import { validateBoleto } from './chunk-AU6TW3GH.js';
import { validateBrCode } from './chunk-V7UJ55KW.js';
import { validatePixKey } from './chunk-H3MLGGFI.js';
import { validateCpf } from './chunk-63G7QO73.js';
import { validateCartaoCredito } from './chunk-ANWQBKGN.js';
import { validateCep } from './chunk-TE6NSONR.js';
import { validateCnh } from './chunk-YNVMVDFN.js';
import { validateCnpj } from './chunk-FBARVLLP.js';
// src/platform/normalize.ts
var SANITIZABLE_PLATFORM_TYPES = /* @__PURE__ */ new Set([
"cpf",
"cnpj",
"cep",
"placa",
"pis-pasep",
"telefone",
"cnh",
"renavam",
"titulo-eleitor",
"nfe-chave",
"boleto",
"cartao-credito",
"inscricao-estadual",
"inscricao-estadual-produtor-rural"
]);
function isSanitizablePlatformType(type) {
return SANITIZABLE_PLATFORM_TYPES.has(type);
}
function stripForPlatform(raw, type) {
if (type === "pix" || type === "brcode") {
return raw;
}
if (isSanitizablePlatformType(type)) {
return stripForType(raw, type);
}
return raw;
}
function normalizeForPlatform(raw, type, options = {}) {
const trimmed = raw.trim();
const stripped = stripForPlatform(trimmed, type);
const validated = tryValidatedCanonical(stripped, type, options.uf);
return validated ?? stripped;
}
function tryValidatedCanonical(value, type, uf) {
switch (type) {
case "cpf": {
const result = validateCpf(value);
return result.ok ? result.value : null;
}
case "cnpj": {
const result = validateCnpj(value);
return result.ok ? result.value : null;
}
case "cep": {
const result = validateCep(value);
return result.ok ? result.value : null;
}
case "placa": {
const result = validatePlaca(value);
return result.ok ? result.value : null;
}
case "pis-pasep": {
const result = validatePisPasep(value);
return result.ok ? result.value : null;
}
case "telefone": {
const result = validateTelefone(value);
return result.ok ? result.value : null;
}
case "cnh": {
const result = validateCnh(value);
return result.ok ? result.value : null;
}
case "renavam": {
const result = validateRenavam(value);
return result.ok ? result.value : null;
}
case "titulo-eleitor": {
const result = validateTituloEleitor(value);
return result.ok ? result.value : null;
}
case "nfe-chave": {
const result = validateNfeChave(value);
return result.ok ? result.value : null;
}
case "boleto": {
const result = validateBoleto(value);
return result.ok ? result.value : null;
}
case "cartao-credito": {
const result = validateCartaoCredito(value);
return result.ok ? result.value : null;
}
case "inscricao-estadual": {
if (!uf) {
return null;
}
const result = validateInscricaoEstadual(value, { uf });
return result.ok ? result.value : null;
}
case "inscricao-estadual-produtor-rural": {
const result = validateIeSpRural(value);
return result.ok ? result.value : null;
}
case "pix": {
const result = validatePixKey(value);
return result.ok ? result.value : null;
}
case "brcode": {
const result = validateBrCode(value);
return result.ok ? result.value : null;
}
default: {
return null;
}
}
}
export { normalizeForPlatform };
//# sourceMappingURL=chunk-G6OBZRZM.js.map
//# sourceMappingURL=chunk-G6OBZRZM.js.map
{"version":3,"sources":["../src/platform/normalize.ts"],"names":[],"mappings":"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","file":"chunk-G6OBZRZM.js","sourcesContent":["/**\n * Canonical normalization for platform compare/diff (BR-PLATFORM-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { validateBrCode } from '../core/brcode/index.js';\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport { validateCep } from '../core/cep/index.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport { validateCnpj } from '../core/cnpj/index.js';\nimport { validateCpf } from '../core/cpf/index.js';\nimport { validateInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { validateIeSpRural } from '../core/inscricao-estadual/sp-rural.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport { validatePisPasep } from '../core/pis-pasep/index.js';\nimport { validatePlaca } from '../core/placa/index.js';\nimport { validatePixKey } from '../core/pix/index.js';\nimport { validateRenavam } from '../core/renavam/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport { stripForType } from '../sanitize/fixes.js';\nimport type { SanitizableDocumentType } from '../sanitize/index.js';\nimport type { UfCode } from '../types/validation-result.js';\nimport type { PlatformDocumentType, PlatformOptions } from './types.js';\n\nconst SANITIZABLE_PLATFORM_TYPES = new Set<PlatformDocumentType>([\n 'cpf',\n 'cnpj',\n 'cep',\n 'placa',\n 'pis-pasep',\n 'telefone',\n 'cnh',\n 'renavam',\n 'titulo-eleitor',\n 'nfe-chave',\n 'boleto',\n 'cartao-credito',\n 'inscricao-estadual',\n 'inscricao-estadual-produtor-rural',\n]);\n\nfunction isSanitizablePlatformType(type: PlatformDocumentType): type is SanitizableDocumentType {\n return SANITIZABLE_PLATFORM_TYPES.has(type);\n}\n\nfunction stripForPlatform(raw: string, type: PlatformDocumentType): string {\n if (type === 'pix' || type === 'brcode') {\n return raw;\n }\n if (isSanitizablePlatformType(type)) {\n return stripForType(raw, type);\n }\n return raw;\n}\n\nexport function normalizeForPlatform(\n raw: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): string {\n const trimmed = raw.trim();\n const stripped = stripForPlatform(trimmed, type);\n const validated = tryValidatedCanonical(stripped, type, options.uf);\n return validated ?? stripped;\n}\n\nfunction tryValidatedCanonical(\n value: string,\n type: PlatformDocumentType,\n uf?: UfCode,\n): string | null {\n switch (type) {\n case 'cpf': {\n const result = validateCpf(value);\n return result.ok ? result.value : null;\n }\n case 'cnpj': {\n const result = validateCnpj(value);\n return result.ok ? result.value : null;\n }\n case 'cep': {\n const result = validateCep(value);\n return result.ok ? result.value : null;\n }\n case 'placa': {\n const result = validatePlaca(value);\n return result.ok ? result.value : null;\n }\n case 'pis-pasep': {\n const result = validatePisPasep(value);\n return result.ok ? result.value : null;\n }\n case 'telefone': {\n const result = validateTelefone(value);\n return result.ok ? result.value : null;\n }\n case 'cnh': {\n const result = validateCnh(value);\n return result.ok ? result.value : null;\n }\n case 'renavam': {\n const result = validateRenavam(value);\n return result.ok ? result.value : null;\n }\n case 'titulo-eleitor': {\n const result = validateTituloEleitor(value);\n return result.ok ? result.value : null;\n }\n case 'nfe-chave': {\n const result = validateNfeChave(value);\n return result.ok ? result.value : null;\n }\n case 'boleto': {\n const result = validateBoleto(value);\n return result.ok ? result.value : null;\n }\n case 'cartao-credito': {\n const result = validateCartaoCredito(value);\n return result.ok ? result.value : null;\n }\n case 'inscricao-estadual': {\n if (!uf) {\n return null;\n }\n const result = validateInscricaoEstadual(value, { uf });\n return result.ok ? result.value : null;\n }\n case 'inscricao-estadual-produtor-rural': {\n const result = validateIeSpRural(value);\n return result.ok ? result.value : null;\n }\n case 'pix': {\n const result = validatePixKey(value);\n return result.ok ? result.value : null;\n }\n case 'brcode': {\n const result = validateBrCode(value);\n return result.ok ? result.value : null;\n }\n default: {\n return null;\n }\n }\n}\n"]}
import { normalizeForPlatform } from './chunk-G6OBZRZM.js';
// src/platform/types.ts
var PLATFORM_DOCUMENT_TYPES = [
"cpf",
"cnpj",
"cep",
"placa",
"pis-pasep",
"telefone",
"cnh",
"renavam",
"titulo-eleitor",
"nfe-chave",
"boleto",
"cartao-credito",
"inscricao-estadual",
"inscricao-estadual-produtor-rural",
"pix",
"brcode"
];
function isPlatformDocumentType(type) {
return PLATFORM_DOCUMENT_TYPES.includes(type);
}
// src/compare/index.ts
function compare(a, b, type, options = {}) {
const left = normalizeForPlatform(a, type, options);
const right = normalizeForPlatform(b, type, options);
return { equal: left === right };
}
function compareRuntime(a, b, type, options = {}) {
if (!isPlatformDocumentType(type)) {
return { equal: false, code: "UNSUPPORTED_FORMAT", message: `Unknown document type: ${type}` };
}
return compare(a, b, type, options);
}
export { compare, compareRuntime };
//# sourceMappingURL=chunk-HUIMOB5E.js.map
//# sourceMappingURL=chunk-HUIMOB5E.js.map
{"version":3,"sources":["../src/platform/types.ts","../src/compare/index.ts"],"names":[],"mappings":";;;AAKO,IAAM,uBAAA,GAA0B;AAAA,EACrC,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mCAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA;AAMO,SAAS,uBAAuB,IAAA,EAA4C;AACjF,EAAA,OAAQ,uBAAA,CAA8C,SAAS,IAAI,CAAA;AACrE;;;AClBO,SAAS,QACd,CAAA,EACA,CAAA,EACA,IAAA,EACA,OAAA,GAA2B,EAAC,EACb;AACf,EAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,CAAA,EAAG,IAAA,EAAM,OAAO,CAAA;AAClD,EAAA,MAAM,KAAA,GAAQ,oBAAA,CAAqB,CAAA,EAAG,IAAA,EAAM,OAAO,CAAA;AACnD,EAAA,OAAO,EAAE,KAAA,EAAO,IAAA,KAAS,KAAA,EAAM;AACjC;AAGO,SAAS,eACd,CAAA,EACA,CAAA,EACA,IAAA,EACA,OAAA,GAA2B,EAAC,EACmD;AAC/E,EAAA,IAAI,CAAC,sBAAA,CAAuB,IAAI,CAAA,EAAG;AACjC,IAAA,OAAO,EAAE,OAAO,KAAA,EAAO,IAAA,EAAM,sBAAsB,OAAA,EAAS,CAAA,uBAAA,EAA0B,IAAI,CAAA,CAAA,EAAG;AAAA,EAC/F;AACA,EAAA,OAAO,OAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,IAAA,EAAM,OAAO,CAAA;AACpC","file":"chunk-HUIMOB5E.js","sourcesContent":["import type { SanitizableDocumentType } from '../sanitize/index.js';\n\n/** Document types supported by compare, batch, and diff platform APIs. */\nexport type PlatformDocumentType = SanitizableDocumentType | 'pix' | 'brcode';\n\nexport const PLATFORM_DOCUMENT_TYPES = [\n 'cpf',\n 'cnpj',\n 'cep',\n 'placa',\n 'pis-pasep',\n 'telefone',\n 'cnh',\n 'renavam',\n 'titulo-eleitor',\n 'nfe-chave',\n 'boleto',\n 'cartao-credito',\n 'inscricao-estadual',\n 'inscricao-estadual-produtor-rural',\n 'pix',\n 'brcode',\n] as const satisfies readonly PlatformDocumentType[];\n\nexport type PlatformOptions = {\n uf?: import('../types/validation-result.js').UfCode;\n};\n\nexport function isPlatformDocumentType(type: string): type is PlatformDocumentType {\n return (PLATFORM_DOCUMENT_TYPES as readonly string[]).includes(type);\n}\n","/**\n * Unified equality check — normalizes via strip/validate canonical (BR-COMPARE-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { normalizeForPlatform } from '../platform/normalize.js';\nimport { isPlatformDocumentType } from '../platform/types.js';\nimport type { PlatformDocumentType, PlatformOptions } from '../platform/types.js';\n\nexport type CompareResult = {\n equal: boolean;\n};\n\nexport function compare(\n a: string,\n b: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): CompareResult {\n const left = normalizeForPlatform(a, type, options);\n const right = normalizeForPlatform(b, type, options);\n return { equal: left === right };\n}\n\n/** Runtime guard for dynamic callers (non-exhaustive type string). */\nexport function compareRuntime(\n a: string,\n b: string,\n type: string,\n options: PlatformOptions = {},\n): CompareResult | { equal: false; code: 'UNSUPPORTED_FORMAT'; message: string } {\n if (!isPlatformDocumentType(type)) {\n return { equal: false, code: 'UNSUPPORTED_FORMAT', message: `Unknown document type: ${type}` };\n }\n return compare(a, b, type, options);\n}\n"]}
import { formatNfeChave } from './chunk-JKDU7QYP.js';
import { formatPisPasep } from './chunk-VSW3NBJQ.js';
import { formatPixKey } from './chunk-IYOPXJLY.js';
import { formatPlaca } from './chunk-YD5MPZWY.js';
import { formatRenavam } from './chunk-LAEUXOF6.js';
import { formatTelefone } from './chunk-PD7ZTWMM.js';
import { formatTituloEleitor } from './chunk-EVULAGR5.js';
import { formatCpf } from './chunk-TJCE4TVX.js';
import { formatIeProdutorRural } from './chunk-54UWHK5L.js';
import { formatBoleto } from './chunk-XWHGXSQV.js';
import { formatCartaoCredito } from './chunk-B6A7VF4R.js';
import { formatCep } from './chunk-MESOO5GZ.js';
import { formatCnh } from './chunk-VWVQWN2G.js';
import { formatCnpj } from './chunk-RMTHCPIV.js';
import { computeRenavamCheckDigit, RENAVAM_BASE_LENGTH } from './chunk-I66ZRSEN.js';
import { NFE_IBGE_UF_CODES, validateNfeChave, NFE_MODELO_NFE, computeNfeChaveCheckDigit, NFE_CHAVE_GOLDEN_PRIMARY } from './chunk-AO6UTQ4A.js';
import { PIS_PASEP_DV_WEIGHTS, PIS_PASEP_BASE_LENGTH } from './chunk-JLCQ7MGC.js';
import { PLACA_LEGACY_PATTERN, PLACA_MERCOSUL_PATTERN, validatePlaca } from './chunk-3LMDBXU6.js';
import { ANATEL_DDDS, validateTelefone } from './chunk-DAR6VOMT.js';
import { TITULO_ELEITOR_UF_BY_CODE, validateTituloEleitor, TITULO_ELEITOR_SEQUENTIAL_LENGTH, computeTituloEleitorCheckDigits, TITULO_ELEITOR_GOLDEN_PRIMARY, TITULO_ELEITOR_GOLDEN_SP_SPECIAL } from './chunk-CSVGWTCG.js';
import { validateInscricaoEstadual, formatInscricaoEstadual } from './chunk-665E36SC.js';
import { validateIeSpRural, computeIeSpCheckDigit, IE_SP_DV1_WEIGHTS, IE_SP_RURAL_GOLDEN, IE_SP_GOLDEN, IE_MT_GOLDEN_LEGACY, IE_DF_GOLDEN, computeIeToCheckDigit, computeIeRoCheckDigit, computeIeCyclicMod11CheckDigit, computeIeRrCheckDigit, computeIeAmCheckDigit, computeIeAlCheckDigit, IE_AP_PREFIX, computeIeApCheckDigit, IE_GO_PREFIXES, computeIeGoCheckDigit, computeIePeCheckDigit, computeIeBaModule, computeIeBaCheckDigit, computeIeMgFirstCheckDigit, computeIeMgSecondCheckDigit, IE_MT_PREFIX, computeIeMtCheckDigit, IE_DF_PREFIX, computeIeDfCheckDigit, IE_DF_DV1_WEIGHTS, IE_DF_DV2_WEIGHTS, IE_SP_DV2_WEIGHTS, IE_RR_PREFIX, computeIeCeCheckDigit, IE_AL_PREFIX, computeIePrStyleCheckDigit, IE_RN_PREFIX, IE_MA_PREFIX, IE_PA_PREFIX, IE_MS_PREFIX, computeIeAcCheckDigit, IE_AC_PREFIX } from './chunk-CDNOUZEI.js';
import { buildArrecadacaoGoldenPair, validateArrecadacao, validateCodigoBarras } from './chunk-N6RQICAP.js';
import { convertCodigoBarrasToLinhaDigits, BOLETO_GOLDEN_LINHA_STRIPPED, computeModulo11BarcodeDv, BOLETO_CURRENCY_REAL } from './chunk-E2EFGMWA.js';
import { validateBrCode, buildStaticPixBrCode, BRCODE_GOLDEN_STATIC_EVP } from './chunk-V7UJ55KW.js';
import { validatePixEvpKey, PIX_GOLDEN_EVP } from './chunk-H3MLGGFI.js';
import { CPF_DV1_WEIGHTS, CPF_DV2_WEIGHTS, CPF_BASE_LENGTH } from './chunk-63G7QO73.js';
import { detectCardBrand, validateCartaoCredito, CARTAO_GOLDEN_AMEX, CARTAO_GOLDEN_MASTERCARD, CARTAO_GOLDEN_VISA, HIPERCARD_IIN_PREFIXES, ELO_IIN_PREFIXES } from './chunk-ANWQBKGN.js';
import { validateCep } from './chunk-TE6NSONR.js';
import { computeCnhCheckDigits, CNH_BASE_LENGTH } from './chunk-YNVMVDFN.js';
import { CNPJ_DV1_WEIGHTS, cnpjCharValue, CNPJ_DV2_WEIGHTS, CNPJ_BASE_LENGTH } from './chunk-FBARVLLP.js';
import { computeCheckDigit } from './chunk-OTZHMJYE.js';
// src/generate/apply-mask.ts
function applyMask(type, value) {
switch (type) {
case "cpf": {
const result = formatCpf(value);
return result.ok ? result.formatted : value;
}
case "cnpj": {
const result = formatCnpj(value);
return result.ok ? result.formatted : value;
}
case "cep": {
const result = formatCep(value);
return result.ok ? result.formatted : value;
}
case "placa": {
const result = formatPlaca(value);
return result.ok ? result.formatted : value;
}
case "pis-pasep": {
const result = formatPisPasep(value);
return result.ok ? result.formatted : value;
}
case "renavam": {
const result = formatRenavam(value);
return result.ok ? result.formatted : value;
}
case "cnh": {
const result = formatCnh(value);
return result.ok ? result.formatted : value;
}
case "telefone": {
const result = formatTelefone(value);
return result.ok ? result.formatted : value;
}
case "cartao-credito": {
const result = formatCartaoCredito(value);
return result.ok ? result.formatted : value;
}
case "inscricao-estadual":
return value;
case "titulo-eleitor": {
const result = formatTituloEleitor(value);
return result.ok ? result.formatted : value;
}
case "pix": {
const result = formatPixKey(value);
return result.ok ? result.formatted : value;
}
case "nfe-chave": {
const result = formatNfeChave(value);
return result.ok ? result.formatted : value;
}
case "boleto": {
const result = formatBoleto(value);
return result.ok ? result.formatted : value;
}
case "boleto-arrecadacao":
return value;
case "brcode":
return value;
case "inscricao-estadual-produtor-rural": {
const result = formatIeProdutorRural(value);
return result.ok ? result.formatted : value;
}
default: {
const _exhaustive = type;
return _exhaustive;
}
}
}
// src/generate/boleto.ts
var MAX_ATTEMPTS = 80;
var BANK_CODES = ["001", "033", "104", "237", "341", "756"];
function buildBarcode(rng, validateBarcode) {
const bank = rng.pick(BANK_CODES);
const fator = rng.digits(4);
const valor = rng.digits(10);
const freeField = rng.digits(25);
const withoutDv = bank + BOLETO_CURRENCY_REAL + fator + valor + freeField;
const dv = computeModulo11BarcodeDv(withoutDv);
const barcode = `${bank}${BOLETO_CURRENCY_REAL}${String(dv)}${fator}${valor}${freeField}`;
if (!validateBarcode(barcode).ok) {
return null;
}
return barcode;
}
function generateBoletoValue(rng, validateBarcode = validateCodigoBarras) {
for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
const barcode = buildBarcode(rng, validateBarcode);
if (barcode) {
return convertCodigoBarrasToLinhaDigits(barcode);
}
}
return BOLETO_GOLDEN_LINHA_STRIPPED;
}
// src/generate/boleto-arrecadacao.ts
var ARRECADACAO_GOLDEN_LINHA = buildArrecadacaoGoldenPair({
segment: "4",
valueType: "6",
value: "00000008123",
company: "4567",
free: "89012345678901234567890123"
}).linha;
var MAX_ATTEMPTS2 = 80;
var VALUE_TYPES = ["6", "7", "8", "9"];
var SEGMENTS = ["1", "2", "3", "4", "5", "6", "7", "9"];
function applyArrecadacaoLinhaMask(linha) {
return `${linha.slice(0, 11)} ${linha.slice(11, 23)} ${linha.slice(23, 35)} ${linha.slice(35, 47)} ${linha.charAt(47)}`;
}
function generateBoletoArrecadacaoValue(rng, validate = validateArrecadacao) {
for (let attempt = 0; attempt < MAX_ATTEMPTS2; attempt++) {
const pair = buildArrecadacaoGoldenPair({
segment: rng.pick(SEGMENTS),
valueType: rng.pick(VALUE_TYPES),
value: rng.digits(11),
company: rng.digits(4),
free: rng.digits(25)
});
if (validate(pair.linha).ok) {
return pair.linha;
}
}
return ARRECADACAO_GOLDEN_LINHA;
}
// src/generate/pix.ts
var MAX_ATTEMPTS3 = 80;
function seededUuidV4(rng) {
const bytes = Array.from({ length: 16 }, () => rng.int(0, 255));
bytes[6] = bytes[6] & 15 | 64;
bytes[8] = bytes[8] & 63 | 128;
const hex = bytes.map((byte) => byte.toString(16).padStart(2, "0")).join("");
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20, 32)}`;
}
function generatePixEvpValue(rng, validate = validatePixEvpKey) {
for (let attempt = 0; attempt < MAX_ATTEMPTS3; attempt++) {
const candidate = seededUuidV4(rng);
if (validate(candidate).ok) {
return candidate;
}
}
return PIX_GOLDEN_EVP;
}
// src/generate/brcode.ts
var MAX_ATTEMPTS4 = 50;
var DEFAULT_MERCHANT_NAME = "Merchant Test";
var DEFAULT_MERCHANT_CITY = "BRASILIA";
function generateBrcodeValue(rng, input = {}, validate = validateBrCode) {
const pixKey = input.pixKey ?? generatePixEvpValue(rng);
const merchantName = input.merchantName ?? DEFAULT_MERCHANT_NAME;
const merchantCity = input.merchantCity ?? DEFAULT_MERCHANT_CITY;
for (let attempt = 0; attempt < MAX_ATTEMPTS4; attempt++) {
const payload = buildStaticPixBrCode({
pixKey,
merchantName,
merchantCity,
...input.amount ? { amount: input.amount } : {},
...input.txid ? { txid: input.txid } : {}
});
if (validate(payload).ok) {
return payload;
}
}
return BRCODE_GOLDEN_STATIC_EVP;
}
// src/generate/random.ts
function mulberry32(seed) {
let state = seed >>> 0;
return () => {
state = state + 1831565813 >>> 0;
let t = state;
t = Math.imul(t ^ t >>> 15, t | 1);
t ^= t + Math.imul(t ^ t >>> 7, t | 61);
return ((t ^ t >>> 14) >>> 0) / 4294967296;
};
}
function createRandomSource(seed) {
const nextFn = seed === void 0 ? () => Math.random() : mulberry32(seed);
return {
next: nextFn,
int(min, max) {
return Math.floor(nextFn() * (max - min + 1)) + min;
},
digit() {
return String(Math.floor(nextFn() * 10));
},
digits(count) {
let out = "";
for (let i = 0; i < count; i++) {
out += this.digit();
}
return out;
},
letter() {
const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
return letters.charAt(this.int(0, letters.length - 1));
},
pick(items) {
return items[this.int(0, items.length - 1)];
}
};
}
function hasRepeatedChars(value) {
const first = value[0];
for (let i = 1; i < value.length; i++) {
if (value[i] !== first) {
return false;
}
}
return true;
}
function computeLuhnCheckDigit(partial) {
let sum = 0;
let double = true;
for (let i = partial.length - 1; i >= 0; i--) {
let digit = Number(partial.charAt(i));
if (double) {
digit *= 2;
if (digit > 9) {
digit -= 9;
}
}
sum += digit;
double = !double;
}
return String((10 - sum % 10) % 10);
}
// src/generate/cartao-credito.ts
var MAX_ATTEMPTS5 = 50;
var GENERATABLE_CARD_BRANDS = [
"visa",
"mastercard",
"amex",
"elo",
"hipercard"
];
var BRAND_FALLBACKS = {
visa: CARTAO_GOLDEN_VISA,
mastercard: CARTAO_GOLDEN_MASTERCARD,
amex: CARTAO_GOLDEN_AMEX,
elo: "401178000000006",
hipercard: "606282000000003"
};
function buildBrandPartial(rng, brand) {
switch (brand) {
case "visa":
return `411111${rng.digits(9)}`;
case "mastercard":
return `${rng.pick(["51", "52", "53", "54", "55"])}${rng.digits(13)}`;
case "amex":
return `${rng.pick(["34", "37"])}${rng.digits(12)}`;
case "elo": {
const prefix = rng.pick(ELO_IIN_PREFIXES);
return `${prefix}${rng.digits(16 - prefix.length - 1)}`;
}
case "hipercard": {
const prefix = rng.pick(HIPERCARD_IIN_PREFIXES);
return `${prefix}${rng.digits(16 - prefix.length - 1)}`;
}
default: {
const _exhaustive = brand;
return _exhaustive;
}
}
}
function buildRandomPartial(rng) {
const length = rng.int(13, 16);
return rng.digits(length - 1);
}
function generateCartaoCreditoValue(rng, brand, detectBrand = detectCardBrand, validate = validateCartaoCredito) {
for (let attempt = 0; attempt < MAX_ATTEMPTS5; attempt++) {
const partial = brand ? buildBrandPartial(rng, brand) : buildRandomPartial(rng);
if (hasRepeatedChars(partial)) {
continue;
}
const candidate = partial + computeLuhnCheckDigit(partial);
if (!validate(candidate).ok) {
continue;
}
if (brand && detectBrand(candidate) !== brand) {
continue;
}
return candidate;
}
if (brand) {
return BRAND_FALLBACKS[brand];
}
return CARTAO_GOLDEN_VISA;
}
function isGeneratableCardBrand(brand) {
return GENERATABLE_CARD_BRANDS.includes(brand);
}
// src/generate/cpf-alpha.ts
var CPF_ALPHA_GENERATE_STUB = {
ok: false,
code: "CPF_ALPHA_SPEC_PENDING",
message: "Alphanumeric CPF generation is pending official RFB specification \u2014 numeric CPF only until published"
};
function rejectCpfAlphanumericGenerate() {
return CPF_ALPHA_GENERATE_STUB;
}
function assertCpfAlphanumericGenerateAllowed() {
throw new Error(`${CPF_ALPHA_GENERATE_STUB.code}: ${CPF_ALPHA_GENERATE_STUB.message}`);
}
// src/generate/inscricao-estadual-produtor-rural.ts
var MAX_ATTEMPTS6 = 50;
function generateIeProdutorRuralValue(rng, validate = validateIeSpRural) {
for (let attempt = 0; attempt < MAX_ATTEMPTS6; attempt++) {
const dvInput = rng.digits(8);
const dv = String(computeIeSpCheckDigit(dvInput, IE_SP_DV1_WEIGHTS));
const suffix = rng.digits(3);
const candidate = `P${dvInput}${dv}${suffix}`;
if (validate(candidate).ok) {
return candidate;
}
}
return IE_SP_RURAL_GOLDEN;
}
// src/generate/inscricao-estadual.ts
var MAX_ATTEMPTS7 = 50;
var IE_GENERATE_FALLBACKS = {
AC: "0113253877910",
AL: "248682954",
AM: "917050150",
AP: "039045820",
BA: "63984300",
CE: "836182316",
DF: IE_DF_GOLDEN,
ES: "463921810",
GO: "112237118",
MA: "123517680",
MG: "2490944173923",
MS: "282570926",
MT: IE_MT_GOLDEN_LEGACY,
PA: "153662476",
PB: "312029063",
PE: "064970639",
PI: "465180426",
PR: "0031595584",
RJ: "06540481",
RN: "204502292",
RO: "39206839474860",
RR: "247681047",
RS: "3288345503",
SC: "632480718",
SE: "826594042",
SP: IE_SP_GOLDEN,
TO: "27035910938"
};
function prefixBody8(rng, prefix) {
return prefix + rng.digits(8 - prefix.length);
}
function buildCeStyle(rng, prefix) {
const body = prefix ? prefixBody8(rng, prefix) : rng.digits(8);
return body + String(computeIeCeCheckDigit(body));
}
function buildDualTrailing(rng, prefix, bodyLength, computeFirst, computeSecond) {
const body = prefix + rng.digits(bodyLength - prefix.length);
const first = computeFirst(body);
const second = computeSecond(body + String(first));
return body + String(first) + String(second);
}
function generateSpValue(rng) {
const head = rng.digits(8);
const middle = rng.digits(2);
let partial = `${head}0${middle}0`;
const dv1 = computeIeSpCheckDigit(partial, IE_SP_DV1_WEIGHTS);
partial = `${head}${String(dv1)}${middle}0`;
const dv2 = computeIeSpCheckDigit(partial, IE_SP_DV2_WEIGHTS);
return `${head}${String(dv1)}${middle}${String(dv2)}`;
}
function generateDfValue(rng) {
const core11 = IE_DF_PREFIX + rng.digits(9);
const dv1 = computeIeDfCheckDigit(core11, IE_DF_DV1_WEIGHTS);
const dv2 = computeIeDfCheckDigit(core11, IE_DF_DV2_WEIGHTS, true, dv1);
return `${core11}${String(dv1)}${String(dv2)}`;
}
function generateMtValue(rng) {
const padded = `${IE_MT_PREFIX.padStart(4, "0")}${rng.digits(6)}`;
const dv = computeIeMtCheckDigit(padded.slice(0, 10));
return `${padded.slice(0, 10)}${String(dv)}`;
}
function generateMgValue(rng) {
const body = rng.digits(11);
const first = computeIeMgFirstCheckDigit(body);
const second = computeIeMgSecondCheckDigit(body + String(first));
return body + String(first) + String(second);
}
function generateBaValue(rng) {
const body = rng.digits(6);
const mod = computeIeBaModule(`${body}00`);
const second = computeIeBaCheckDigit(body, mod);
const first = computeIeBaCheckDigit(body + String(second), mod);
return body + String(first) + String(second);
}
function generatePeValue(rng) {
const body = rng.digits(7);
const first = computeIePeCheckDigit(body);
const second = computeIePeCheckDigit(body + String(first));
return body + String(first) + String(second);
}
function generateGoValue(rng) {
const prefix = rng.pick([...IE_GO_PREFIXES]);
const body = prefix + rng.digits(6);
return body + String(computeIeGoCheckDigit(body));
}
function generateApValue(rng) {
const body = IE_AP_PREFIX + rng.digits(6);
const dv = computeIeApCheckDigit(body);
return body + String(dv);
}
var GENERATORS = {
SP: generateSpValue,
DF: generateDfValue,
MT: generateMtValue,
MG: generateMgValue,
BA: generateBaValue,
PE: generatePeValue,
GO: generateGoValue,
AP: generateApValue,
AC: (rng) => buildDualTrailing(rng, IE_AC_PREFIX, 11, computeIeAcCheckDigit, computeIeAcCheckDigit),
AL: (rng) => {
const body = prefixBody8(rng, IE_AL_PREFIX);
return body + String(computeIeAlCheckDigit(body));
},
AM: (rng) => {
const body = rng.digits(8);
return body + String(computeIeAmCheckDigit(body));
},
CE: (rng) => buildCeStyle(rng),
ES: (rng) => buildCeStyle(rng),
SC: (rng) => buildCeStyle(rng),
SE: (rng) => buildCeStyle(rng),
PB: (rng) => buildCeStyle(rng),
PI: (rng) => buildCeStyle(rng),
MS: (rng) => buildCeStyle(rng, IE_MS_PREFIX),
PA: (rng) => buildCeStyle(rng, IE_PA_PREFIX),
MA: (rng) => buildCeStyle(rng, IE_MA_PREFIX),
RN: (rng) => buildCeStyle(rng, IE_RN_PREFIX),
RR: (rng) => {
const body = prefixBody8(rng, IE_RR_PREFIX);
return body + String(computeIeRrCheckDigit(body));
},
PR: (rng) => buildDualTrailing(rng, "", 8, computeIePrStyleCheckDigit, computeIePrStyleCheckDigit),
RJ: (rng) => {
const body = rng.digits(7);
return body + String(computeIeCyclicMod11CheckDigit(body, 2, 7));
},
RS: (rng) => {
const body = rng.digits(9);
return body + String(computeIeCyclicMod11CheckDigit(body, 2, 9));
},
RO: (rng) => {
const body = rng.digits(13);
return body + String(computeIeRoCheckDigit(body));
},
TO: (rng) => {
const body = rng.digits(8);
return body + String(computeIeToCheckDigit(body));
}
};
function generateInscricaoEstadualValue(uf, rng, validate = validateInscricaoEstadual) {
const generator = GENERATORS[uf];
for (let attempt = 0; attempt < MAX_ATTEMPTS7; attempt++) {
const candidate = generator(rng);
if (validate(candidate, { uf }).ok) {
return candidate;
}
}
return IE_GENERATE_FALLBACKS[uf];
}
// src/generate/nfe-chave.ts
var MAX_ATTEMPTS8 = 80;
var NFE_UF_CODES = [...NFE_IBGE_UF_CODES];
function generateNfeChaveValue(rng, validate = validateNfeChave) {
for (let attempt = 0; attempt < MAX_ATTEMPTS8; attempt++) {
const cuf = String(rng.pick(NFE_UF_CODES)).padStart(2, "0");
const aamm = rng.digits(4);
const cnpj = rng.digits(14);
const serie = rng.digits(3);
const invoiceNumber = rng.digits(9);
const emissionType = String(rng.int(0, 9));
const numericCode = rng.digits(8);
const base43 = `${cuf}${aamm}${cnpj}${NFE_MODELO_NFE}${serie}${invoiceNumber}${emissionType}${numericCode}`;
const candidate = `${base43}${String(computeNfeChaveCheckDigit(base43))}`;
if (validate(candidate).ok) {
return candidate;
}
}
return NFE_CHAVE_GOLDEN_PRIMARY;
}
// src/generate/titulo-eleitor.ts
var MAX_ATTEMPTS9 = 50;
var TITULO_ELEITOR_CODE_BY_UF = Object.fromEntries(
Object.entries(TITULO_ELEITOR_UF_BY_CODE).map(([code, uf]) => [uf, Number(code)])
);
var TITULO_GENERATE_FALLBACKS = {
SP: TITULO_ELEITOR_GOLDEN_SP_SPECIAL,
SC: TITULO_ELEITOR_GOLDEN_PRIMARY
};
function deterministicTituloFallback(uf) {
const ufCode = TITULO_ELEITOR_CODE_BY_UF[uf];
const ufDigits = String(ufCode).padStart(2, "0");
const sequential = "12345678";
const checkDigits = computeTituloEleitorCheckDigits(sequential, ufDigits, ufCode);
return `${sequential}${ufDigits}${checkDigits}`;
}
function generateTituloEleitorValue(uf, rng, validate = validateTituloEleitor) {
const ufCode = TITULO_ELEITOR_CODE_BY_UF[uf];
const ufDigits = String(ufCode).padStart(2, "0");
for (let attempt = 0; attempt < MAX_ATTEMPTS9; attempt++) {
const sequential = rng.digits(TITULO_ELEITOR_SEQUENTIAL_LENGTH);
if (hasRepeatedChars(sequential)) {
continue;
}
const checkDigits = computeTituloEleitorCheckDigits(sequential, ufDigits, ufCode);
const candidate = `${sequential}${ufDigits}${checkDigits}`;
if (validate(candidate).ok) {
return candidate;
}
}
return TITULO_GENERATE_FALLBACKS[uf] ?? deterministicTituloFallback(uf);
}
// src/generate/index.ts
var CNPJ_ALNUM_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var MAX_ATTEMPTS10 = 50;
function digitValue(char) {
return Number(char);
}
function randomBaseDigits(rng, length) {
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
const base = rng.digits(length);
if (!hasRepeatedChars(base)) {
return base;
}
}
return "123456789".slice(0, length).padEnd(length, "1");
}
function randomCnpjAlphanumericBase(rng) {
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
let base = "";
for (let i = 0; i < CNPJ_BASE_LENGTH; i++) {
base += CNPJ_ALNUM_CHARS.charAt(rng.int(0, CNPJ_ALNUM_CHARS.length - 1));
}
if (!hasRepeatedChars(base)) {
return base;
}
}
return "12ABC34501DE";
}
function generateCpfValue(rng) {
const base = randomBaseDigits(rng, CPF_BASE_LENGTH);
const dv1 = String(computeCheckDigit(base, CPF_DV1_WEIGHTS, digitValue));
const dv2 = String(computeCheckDigit(base + dv1, CPF_DV2_WEIGHTS, digitValue));
return base + dv1 + dv2;
}
function generateCnpjValue(rng, format) {
if (format === "alphanumeric") {
const base2 = randomCnpjAlphanumericBase(rng);
const dv12 = String(computeCheckDigit(base2, CNPJ_DV1_WEIGHTS, cnpjCharValue));
const dv22 = String(computeCheckDigit(base2 + dv12, CNPJ_DV2_WEIGHTS, cnpjCharValue));
return base2 + dv12 + dv22;
}
const base = randomBaseDigits(rng, CNPJ_BASE_LENGTH);
const dv1 = String(computeCheckDigit(base, CNPJ_DV1_WEIGHTS, digitValue));
const dv2 = String(computeCheckDigit(base + dv1, CNPJ_DV2_WEIGHTS, digitValue));
return base + dv1 + dv2;
}
function generateCepValue(rng) {
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
const value = rng.digits(8);
if (value !== "00000000" && validateCep(value).ok) {
return value;
}
}
return "01310100";
}
function generatePlacaValue(rng, format) {
const mode = format === "legacy" ? "legacy" : "mercosul";
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
const letters = rng.letter() + rng.letter() + rng.letter();
let candidate;
if (mode === "legacy") {
candidate = letters + rng.digits(4);
if (!PLACA_LEGACY_PATTERN.test(candidate)) {
continue;
}
} else {
candidate = letters + rng.digit() + rng.pick(["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]) + rng.digits(2);
if (!PLACA_MERCOSUL_PATTERN.test(candidate)) {
continue;
}
}
if (validatePlaca(candidate).ok) {
return candidate;
}
}
return mode === "legacy" ? "ABC1234" : "ABC1D23";
}
function generatePisValue(rng) {
const base = randomBaseDigits(rng, PIS_PASEP_BASE_LENGTH);
const dv = String(computeCheckDigit(base, PIS_PASEP_DV_WEIGHTS, digitValue));
return base + dv;
}
function generateRenavamValue(rng) {
const base = randomBaseDigits(rng, RENAVAM_BASE_LENGTH);
const dv = String(computeRenavamCheckDigit(base));
return base + dv;
}
function generateCnhValue(rng) {
const base = randomBaseDigits(rng, CNH_BASE_LENGTH);
return base + computeCnhCheckDigits(base);
}
function generateTelefoneValue(rng, format) {
const ddd = rng.pick(ANATEL_DDDS);
const useFixo = format === "fixo";
for (let attempt = 0; attempt < MAX_ATTEMPTS10; attempt++) {
const local = useFixo ? String(rng.int(2, 5)) + rng.digits(7) : `9${rng.digits(8)}`;
const candidate = ddd + local;
if (validateTelefone(candidate).ok) {
return candidate;
}
}
return useFixo ? "1133333333" : "11999999999";
}
function generateCartaoValue(rng, brand) {
return generateCartaoCreditoValue(rng, brand);
}
function applyInscricaoEstadualGenerateMask(value, uf) {
const formatted = formatInscricaoEstadual(value, { uf });
return formatted.ok ? formatted.formatted : value;
}
function generate(type, options = {}) {
const rng = createRandomSource(options.seed);
let value;
switch (type) {
case "cpf":
if (options.format === "alphanumeric") {
assertCpfAlphanumericGenerateAllowed();
}
value = generateCpfValue(rng);
break;
case "cnpj":
value = generateCnpjValue(rng, options.format);
break;
case "cep":
value = generateCepValue(rng);
break;
case "placa":
value = generatePlacaValue(rng, options.format);
break;
case "pis-pasep":
value = generatePisValue(rng);
break;
case "renavam":
value = generateRenavamValue(rng);
break;
case "cnh":
value = generateCnhValue(rng);
break;
case "telefone":
value = generateTelefoneValue(rng, options.format);
break;
case "cartao-credito":
value = generateCartaoValue(rng, options.brand);
break;
case "inscricao-estadual": {
if (!options.uf) {
throw new Error("UF is required for inscricao-estadual generation");
}
value = generateInscricaoEstadualValue(options.uf, rng);
break;
}
case "titulo-eleitor": {
if (!options.uf) {
throw new Error("UF is required for titulo-eleitor generation");
}
value = generateTituloEleitorValue(options.uf, rng);
break;
}
case "pix":
value = generatePixEvpValue(rng);
break;
case "nfe-chave":
value = generateNfeChaveValue(rng);
break;
case "brcode":
value = generateBrcodeValue(rng, {
pixKey: options.pixKey,
merchantName: options.merchantName,
merchantCity: options.merchantCity,
amount: options.amount,
txid: options.txid
});
break;
case "boleto":
value = generateBoletoValue(rng);
break;
case "boleto-arrecadacao":
value = generateBoletoArrecadacaoValue(rng);
break;
case "inscricao-estadual-produtor-rural":
value = generateIeProdutorRuralValue(rng);
break;
default: {
const _exhaustive = type;
throw new Error(`Unsupported generatable type: ${String(_exhaustive)}`);
}
}
if (options.masked && type === "inscricao-estadual") {
return applyInscricaoEstadualGenerateMask(value, options.uf);
}
if (options.masked && type === "boleto-arrecadacao") {
return applyArrecadacaoLinhaMask(value);
}
return options.masked ? applyMask(type, value) : value;
}
export { CPF_ALPHA_GENERATE_STUB, GENERATABLE_CARD_BRANDS, applyArrecadacaoLinhaMask, assertCpfAlphanumericGenerateAllowed, generate, isGeneratableCardBrand, rejectCpfAlphanumericGenerate };
//# sourceMappingURL=chunk-I7DM47IR.js.map
//# sourceMappingURL=chunk-I7DM47IR.js.map

Sorry, the diff of this file is too big to display

import { validateRenavam } from './chunk-I66ZRSEN.js';
import { validateNfeChave } from './chunk-AO6UTQ4A.js';
import { validatePisPasep } from './chunk-JLCQ7MGC.js';
import { validatePlaca } from './chunk-3LMDBXU6.js';
import { validateTelefone } from './chunk-DAR6VOMT.js';
import { validateTituloEleitor } from './chunk-CSVGWTCG.js';
import { validateInscricaoEstadual } from './chunk-665E36SC.js';
import { validateIeSpRural } from './chunk-CDNOUZEI.js';
import { validateBoleto } from './chunk-AU6TW3GH.js';
import { validateBrCode } from './chunk-V7UJ55KW.js';
import { validatePixKey } from './chunk-H3MLGGFI.js';
import { validateCpf } from './chunk-63G7QO73.js';
import { validateCartaoCredito } from './chunk-ANWQBKGN.js';
import { validateCep } from './chunk-TE6NSONR.js';
import { validateCnh } from './chunk-YNVMVDFN.js';
import { validateCnpj } from './chunk-FBARVLLP.js';
// src/platform/validate-dispatch.ts
function validateForPlatform(input, type, options = {}) {
if (type === "inscricao-estadual" && !options.uf) {
return {
ok: false,
code: "UNSUPPORTED_FORMAT",
message: "UF is required for inscricao-estadual validation"
};
}
switch (type) {
case "cpf": {
const result = validateCpf(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cnpj": {
const result = validateCnpj(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cep": {
const result = validateCep(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "placa": {
const result = validatePlaca(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "pis-pasep": {
const result = validatePisPasep(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "telefone": {
const result = validateTelefone(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cnh": {
const result = validateCnh(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "renavam": {
const result = validateRenavam(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "titulo-eleitor": {
const result = validateTituloEleitor(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "nfe-chave": {
const result = validateNfeChave(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "boleto": {
const result = validateBoleto(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cartao-credito": {
const result = validateCartaoCredito(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "inscricao-estadual": {
const result = validateInscricaoEstadual(input, { uf: options.uf });
return result.ok ? { ok: true, value: result.value } : result;
}
case "inscricao-estadual-produtor-rural": {
const result = validateIeSpRural(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "pix": {
const result = validatePixKey(input);
return result.ok ? { ok: true, value: result.value } : result;
}
case "brcode": {
const result = validateBrCode(input);
return result.ok ? { ok: true, value: result.value } : result;
}
default: {
const _exhaustive = type;
return {
ok: false,
code: "UNSUPPORTED_FORMAT",
message: `Unsupported type: ${String(_exhaustive)}`
};
}
}
}
// src/batch/index.ts
function batch(inputs, type, options = {}) {
const valid = [];
const invalid = [];
inputs.forEach((input, index) => {
const result = validateForPlatform(input, type, options);
if (result.ok) {
valid.push({ index, input, value: result.value });
} else {
invalid.push({ index, input, code: result.code, message: result.message });
}
});
return {
valid,
invalid,
summary: {
total: inputs.length,
valid: valid.length,
invalid: invalid.length
}
};
}
export { batch };
//# sourceMappingURL=chunk-N2WVO3GF.js.map
//# sourceMappingURL=chunk-N2WVO3GF.js.map
{"version":3,"sources":["../src/platform/validate-dispatch.ts","../src/batch/index.ts"],"names":[],"mappings":"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","file":"chunk-N2WVO3GF.js","sourcesContent":["import { validateBrCode } from '../core/brcode/index.js';\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport { validateCep } from '../core/cep/index.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport { validateCnpj } from '../core/cnpj/index.js';\nimport { validateCpf } from '../core/cpf/index.js';\nimport { validateInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { validateIeSpRural } from '../core/inscricao-estadual/sp-rural.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport { validatePisPasep } from '../core/pis-pasep/index.js';\nimport { validatePlaca } from '../core/placa/index.js';\nimport { validatePixKey } from '../core/pix/index.js';\nimport { validateRenavam } from '../core/renavam/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport type { UfCode, ValidationErrorCode } from '../types/validation-result.js';\nimport type { PlatformDocumentType, PlatformOptions } from './types.js';\n\nexport type ValidateDispatchSuccess = { ok: true; value: string };\nexport type ValidateDispatchFailure = {\n ok: false;\n code: ValidationErrorCode;\n message: string;\n};\nexport type ValidateDispatchResult = ValidateDispatchSuccess | ValidateDispatchFailure;\n\nexport function validateForPlatform(\n input: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): ValidateDispatchResult {\n if (type === 'inscricao-estadual' && !options.uf) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'UF is required for inscricao-estadual validation',\n };\n }\n\n switch (type) {\n case 'cpf': {\n const result = validateCpf(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnpj': {\n const result = validateCnpj(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cep': {\n const result = validateCep(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'placa': {\n const result = validatePlaca(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'pis-pasep': {\n const result = validatePisPasep(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'telefone': {\n const result = validateTelefone(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnh': {\n const result = validateCnh(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'renavam': {\n const result = validateRenavam(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'titulo-eleitor': {\n const result = validateTituloEleitor(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'nfe-chave': {\n const result = validateNfeChave(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'boleto': {\n const result = validateBoleto(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cartao-credito': {\n const result = validateCartaoCredito(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual': {\n const result = validateInscricaoEstadual(input, { uf: options.uf as UfCode });\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual-produtor-rural': {\n const result = validateIeSpRural(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'pix': {\n const result = validatePixKey(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'brcode': {\n const result = validateBrCode(input);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n default: {\n const _exhaustive: never = type;\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: `Unsupported type: ${String(_exhaustive)}`,\n };\n }\n }\n}\n","/**\n * Batch validation — maps `validate*` per row, never throws (BR-BATCH-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { validateForPlatform } from '../platform/validate-dispatch.js';\nimport type { PlatformDocumentType, PlatformOptions } from '../platform/types.js';\nimport type { ValidationErrorCode } from '../types/validation-result.js';\n\nexport type BatchValidEntry = {\n index: number;\n input: string;\n value: string;\n};\n\nexport type BatchInvalidEntry = {\n index: number;\n input: string;\n code: ValidationErrorCode;\n message: string;\n};\n\nexport type BatchSummary = {\n total: number;\n valid: number;\n invalid: number;\n};\n\nexport type BatchResult = {\n valid: BatchValidEntry[];\n invalid: BatchInvalidEntry[];\n summary: BatchSummary;\n};\n\nexport function batch(\n inputs: readonly string[],\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): BatchResult {\n const valid: BatchValidEntry[] = [];\n const invalid: BatchInvalidEntry[] = [];\n\n inputs.forEach((input, index) => {\n const result = validateForPlatform(input, type, options);\n if (result.ok) {\n valid.push({ index, input, value: result.value });\n } else {\n invalid.push({ index, input, code: result.code, message: result.message });\n }\n });\n\n return {\n valid,\n invalid,\n summary: {\n total: inputs.length,\n valid: valid.length,\n invalid: invalid.length,\n },\n };\n}\n"]}
import { normalizeForPlatform } from './chunk-G6OBZRZM.js';
// src/diff/index.ts
function diff(a, b, type, options = {}) {
const left = normalizeForPlatform(a, type, options);
const right = normalizeForPlatform(b, type, options);
if (left === right) {
return { changed: false, fields: [] };
}
const leftFields = splitFields(left, type);
const rightFields = splitFields(right, type);
const keys = /* @__PURE__ */ new Set([...Object.keys(leftFields), ...Object.keys(rightFields)]);
const fields = [];
for (const field of keys) {
const leftValue = leftFields[field];
const rightValue = rightFields[field];
if (leftValue !== rightValue) {
fields.push({ field, a: leftValue, b: rightValue });
}
}
return { changed: fields.length > 0, fields };
}
function splitFields(value, type) {
switch (type) {
case "cpf":
return {
base: value.slice(0, 9),
dv: value.slice(9, 11)
};
case "cnpj":
return {
base: value.slice(0, 12),
dv: value.slice(12, 14)
};
case "cep":
return {
prefix: value.slice(0, 5),
suffix: value.slice(5, 8)
};
case "telefone":
return { ddd: value.slice(0, 2), subscriber: value.slice(2) };
case "pis-pasep":
return {
base: value.slice(0, 10),
dv: value.slice(10, 11)
};
case "cnh":
return {
base: value.slice(0, 9),
dv1: value.slice(9, 10),
dv2: value.slice(10, 11)
};
case "renavam":
return {
base: value.slice(0, 10),
dv: value.slice(10, 11)
};
case "titulo-eleitor":
return {
sequential: value.slice(0, 8),
uf: value.slice(8, 10),
dv: value.slice(10, 12)
};
case "nfe-chave":
return {
cUF: value.slice(0, 2),
aamm: value.slice(2, 6),
cnpj: value.slice(6, 20),
mod: value.slice(20, 22),
serie: value.slice(22, 25),
nNF: value.slice(25, 34),
tpEmis: value.slice(34, 35),
cNF: value.slice(35, 43),
cDV: value.slice(43, 44)
};
case "placa":
return { value };
case "boleto":
case "cartao-credito":
case "inscricao-estadual":
case "inscricao-estadual-produtor-rural":
case "pix":
case "brcode":
return { value };
default: {
return { value };
}
}
}
export { diff };
//# sourceMappingURL=chunk-N6N5ATLY.js.map
//# sourceMappingURL=chunk-N6N5ATLY.js.map
{"version":3,"sources":["../src/diff/index.ts"],"names":[],"mappings":"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","file":"chunk-N6N5ATLY.js","sourcesContent":["/**\n * Field-level document diff — per-type structural decomposition (BR-DIFF-001).\n * @see docs/OFFICIAL-SOURCES.md\n */\nimport { normalizeForPlatform } from '../platform/normalize.js';\nimport type { PlatformDocumentType, PlatformOptions } from '../platform/types.js';\n\nexport type DiffField = {\n field: string;\n a: string;\n b: string;\n};\n\nexport type DiffResult = {\n changed: boolean;\n fields: DiffField[];\n};\n\nexport function diff(\n a: string,\n b: string,\n type: PlatformDocumentType,\n options: PlatformOptions = {},\n): DiffResult {\n const left = normalizeForPlatform(a, type, options);\n const right = normalizeForPlatform(b, type, options);\n\n if (left === right) {\n return { changed: false, fields: [] };\n }\n\n const leftFields = splitFields(left, type);\n const rightFields = splitFields(right, type);\n const keys = new Set([...Object.keys(leftFields), ...Object.keys(rightFields)]);\n const fields: DiffField[] = [];\n\n for (const field of keys) {\n const leftValue = leftFields[field];\n const rightValue = rightFields[field];\n if (leftValue !== rightValue) {\n fields.push({ field, a: leftValue, b: rightValue });\n }\n }\n\n return { changed: fields.length > 0, fields };\n}\n\nfunction splitFields(value: string, type: PlatformDocumentType): Record<string, string> {\n switch (type) {\n case 'cpf':\n return {\n base: value.slice(0, 9),\n dv: value.slice(9, 11),\n };\n case 'cnpj':\n return {\n base: value.slice(0, 12),\n dv: value.slice(12, 14),\n };\n case 'cep':\n return {\n prefix: value.slice(0, 5),\n suffix: value.slice(5, 8),\n };\n case 'telefone':\n return { ddd: value.slice(0, 2), subscriber: value.slice(2) };\n case 'pis-pasep':\n return {\n base: value.slice(0, 10),\n dv: value.slice(10, 11),\n };\n case 'cnh':\n return {\n base: value.slice(0, 9),\n dv1: value.slice(9, 10),\n dv2: value.slice(10, 11),\n };\n case 'renavam':\n return {\n base: value.slice(0, 10),\n dv: value.slice(10, 11),\n };\n case 'titulo-eleitor':\n return {\n sequential: value.slice(0, 8),\n uf: value.slice(8, 10),\n dv: value.slice(10, 12),\n };\n case 'nfe-chave':\n return {\n cUF: value.slice(0, 2),\n aamm: value.slice(2, 6),\n cnpj: value.slice(6, 20),\n mod: value.slice(20, 22),\n serie: value.slice(22, 25),\n nNF: value.slice(25, 34),\n tpEmis: value.slice(34, 35),\n cNF: value.slice(35, 43),\n cDV: value.slice(43, 44),\n };\n case 'placa':\n return { value };\n case 'boleto':\n case 'cartao-credito':\n case 'inscricao-estadual':\n case 'inscricao-estadual-produtor-rural':\n case 'pix':\n case 'brcode':\n return { value };\n default: {\n const _exhaustive: never = type;\n void _exhaustive;\n return { value };\n }\n }\n}\n"]}
import { validateTelefone, TELEFONE_CELULAR_MASK_PATTERN, TELEFONE_FIXO_MASK_PATTERN } from './chunk-DAR6VOMT.js';
// src/core/telefone/mask.ts
function applyTelefoneMask(canonical, tipo) {
const pattern = tipo === "celular" ? TELEFONE_CELULAR_MASK_PATTERN : TELEFONE_FIXO_MASK_PATTERN;
const match = pattern.exec(canonical);
if (!match) {
throw new Error(`Telephone must have valid ${tipo} length to apply mask`);
}
return `(${match[1]}) ${match[2]}-${match[3]}`;
}
// src/format/telefone.ts
function formatTelefone(input) {
const result = validateTelefone(input);
if (!result.ok) {
return { ok: false, code: result.code, message: result.message };
}
return { ok: true, formatted: applyTelefoneMask(result.value, result.tipo) };
}
export { formatTelefone };
//# sourceMappingURL=chunk-PD7ZTWMM.js.map
//# sourceMappingURL=chunk-PD7ZTWMM.js.map
{"version":3,"sources":["../src/core/telefone/mask.ts","../src/format/telefone.ts"],"names":[],"mappings":";;;AAOO,SAAS,iBAAA,CAAkB,WAAmB,IAAA,EAA4B;AAC/E,EAAA,MAAM,OAAA,GAAU,IAAA,KAAS,SAAA,GAAY,6BAAA,GAAgC,0BAAA;AACrE,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAA;AACpC,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,0BAAA,EAA6B,IAAI,CAAA,qBAAA,CAAuB,CAAA;AAAA,EAC1E;AACA,EAAA,OAAO,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAC9C;;;ACVO,SAAS,eAAe,KAAA,EAA6B;AAC1D,EAAA,MAAM,MAAA,GAAS,iBAAiB,KAAK,CAAA;AACrC,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,IAAI,IAAA,EAAM,SAAA,EAAW,kBAAkB,MAAA,CAAO,KAAA,EAAO,MAAA,CAAO,IAAI,CAAA,EAAE;AAC7E","file":"chunk-PD7ZTWMM.js","sourcesContent":["import {\n TELEFONE_CELULAR_MASK_PATTERN,\n TELEFONE_FIXO_MASK_PATTERN,\n} from './constants.js';\nimport type { TelefoneTipo } from '../../types/validation-result.js';\n\n/** Mask (DD) 9XXXX-XXXX or (DD) XXXX-XXXX per Anatel E.164 layout. */\nexport function applyTelefoneMask(canonical: string, tipo: TelefoneTipo): string {\n const pattern = tipo === 'celular' ? TELEFONE_CELULAR_MASK_PATTERN : TELEFONE_FIXO_MASK_PATTERN;\n const match = pattern.exec(canonical);\n if (!match) {\n throw new Error(`Telephone must have valid ${tipo} length to apply mask`);\n }\n return `(${match[1]}) ${match[2]}-${match[3]}`;\n}\n","import { applyTelefoneMask } from '../core/telefone/mask.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport type { FormatResult } from '../types/validation-result.js';\n\nexport function formatTelefone(input: string): FormatResult {\n const result = validateTelefone(input);\n if (!result.ok) {\n return { ok: false, code: result.code, message: result.message };\n }\n return { ok: true, formatted: applyTelefoneMask(result.value, result.tipo) };\n}\n"]}
import { applyFixes } from './chunk-FKFRB3RJ.js';
import { validateRenavam } from './chunk-I66ZRSEN.js';
import { validateNfeChave } from './chunk-AO6UTQ4A.js';
import { validatePisPasep } from './chunk-JLCQ7MGC.js';
import { validatePlaca } from './chunk-3LMDBXU6.js';
import { validateTelefone } from './chunk-DAR6VOMT.js';
import { validateTituloEleitor } from './chunk-CSVGWTCG.js';
import { validateInscricaoEstadual } from './chunk-665E36SC.js';
import { validateIeSpRural } from './chunk-CDNOUZEI.js';
import { validateBoleto } from './chunk-AU6TW3GH.js';
import { validateCpf } from './chunk-63G7QO73.js';
import { validateCartaoCredito } from './chunk-ANWQBKGN.js';
import { validateCep } from './chunk-TE6NSONR.js';
import { validateCnh } from './chunk-YNVMVDFN.js';
import { validateCnpj } from './chunk-FBARVLLP.js';
// src/sanitize/index.ts
function sanitize(raw, type, options = {}) {
const { value: fixed, fixes } = applyFixes(raw, type);
if (type === "inscricao-estadual" && !options.uf) {
return {
ok: false,
code: "UNSUPPORTED_FORMAT",
message: "UF is required for inscricao-estadual sanitization"
};
}
const validation = validateFixed(fixed, type, options.uf);
if (!validation.ok) {
return { ok: false, code: validation.code, message: validation.message };
}
return { ok: true, value: validation.value, fixes };
}
function validateFixed(value, type, uf) {
switch (type) {
case "cpf": {
const result = validateCpf(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cnpj": {
const result = validateCnpj(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cep": {
const result = validateCep(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "placa": {
const result = validatePlaca(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "pis-pasep": {
const result = validatePisPasep(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "telefone": {
const result = validateTelefone(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cnh": {
const result = validateCnh(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "renavam": {
const result = validateRenavam(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "titulo-eleitor": {
const result = validateTituloEleitor(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "nfe-chave": {
const result = validateNfeChave(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "boleto": {
const result = validateBoleto(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "cartao-credito": {
const result = validateCartaoCredito(value);
return result.ok ? { ok: true, value: result.value } : result;
}
case "inscricao-estadual": {
const result = validateInscricaoEstadual(value, { uf });
return result.ok ? { ok: true, value: result.value } : result;
}
case "inscricao-estadual-produtor-rural": {
const result = validateIeSpRural(value);
return result.ok ? { ok: true, value: result.value } : result;
}
default: {
const _exhaustive = type;
return { ok: false, code: "UNSUPPORTED_FORMAT", message: `Unsupported type: ${String(_exhaustive)}` };
}
}
}
export { sanitize };
//# sourceMappingURL=chunk-SAZA3V2U.js.map
//# sourceMappingURL=chunk-SAZA3V2U.js.map
{"version":3,"sources":["../src/sanitize/index.ts"],"names":[],"mappings":"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","file":"chunk-SAZA3V2U.js","sourcesContent":["/**\n * ETL-style document sanitization — applies fixes then validates (BR-SANITIZE-001).\n * @see docs/VALIDATION-RULES.md\n */\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport { validateCep } from '../core/cep/index.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport { validateCnpj } from '../core/cnpj/index.js';\nimport { validateCpf } from '../core/cpf/index.js';\nimport { validateInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { validateIeSpRural } from '../core/inscricao-estadual/sp-rural.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport { validatePisPasep } from '../core/pis-pasep/index.js';\nimport { validatePlaca } from '../core/placa/index.js';\nimport { validateRenavam } from '../core/renavam/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport type { UfCode, ValidationErrorCode } from '../types/validation-result.js';\nimport { applyFixes } from './fixes.js';\n\nexport type SanitizableDocumentType =\n | 'cpf'\n | 'cnpj'\n | 'cep'\n | 'placa'\n | 'pis-pasep'\n | 'telefone'\n | 'cnh'\n | 'renavam'\n | 'titulo-eleitor'\n | 'nfe-chave'\n | 'boleto'\n | 'cartao-credito'\n | 'inscricao-estadual'\n | 'inscricao-estadual-produtor-rural';\n\nexport type SanitizeOptions = {\n uf?: UfCode;\n};\n\nexport type SanitizeSuccess = {\n ok: true;\n value: string;\n fixes: string[];\n};\n\nexport type SanitizeFailure = {\n ok: false;\n code: ValidationErrorCode;\n message: string;\n};\n\nexport type SanitizeResult = SanitizeSuccess | SanitizeFailure;\n\nexport type { FixResult } from './fixes.js';\n\ntype ValidateFixedResult =\n | { ok: true; value: string }\n | { ok: false; code: ValidationErrorCode; message: string };\n\nexport function sanitize(\n raw: string,\n type: SanitizableDocumentType,\n options: SanitizeOptions = {},\n): SanitizeResult {\n const { value: fixed, fixes } = applyFixes(raw, type);\n\n if (type === 'inscricao-estadual' && !options.uf) {\n return {\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: 'UF is required for inscricao-estadual sanitization',\n };\n }\n\n const validation = validateFixed(fixed, type, options.uf);\n if (!validation.ok) {\n return { ok: false, code: validation.code, message: validation.message };\n }\n\n return { ok: true, value: validation.value, fixes };\n}\n\nfunction validateFixed(value: string, type: SanitizableDocumentType, uf?: UfCode): ValidateFixedResult {\n switch (type) {\n case 'cpf': {\n const result = validateCpf(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnpj': {\n const result = validateCnpj(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cep': {\n const result = validateCep(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'placa': {\n const result = validatePlaca(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'pis-pasep': {\n const result = validatePisPasep(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'telefone': {\n const result = validateTelefone(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cnh': {\n const result = validateCnh(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'renavam': {\n const result = validateRenavam(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'titulo-eleitor': {\n const result = validateTituloEleitor(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'nfe-chave': {\n const result = validateNfeChave(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'boleto': {\n const result = validateBoleto(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'cartao-credito': {\n const result = validateCartaoCredito(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual': {\n const result = validateInscricaoEstadual(value, { uf: uf as UfCode });\n return result.ok ? { ok: true, value: result.value } : result;\n }\n case 'inscricao-estadual-produtor-rural': {\n const result = validateIeSpRural(value);\n return result.ok ? { ok: true, value: result.value } : result;\n }\n default: {\n const _exhaustive: never = type;\n return { ok: false, code: 'UNSUPPORTED_FORMAT', message: `Unsupported type: ${String(_exhaustive)}` };\n }\n }\n}\n"]}
import { validateNfeChave, NFE_CHAVE_LENGTH } from './chunk-AO6UTQ4A.js';
import { validatePisPasep } from './chunk-JLCQ7MGC.js';
import { validatePlaca, PLACA_LENGTH } from './chunk-3LMDBXU6.js';
import { validateTelefone } from './chunk-DAR6VOMT.js';
import { validateTituloEleitor } from './chunk-CSVGWTCG.js';
import { validateInscricaoEstadual } from './chunk-665E36SC.js';
import { isSpRuralIeInput, validateIeProdutorRural } from './chunk-CDNOUZEI.js';
import { validateBoleto } from './chunk-AU6TW3GH.js';
import { validateArrecadacao } from './chunk-N6RQICAP.js';
import { detectBoletoInputKind } from './chunk-E2EFGMWA.js';
import { validateBrCode } from './chunk-V7UJ55KW.js';
import { validatePixKey } from './chunk-H3MLGGFI.js';
import { validateCpf } from './chunk-63G7QO73.js';
import { validateCartaoCredito, CARTAO_PAN_MIN_LENGTH, CARTAO_PAN_MAX_LENGTH } from './chunk-ANWQBKGN.js';
import { validateCep } from './chunk-TE6NSONR.js';
import { validateCnh } from './chunk-YNVMVDFN.js';
import { validateCnpj, CNPJ_LENGTH } from './chunk-FBARVLLP.js';
// src/detect/helpers.ts
function stripDigits(input) {
return input.replace(/\D/g, "");
}
function stripAlnumUpper(input) {
return input.replace(/[^A-Za-z0-9]/g, "").toUpperCase();
}
function hasLetters(input) {
return /[A-Za-z]/.test(input);
}
function looksLikeBrCode(input) {
const trimmed = input.trim();
return trimmed.startsWith("00020") && trimmed.length > 20;
}
function looksLikeBoleto(input) {
const kind = detectBoletoInputKind(input);
return kind === "linha-digitavel" || kind === "codigo-barras";
}
function isBoletoArrecadacao(input) {
return detectBoletoInputKind(input) === "arrecadacao";
}
function looksLikeNfeChave(input) {
const digits = stripDigits(input);
return digits.length === NFE_CHAVE_LENGTH && /^\d+$/.test(digits);
}
function looksLikeCnpjNumeric(input) {
const digits = stripDigits(input);
return digits.length === CNPJ_LENGTH && /^\d+$/.test(digits);
}
function looksLikeCnpjAlphanumeric(input) {
const stripped = stripAlnumUpper(input);
return stripped.length === CNPJ_LENGTH && hasLetters(input);
}
function looksLikeElevenDigits(input) {
const digits = stripDigits(input);
return digits.length === 11 && /^\d+$/.test(digits);
}
function looksLikeTituloEleitor(input) {
const digits = stripDigits(input);
return digits.length === 12 && /^\d+$/.test(digits);
}
function looksLikeCep(input) {
const digits = stripDigits(input);
return digits.length === 8 && /^\d+$/.test(digits);
}
function looksLikePlaca(input) {
const stripped = stripAlnumUpper(input);
return stripped.length === PLACA_LENGTH && /^[A-Z0-9]+$/.test(stripped);
}
function looksLikeCartao(input) {
const withoutMask = input.replace(/[\s-]/g, "");
if (/[^0-9]/.test(withoutMask)) {
return false;
}
const digits = stripDigits(input);
return digits.length >= CARTAO_PAN_MIN_LENGTH && digits.length <= CARTAO_PAN_MAX_LENGTH;
}
function looksLikeIe(input, uf) {
if (!uf) {
return false;
}
if (uf === "SP" && isSpRuralIeInput(input)) {
return true;
}
const digits = stripDigits(input);
return digits.length >= 8 && digits.length <= 14;
}
function looksLikePix(input) {
const trimmed = input.trim();
if (trimmed.includes("@")) {
return true;
}
if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(trimmed)) {
return true;
}
if (/^\+?\d/.test(trimmed)) {
const digits = stripDigits(trimmed);
return digits.length === 11 || digits.length === 14;
}
return false;
}
function looksLikeTelefone(input) {
const digits = stripDigits(input);
return digits.length >= 10 && digits.length <= 13;
}
// src/detect/index.ts
function success(type, value, format, meta) {
return { type, ok: true, value, ...format ? { format } : {}, ...meta ? { meta } : {} };
}
function tryValidators(attempts) {
for (const attempt of attempts) {
const result = attempt();
if (result) {
return result;
}
}
return null;
}
var CANDIDATES = [
{
canTry: (raw) => isBoletoArrecadacao(raw),
detect: (raw) => {
const result = validateArrecadacao(raw);
if (!result.ok) {
return null;
}
return success("boleto", result.value, "arrecadacao", {
inputKind: result.inputKind,
segment: result.segment,
valueType: result.valueType
});
}
},
{
canTry: (raw) => looksLikeBoleto(raw) && !isBoletoArrecadacao(raw),
detect: (raw) => {
const result = validateBoleto(raw);
if (!result.ok || result.format === "arrecadacao") {
return null;
}
return success("boleto", result.value, result.format, {
inputKind: result.inputKind,
situacao: result.situacao
});
}
},
{
canTry: (raw) => looksLikeNfeChave(raw),
detect: (raw) => {
const result = validateNfeChave(raw);
if (!result.ok) {
return null;
}
return success("nfe-chave", result.value, result.format, {
parsed: result.parsed,
uf: result.uf
});
}
},
{
canTry: (raw) => looksLikeBrCode(raw),
detect: (raw) => {
const result = validateBrCode(raw);
if (!result.ok) {
return null;
}
return success("brcode", result.value, result.format, {
merchantName: result.merchantName,
merchantCity: result.merchantCity,
pixKey: result.pixKey,
pixKeyType: result.pixKeyType
});
}
},
{
canTry: (raw) => looksLikeCnpjAlphanumeric(raw),
detect: (raw) => {
const result = validateCnpj(raw);
if (!result.ok) {
return null;
}
return success("cnpj", result.value, result.format);
}
},
{
canTry: (raw) => looksLikeCnpjNumeric(raw),
detect: (raw) => {
const result = validateCnpj(raw);
if (!result.ok) {
return null;
}
return success("cnpj", result.value, result.format);
}
},
{
canTry: (raw) => looksLikeElevenDigits(raw),
detect: (raw) => tryValidators([
() => {
const result = validateCpf(raw);
return result.ok ? success("cpf", result.value, result.format) : null;
},
() => {
const result = validateCnh(raw);
return result.ok ? success("cnh", result.value, result.format) : null;
},
() => {
const result = validatePisPasep(raw);
return result.ok ? success("pis-pasep", result.value, result.format) : null;
}
])
},
{
canTry: (raw) => looksLikeTituloEleitor(raw),
detect: (raw) => {
const result = validateTituloEleitor(raw);
if (!result.ok) {
return null;
}
return success("titulo-eleitor", result.value, result.format, {
ufCode: result.ufCode,
...result.uf ? { uf: result.uf } : {},
...result.exterior ? { exterior: result.exterior } : {}
});
}
},
{
canTry: (raw) => looksLikeCep(raw),
detect: (raw) => {
const result = validateCep(raw);
if (!result.ok) {
return null;
}
return success("cep", result.value, result.format);
}
},
{
canTry: (raw) => looksLikePlaca(raw),
detect: (raw) => {
const result = validatePlaca(raw);
if (!result.ok) {
return null;
}
return success("placa", result.value, result.format);
}
},
{
canTry: (raw) => looksLikePix(raw),
detect: (raw) => {
const result = validatePixKey(raw);
if (!result.ok) {
return null;
}
return success("pix", result.value, result.format, { keyType: result.keyType });
}
},
{
canTry: (raw) => looksLikeTelefone(raw),
detect: (raw) => {
const result = validateTelefone(raw);
if (!result.ok) {
return null;
}
return success("telefone", result.value, result.format, { tipo: result.tipo });
}
},
{
canTry: (raw) => looksLikeCartao(raw),
detect: (raw) => {
const result = validateCartaoCredito(raw);
if (!result.ok) {
return null;
}
return success("cartao-credito", result.value, result.format, { brand: result.brand });
}
},
{
canTry: (raw, options) => looksLikeIe(raw, options.uf),
detect: (raw, options) => {
const uf = options.uf;
if (uf === "SP" && isSpRuralIeInput(raw)) {
const result2 = validateIeProdutorRural(uf, raw);
if (!result2.ok) {
return null;
}
return success("inscricao-estadual-produtor-rural", result2.value, result2.format, { uf: result2.uf });
}
const result = validateInscricaoEstadual(raw, { uf });
if (!result.ok) {
return null;
}
return success("inscricao-estadual", result.value, result.format, { uf: result.uf });
}
}
];
function detect(raw, options = {}) {
const trimmed = raw.trim();
if (trimmed.length === 0) {
return {
type: "unknown",
ok: false,
code: "EMPTY_INPUT",
message: "Input is empty"
};
}
for (const candidate of CANDIDATES) {
if (!candidate.canTry(trimmed, options)) {
continue;
}
const result = candidate.detect(trimmed, options);
if (result?.ok) {
return result;
}
}
return {
type: "unknown",
ok: false,
code: "UNSUPPORTED_FORMAT",
message: options.uf ? "No supported document type matched the input" : "No supported document type matched the input; provide options.uf for Inscri\xE7\xE3o Estadual detection"
};
}
export { detect };
//# sourceMappingURL=chunk-WC6YYFWP.js.map
//# sourceMappingURL=chunk-WC6YYFWP.js.map
{"version":3,"sources":["../src/detect/helpers.ts","../src/detect/index.ts"],"names":["result"],"mappings":"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","file":"chunk-WC6YYFWP.js","sourcesContent":["import { BOLETO_CODIGO_BARRAS_LENGTH, BOLETO_LINHA_LENGTH } from '../core/boleto/constants.js';\nimport { CARTAO_PAN_MAX_LENGTH, CARTAO_PAN_MIN_LENGTH } from '../core/cartao-credito/constants.js';\nimport { CNPJ_LENGTH } from '../core/cnpj/constants.js';\nimport { NFE_CHAVE_LENGTH } from '../core/nfe-chave/constants.js';\nimport { PLACA_LENGTH } from '../core/placa/constants.js';\nimport { detectBoletoInputKind } from '../core/boleto/detect.js';\nimport { isSpRuralIeInput } from '../core/inscricao-estadual/sp-rural.js';\n\nexport function stripDigits(input: string): string {\n return input.replace(/\\D/g, '');\n}\n\nexport function stripAlnumUpper(input: string): string {\n return input.replace(/[^A-Za-z0-9]/g, '').toUpperCase();\n}\n\nexport function hasLetters(input: string): boolean {\n return /[A-Za-z]/.test(input);\n}\n\nexport function looksLikeBrCode(input: string): boolean {\n const trimmed = input.trim();\n return trimmed.startsWith('00020') && trimmed.length > 20;\n}\n\nexport function looksLikeBoleto(input: string): boolean {\n const kind = detectBoletoInputKind(input);\n return kind === 'linha-digitavel' || kind === 'codigo-barras';\n}\n\nexport function isBoletoArrecadacao(input: string): boolean {\n return detectBoletoInputKind(input) === 'arrecadacao';\n}\n\nexport function looksLikeNfeChave(input: string): boolean {\n const digits = stripDigits(input);\n return digits.length === NFE_CHAVE_LENGTH && /^\\d+$/.test(digits);\n}\n\nexport function looksLikeCnpjNumeric(input: string): boolean {\n const digits = stripDigits(input);\n return digits.length === CNPJ_LENGTH && /^\\d+$/.test(digits);\n}\n\nexport function looksLikeCnpjAlphanumeric(input: string): boolean {\n const stripped = stripAlnumUpper(input);\n return stripped.length === CNPJ_LENGTH && hasLetters(input);\n}\n\nexport function looksLikeElevenDigits(input: string): boolean {\n const digits = stripDigits(input);\n return digits.length === 11 && /^\\d+$/.test(digits);\n}\n\nexport function looksLikeTituloEleitor(input: string): boolean {\n const digits = stripDigits(input);\n return digits.length === 12 && /^\\d+$/.test(digits);\n}\n\nexport function looksLikeCep(input: string): boolean {\n const digits = stripDigits(input);\n return digits.length === 8 && /^\\d+$/.test(digits);\n}\n\nexport function looksLikePlaca(input: string): boolean {\n const stripped = stripAlnumUpper(input);\n return stripped.length === PLACA_LENGTH && /^[A-Z0-9]+$/.test(stripped);\n}\n\nexport function looksLikeCartao(input: string): boolean {\n const withoutMask = input.replace(/[\\s-]/g, '');\n if (/[^0-9]/.test(withoutMask)) {\n return false;\n }\n const digits = stripDigits(input);\n return digits.length >= CARTAO_PAN_MIN_LENGTH && digits.length <= CARTAO_PAN_MAX_LENGTH;\n}\n\nexport function looksLikeIe(input: string, uf?: string): boolean {\n if (!uf) {\n return false;\n }\n if (uf === 'SP' && isSpRuralIeInput(input)) {\n return true;\n }\n const digits = stripDigits(input);\n return digits.length >= 8 && digits.length <= 14;\n}\n\nexport function looksLikePix(input: string): boolean {\n const trimmed = input.trim();\n if (trimmed.includes('@')) {\n return true;\n }\n if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(trimmed)) {\n return true;\n }\n if (/^\\+?\\d/.test(trimmed)) {\n const digits = stripDigits(trimmed);\n return digits.length === 11 || digits.length === 14;\n }\n return false;\n}\n\nexport function looksLikeTelefone(input: string): boolean {\n const digits = stripDigits(input);\n return digits.length >= 10 && digits.length <= 13;\n}\n\nexport {\n BOLETO_CODIGO_BARRAS_LENGTH,\n BOLETO_LINHA_LENGTH,\n};\n","/**\n * Unified document type detection — delegates to existing validators (BR-DETECT-001).\n * @see docs/VALIDATION-RULES.md\n */\nimport { validateArrecadacao } from '../core/boleto/arrecadacao.js';\nimport { validateBoleto } from '../core/boleto/index.js';\nimport { validateBrCode } from '../core/brcode/index.js';\nimport { validateCartaoCredito } from '../core/cartao-credito/index.js';\nimport { validateCep } from '../core/cep/index.js';\nimport { validateCnh } from '../core/cnh/index.js';\nimport { validateCnpj } from '../core/cnpj/index.js';\nimport { validateCpf } from '../core/cpf/index.js';\nimport { validateInscricaoEstadual } from '../core/inscricao-estadual/index.js';\nimport { validateIeProdutorRural } from '../core/inscricao-estadual/validate-produtor-rural.js';\nimport { isSpRuralIeInput } from '../core/inscricao-estadual/sp-rural.js';\nimport { validateNfeChave } from '../core/nfe-chave/index.js';\nimport { validatePisPasep } from '../core/pis-pasep/index.js';\nimport { validatePlaca } from '../core/placa/index.js';\nimport { validatePixKey } from '../core/pix/index.js';\nimport { validateTelefone } from '../core/telefone/index.js';\nimport { validateTituloEleitor } from '../core/titulo-eleitor/index.js';\nimport {\n isBoletoArrecadacao,\n looksLikeBoleto,\n looksLikeBrCode,\n looksLikeCartao,\n looksLikeCep,\n looksLikeCnpjAlphanumeric,\n looksLikeCnpjNumeric,\n looksLikeElevenDigits,\n looksLikeIe,\n looksLikeNfeChave,\n looksLikePix,\n looksLikePlaca,\n looksLikeTelefone,\n looksLikeTituloEleitor,\n} from './helpers.js';\nimport type { DocumentFormat, UfCode, ValidationErrorCode } from '../types/validation-result.js';\n\nexport type DetectableDocumentType =\n | 'cpf'\n | 'cnpj'\n | 'cep'\n | 'placa'\n | 'pis-pasep'\n | 'pix'\n | 'telefone'\n | 'boleto'\n | 'cartao-credito'\n | 'cnh'\n | 'renavam'\n | 'nfe-chave'\n | 'titulo-eleitor'\n | 'inscricao-estadual'\n | 'inscricao-estadual-produtor-rural'\n | 'brcode'\n | 'unknown';\n\nexport type DetectOptions = {\n uf?: UfCode;\n};\n\nexport type DetectSuccess = {\n type: DetectableDocumentType;\n ok: true;\n value: string;\n format?: DocumentFormat;\n meta?: Record<string, unknown>;\n};\n\nexport type DetectFailure = {\n type: DetectableDocumentType;\n ok: false;\n code: ValidationErrorCode;\n message: string;\n};\n\nexport type DetectResult = DetectSuccess | DetectFailure;\n\ntype Candidate = {\n canTry: (raw: string, options: DetectOptions) => boolean;\n detect: (raw: string, options: DetectOptions) => DetectResult | null;\n};\n\n/** @internal Test hook for success result branches. */\nexport function buildDetectSuccess(\n type: DetectableDocumentType,\n value: string,\n format?: DocumentFormat,\n meta?: Record<string, unknown>,\n): DetectResult {\n return success(type, value, format, meta);\n}\n\nfunction success(\n type: DetectableDocumentType,\n value: string,\n format?: DocumentFormat,\n meta?: Record<string, unknown>,\n): DetectResult {\n return { type, ok: true, value, ...(format ? { format } : {}), ...(meta ? { meta } : {}) };\n}\n\nfunction tryValidators(attempts: Array<() => DetectResult | null>): DetectResult | null {\n for (const attempt of attempts) {\n const result = attempt();\n if (result) {\n return result;\n }\n }\n return null;\n}\n\nconst CANDIDATES: Candidate[] = [\n {\n canTry: (raw) => isBoletoArrecadacao(raw),\n detect: (raw) => {\n const result = validateArrecadacao(raw);\n if (!result.ok) {\n return null;\n }\n return success('boleto', result.value, 'arrecadacao', {\n inputKind: result.inputKind,\n segment: result.segment,\n valueType: result.valueType,\n });\n },\n },\n {\n canTry: (raw) => looksLikeBoleto(raw) && !isBoletoArrecadacao(raw),\n detect: (raw) => {\n const result = validateBoleto(raw);\n if (!result.ok || result.format === 'arrecadacao') {\n return null;\n }\n return success('boleto', result.value, result.format, {\n inputKind: result.inputKind,\n situacao: result.situacao,\n });\n },\n },\n {\n canTry: (raw) => looksLikeNfeChave(raw),\n detect: (raw) => {\n const result = validateNfeChave(raw);\n if (!result.ok) {\n return null;\n }\n return success('nfe-chave', result.value, result.format, {\n parsed: result.parsed,\n uf: result.uf,\n });\n },\n },\n {\n canTry: (raw) => looksLikeBrCode(raw),\n detect: (raw) => {\n const result = validateBrCode(raw);\n if (!result.ok) {\n return null;\n }\n return success('brcode', result.value, result.format, {\n merchantName: result.merchantName,\n merchantCity: result.merchantCity,\n pixKey: result.pixKey,\n pixKeyType: result.pixKeyType,\n });\n },\n },\n {\n canTry: (raw) => looksLikeCnpjAlphanumeric(raw),\n detect: (raw) => {\n const result = validateCnpj(raw);\n if (!result.ok) {\n return null;\n }\n return success('cnpj', result.value, result.format);\n },\n },\n {\n canTry: (raw) => looksLikeCnpjNumeric(raw),\n detect: (raw) => {\n const result = validateCnpj(raw);\n if (!result.ok) {\n return null;\n }\n return success('cnpj', result.value, result.format);\n },\n },\n {\n canTry: (raw) => looksLikeElevenDigits(raw),\n detect: (raw) =>\n tryValidators([\n () => {\n const result = validateCpf(raw);\n return result.ok ? success('cpf', result.value, result.format) : null;\n },\n () => {\n const result = validateCnh(raw);\n return result.ok ? success('cnh', result.value, result.format) : null;\n },\n () => {\n const result = validatePisPasep(raw);\n return result.ok ? success('pis-pasep', result.value, result.format) : null;\n },\n ]),\n },\n {\n canTry: (raw) => looksLikeTituloEleitor(raw),\n detect: (raw) => {\n const result = validateTituloEleitor(raw);\n if (!result.ok) {\n return null;\n }\n return success('titulo-eleitor', result.value, result.format, {\n ufCode: result.ufCode,\n ...(result.uf ? { uf: result.uf } : {}),\n ...(result.exterior ? { exterior: result.exterior } : {}),\n });\n },\n },\n {\n canTry: (raw) => looksLikeCep(raw),\n detect: (raw) => {\n const result = validateCep(raw);\n if (!result.ok) {\n return null;\n }\n return success('cep', result.value, result.format);\n },\n },\n {\n canTry: (raw) => looksLikePlaca(raw),\n detect: (raw) => {\n const result = validatePlaca(raw);\n if (!result.ok) {\n return null;\n }\n return success('placa', result.value, result.format);\n },\n },\n {\n canTry: (raw) => looksLikePix(raw),\n detect: (raw) => {\n const result = validatePixKey(raw);\n if (!result.ok) {\n return null;\n }\n return success('pix', result.value, result.format, { keyType: result.keyType });\n },\n },\n {\n canTry: (raw) => looksLikeTelefone(raw),\n detect: (raw) => {\n const result = validateTelefone(raw);\n if (!result.ok) {\n return null;\n }\n return success('telefone', result.value, result.format, { tipo: result.tipo });\n },\n },\n {\n canTry: (raw) => looksLikeCartao(raw),\n detect: (raw) => {\n const result = validateCartaoCredito(raw);\n if (!result.ok) {\n return null;\n }\n return success('cartao-credito', result.value, result.format, { brand: result.brand });\n },\n },\n {\n canTry: (raw, options) => looksLikeIe(raw, options.uf),\n detect: (raw, options) => {\n const uf = options.uf as UfCode;\n if (uf === 'SP' && isSpRuralIeInput(raw)) {\n const result = validateIeProdutorRural(uf, raw);\n if (!result.ok) {\n return null;\n }\n return success('inscricao-estadual-produtor-rural', result.value, result.format, { uf: result.uf });\n }\n const result = validateInscricaoEstadual(raw, { uf });\n if (!result.ok) {\n return null;\n }\n return success('inscricao-estadual', result.value, result.format, { uf: result.uf });\n },\n },\n];\n\nexport function detect(raw: string, options: DetectOptions = {}): DetectResult {\n const trimmed = raw.trim();\n if (trimmed.length === 0) {\n return {\n type: 'unknown',\n ok: false,\n code: 'EMPTY_INPUT',\n message: 'Input is empty',\n };\n }\n\n for (const candidate of CANDIDATES) {\n if (!candidate.canTry(trimmed, options)) {\n continue;\n }\n const result = candidate.detect(trimmed, options);\n if (result?.ok) {\n return result;\n }\n }\n\n return {\n type: 'unknown',\n ok: false,\n code: 'UNSUPPORTED_FORMAT',\n message: options.uf\n ? 'No supported document type matched the input'\n : 'No supported document type matched the input; provide options.uf for Inscrição Estadual detection',\n };\n}\n"]}