{"version":3,"file":"br-validators.cjs","names":[],"sources":["../../src/forms/br-validators.ts"],"sourcesContent":["function digitsOnly(value: string): string {\n    return value.replace(/\\D/g, \"\");\n}\n\n/**\n * Validate a Brazilian CPF using the standard check-digit algorithm.\n * Accepts masked or raw input; rejects all-equal digits (\"111.111.111-11\").\n */\nexport function validateCPF(value: string): boolean {\n    const digits = digitsOnly(value);\n    if (digits.length !== 11) return false;\n    if (/^(\\d)\\1+$/.test(digits)) return false;\n\n    const numbers = digits.split(\"\").map(Number);\n\n    let sum = 0;\n    for (let i = 0; i < 9; i++) sum += numbers[i]! * (10 - i);\n    let check = (sum * 10) % 11;\n    if (check === 10) check = 0;\n    if (check !== numbers[9]) return false;\n\n    sum = 0;\n    for (let i = 0; i < 10; i++) sum += numbers[i]! * (11 - i);\n    check = (sum * 10) % 11;\n    if (check === 10) check = 0;\n    return check === numbers[10];\n}\n\n/**\n * Validate a Brazilian CNPJ using the standard check-digit algorithm.\n * Accepts masked or raw input; rejects all-equal digits.\n */\nexport function validateCNPJ(value: string): boolean {\n    const digits = digitsOnly(value);\n    if (digits.length !== 14) return false;\n    if (/^(\\d)\\1+$/.test(digits)) return false;\n\n    const numbers = digits.split(\"\").map(Number);\n\n    const weights1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n    const weights2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n    let sum = 0;\n    for (let i = 0; i < 12; i++) sum += numbers[i]! * weights1[i]!;\n    let check = sum % 11;\n    check = check < 2 ? 0 : 11 - check;\n    if (check !== numbers[12]) return false;\n\n    sum = 0;\n    for (let i = 0; i < 13; i++) sum += numbers[i]! * weights2[i]!;\n    check = sum % 11;\n    check = check < 2 ? 0 : 11 - check;\n    return check === numbers[13];\n}\n\n/** Format an 11-digit Brazilian CEP-like value as `00000-000`. */\nexport function formatCEP(value: string): string {\n    return digitsOnly(value)\n        .slice(0, 8)\n        .replace(/(\\d{5})(\\d)/, \"$1-$2\");\n}\n\n/** Format an unmasked CNPJ-shaped value as `00.000.000/0000-00`. */\nexport function formatCNPJ(value: string): string {\n    return digitsOnly(value)\n        .slice(0, 14)\n        .replace(/(\\d{2})(\\d)/, \"$1.$2\")\n        .replace(/(\\d{3})(\\d)/, \"$1.$2\")\n        .replace(/(\\d{3})(\\d)/, \"$1/$2\")\n        .replace(/(\\d{4})(\\d)/, \"$1-$2\");\n}\n\n/** Strip any masking and return only digits. */\nexport function unmask(value: string): string {\n    return digitsOnly(value);\n}\n"],"mappings":"AAAA,SAAS,EAAW,EAAuB,CACvC,OAAO,EAAM,QAAQ,MAAO,EAAE,CAClC,CAMA,SAAgB,EAAY,EAAwB,CAChD,IAAM,EAAS,EAAW,CAAK,EAE/B,GADI,EAAO,SAAW,IAClB,YAAY,KAAK,CAAM,EAAG,MAAO,GAErC,IAAM,EAAU,EAAO,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,EAEvC,EAAM,EACV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IAAK,GAAO,EAAQ,IAAO,GAAK,GACvD,IAAI,EAAS,EAAM,GAAM,GAEzB,GADI,IAAU,KAAI,EAAQ,GACtB,IAAU,EAAQ,GAAI,MAAO,GAEjC,EAAM,EACN,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IAAK,GAAO,EAAQ,IAAO,GAAK,GAGxD,MAFA,GAAS,EAAM,GAAM,GACjB,IAAU,KAAI,EAAQ,GACnB,IAAU,EAAQ,GAC7B,CAMA,SAAgB,EAAa,EAAwB,CACjD,IAAM,EAAS,EAAW,CAAK,EAE/B,GADI,EAAO,SAAW,IAClB,YAAY,KAAK,CAAM,EAAG,MAAO,GAErC,IAAM,EAAU,EAAO,MAAM,EAAE,CAAC,CAAC,IAAI,MAAM,EAErC,EAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAC9C,EAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAC,EAEnD,EAAM,EACV,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IAAK,GAAO,EAAQ,GAAM,EAAS,GAC3D,IAAI,EAAQ,EAAM,GAElB,GADA,EAAQ,EAAQ,EAAI,EAAI,GAAK,EACzB,IAAU,EAAQ,IAAK,MAAO,GAElC,EAAM,EACN,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IAAK,GAAO,EAAQ,GAAM,EAAS,GAG3D,MAFA,GAAQ,EAAM,GACd,EAAQ,EAAQ,EAAI,EAAI,GAAK,EACtB,IAAU,EAAQ,GAC7B,CAGA,SAAgB,EAAU,EAAuB,CAC7C,OAAO,EAAW,CAAK,CAAC,CACnB,MAAM,EAAG,CAAC,CAAC,CACX,QAAQ,cAAe,OAAO,CACvC,CAGA,SAAgB,EAAW,EAAuB,CAC9C,OAAO,EAAW,CAAK,CAAC,CACnB,MAAM,EAAG,EAAE,CAAC,CACZ,QAAQ,cAAe,OAAO,CAAC,CAC/B,QAAQ,cAAe,OAAO,CAAC,CAC/B,QAAQ,cAAe,OAAO,CAAC,CAC/B,QAAQ,cAAe,OAAO,CACvC,CAGA,SAAgB,EAAO,EAAuB,CAC1C,OAAO,EAAW,CAAK,CAC3B"}