soff-id 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +124 -38
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.cjs +1 -1
- package/dist/locales/ar.cjs.map +1 -1
- package/dist/locales/ar.d.cts +29 -1
- package/dist/locales/ar.d.ts +29 -1
- package/dist/locales/ar.js +1 -1
- package/dist/locales/ar.js.map +1 -1
- package/dist/locales/br.cjs +1 -1
- package/dist/locales/br.cjs.map +1 -1
- package/dist/locales/br.d.cts +35 -1
- package/dist/locales/br.d.ts +35 -1
- package/dist/locales/br.js +1 -1
- package/dist/locales/br.js.map +1 -1
- package/dist/locales/cl.cjs +1 -1
- package/dist/locales/cl.cjs.map +1 -1
- package/dist/locales/cl.d.cts +11 -1
- package/dist/locales/cl.d.ts +11 -1
- package/dist/locales/cl.js +1 -1
- package/dist/locales/cl.js.map +1 -1
- package/dist/locales/co.cjs +1 -1
- package/dist/locales/co.cjs.map +1 -1
- package/dist/locales/co.d.cts +32 -2
- package/dist/locales/co.d.ts +32 -2
- package/dist/locales/co.js +1 -1
- package/dist/locales/co.js.map +1 -1
- package/dist/locales/mx.cjs +1 -1
- package/dist/locales/mx.cjs.map +1 -1
- package/dist/locales/mx.d.cts +42 -1
- package/dist/locales/mx.d.ts +42 -1
- package/dist/locales/mx.js +1 -1
- package/dist/locales/mx.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/utils.ts","../src/locales/co.ts","../src/locales/br.ts","../src/locales/cl.ts","../src/locales/ar.ts","../src/locales/mx.ts"],"names":["cleanDocument","value","cleanDigits","padStart","length","mod11","digits","weights","sum","i","mod10","product","NIT_WEIGHTS","calculateNITCheckDigit","nit","cleaned","reversed","remainder","validateNIT","body","checkDigit","formatNIT","cleanNIT","validateCC","cc","formatCC","cleanCC","validateCE","ce","validateTI","ti","CPF_WEIGHTS_1","CPF_WEIGHTS_2","CNPJ_WEIGHTS_1","CNPJ_WEIGHTS_2","calcCheckDigit","validateCPF","cpf","formatCPF","cleanCPF","validateCNPJ","cnpj","formatCNPJ","cleanCNPJ","RUT_WEIGHTS","calculateRUTCheckDigit","rut","validateRUT","formatRUT","cleanRUT","validateRUN","formatRUN","cleanRUN","CUIT_WEIGHTS","calculateCUITCheckDigit","cuit","validateCUIT","type","formatCUIT","cleanCUIT","validateCUIL","formatCUIL","cleanCUIL","validateDNI","dni","formatDNI","cleanDNI","RFC_PATTERN_FISICA","RFC_PATTERN_MORAL","CURP_PATTERN","validateRFC","rfc","formatRFC","cleanRFC","validateCURP","curp","validateCURPCheckDigit","dictionary","char","formatCURP","cleanCURP","getCURPGender","genderChar","getCURPBirthDate","yearPart","month","day","centuryChar","year","date"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Remove all non-alphanumeric characters\n */\nexport function cleanDocument(value: string): string {\n return value.replace(/[^a-zA-Z0-9]/g, '');\n}\n\n/**\n * Remove all non-digit characters\n */\nexport function cleanDigits(value: string): string {\n return value.replace(/\\D/g, '');\n}\n\n/**\n * Pad a string with leading zeros\n */\nexport function padStart(value: string, length: number): string {\n return value.padStart(length, '0');\n}\n\n/**\n * Calculate modulo 11 check digit (common algorithm)\n */\nexport function mod11(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i % weights.length];\n }\n const remainder = sum % 11;\n return remainder;\n}\n\n/**\n * Calculate modulo 10 check digit (Luhn-like algorithms)\n */\nexport function mod10(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n let product = parseInt(digits[i], 10) * weights[i % weights.length];\n if (product > 9) {\n product = Math.floor(product / 10) + (product % 10);\n }\n sum += product;\n }\n return sum % 10;\n}\n","import { cleanDigits } from '../core/utils.js';\n\n/**\n * NIT verification weights (Colombian tax ID)\n * Algorithm: Multiply each digit by its weight, sum, mod 11\n */\nconst NIT_WEIGHTS = [3, 7, 13, 17, 19, 23, 29, 37, 41, 43, 47, 53, 59, 67, 71];\n\n/**\n * Calculate the NIT check digit\n * @param nit - The NIT without check digit (8-15 digits)\n * @returns The check digit (0-9)\n */\nexport function calculateNITCheckDigit(nit: string): string {\n const cleaned = cleanDigits(nit);\n\n if (cleaned.length < 8 || cleaned.length > 15) {\n throw new Error('NIT must be between 8 and 15 digits');\n }\n\n let sum = 0;\n const reversed = cleaned.split('').reverse();\n\n for (let i = 0; i < reversed.length; i++) {\n sum += parseInt(reversed[i], 10) * NIT_WEIGHTS[i];\n }\n\n const remainder = sum % 11;\n\n if (remainder === 0) return '0';\n if (remainder === 1) return '1';\n return String(11 - remainder);\n}\n\n/**\n * Validate a Colombian NIT\n * @param nit - The NIT to validate (with or without check digit)\n * @returns true if valid\n */\nexport function validateNIT(nit: string): boolean {\n const cleaned = cleanDigits(nit);\n\n if (cleaned.length < 9 || cleaned.length > 16) {\n return false;\n }\n\n const body = cleaned.slice(0, -1);\n const checkDigit = cleaned.slice(-1);\n\n try {\n return calculateNITCheckDigit(body) === checkDigit;\n } catch {\n return false;\n }\n}\n\n/**\n * Format a NIT for display\n * @param nit - The NIT to format\n * @returns Formatted NIT (e.g., \"900.123.456-7\")\n */\nexport function formatNIT(nit: string): string {\n const cleaned = cleanDigits(nit);\n\n if (cleaned.length < 9) {\n return nit;\n }\n\n const body = cleaned.slice(0, -1);\n const checkDigit = cleaned.slice(-1);\n\n // Format with dots every 3 digits from right\n const formatted = body.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n\n return `${formatted}-${checkDigit}`;\n}\n\n/**\n * Clean a NIT (remove all formatting)\n */\nexport function cleanNIT(nit: string): string {\n return cleanDigits(nit);\n}\n\n/**\n * Validate a Colombian Cédula de Ciudadanía (CC)\n * @param cc - The CC number (6-10 digits)\n * @returns true if valid format\n */\nexport function validateCC(cc: string): boolean {\n const cleaned = cleanDigits(cc);\n return cleaned.length >= 6 && cleaned.length <= 10;\n}\n\n/**\n * Format a Cédula for display\n */\nexport function formatCC(cc: string): string {\n const cleaned = cleanDigits(cc);\n return cleaned.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n}\n\n/**\n * Clean a Cédula\n */\nexport function cleanCC(cc: string): string {\n return cleanDigits(cc);\n}\n\n/**\n * Validate a Cédula de Extranjería (CE)\n * @param ce - The CE number (6-10 digits)\n */\nexport function validateCE(ce: string): boolean {\n const cleaned = cleanDigits(ce);\n return cleaned.length >= 6 && cleaned.length <= 10;\n}\n\n/**\n * Validate a Tarjeta de Identidad (TI)\n * @param ti - The TI number (10-11 digits)\n */\nexport function validateTI(ti: string): boolean {\n const cleaned = cleanDigits(ti);\n return cleaned.length >= 10 && cleaned.length <= 11;\n}\n","import { cleanDigits } from '../core/utils.js';\n\n/**\n * CPF weights for first check digit\n */\nconst CPF_WEIGHTS_1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * CPF weights for second check digit\n */\nconst CPF_WEIGHTS_2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * CNPJ weights for first check digit\n */\nconst CNPJ_WEIGHTS_1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * CNPJ weights for second check digit\n */\nconst CNPJ_WEIGHTS_2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * Calculate CPF/CNPJ check digit using mod 11\n */\nfunction calcCheckDigit(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < weights.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i];\n }\n const remainder = sum % 11;\n return remainder < 2 ? 0 : 11 - remainder;\n}\n\n/**\n * Validate a Brazilian CPF (Individual Tax ID)\n * @param cpf - The CPF to validate (11 digits)\n */\nexport function validateCPF(cpf: string): boolean {\n const cleaned = cleanDigits(cpf);\n\n if (cleaned.length !== 11) {\n return false;\n }\n\n // Check for known invalid CPFs (all same digits)\n if (/^(\\d)\\1+$/.test(cleaned)) {\n return false;\n }\n\n // Calculate first check digit\n const digit1 = calcCheckDigit(cleaned.slice(0, 9), CPF_WEIGHTS_1);\n if (digit1 !== parseInt(cleaned[9], 10)) {\n return false;\n }\n\n // Calculate second check digit\n const digit2 = calcCheckDigit(cleaned.slice(0, 10), CPF_WEIGHTS_2);\n return digit2 === parseInt(cleaned[10], 10);\n}\n\n/**\n * Format a CPF for display\n * @returns Formatted CPF (e.g., \"123.456.789-09\")\n */\nexport function formatCPF(cpf: string): string {\n const cleaned = cleanDigits(cpf).padStart(11, '0');\n return `${cleaned.slice(0, 3)}.${cleaned.slice(3, 6)}.${cleaned.slice(6, 9)}-${cleaned.slice(9)}`;\n}\n\n/**\n * Clean a CPF\n */\nexport function cleanCPF(cpf: string): string {\n return cleanDigits(cpf);\n}\n\n/**\n * Validate a Brazilian CNPJ (Business Tax ID)\n * @param cnpj - The CNPJ to validate (14 digits)\n */\nexport function validateCNPJ(cnpj: string): boolean {\n const cleaned = cleanDigits(cnpj);\n\n if (cleaned.length !== 14) {\n return false;\n }\n\n // Check for known invalid CNPJs (all same digits)\n if (/^(\\d)\\1+$/.test(cleaned)) {\n return false;\n }\n\n // Calculate first check digit\n const digit1 = calcCheckDigit(cleaned.slice(0, 12), CNPJ_WEIGHTS_1);\n if (digit1 !== parseInt(cleaned[12], 10)) {\n return false;\n }\n\n // Calculate second check digit\n const digit2 = calcCheckDigit(cleaned.slice(0, 13), CNPJ_WEIGHTS_2);\n return digit2 === parseInt(cleaned[13], 10);\n}\n\n/**\n * Format a CNPJ for display\n * @returns Formatted CNPJ (e.g., \"12.345.678/0001-95\")\n */\nexport function formatCNPJ(cnpj: string): string {\n const cleaned = cleanDigits(cnpj).padStart(14, '0');\n return `${cleaned.slice(0, 2)}.${cleaned.slice(2, 5)}.${cleaned.slice(5, 8)}/${cleaned.slice(8, 12)}-${cleaned.slice(12)}`;\n}\n\n/**\n * Clean a CNPJ\n */\nexport function cleanCNPJ(cnpj: string): string {\n return cleanDigits(cnpj);\n}\n","import { cleanDocument, cleanDigits } from '../core/utils.js';\n\n/**\n * RUT/RUN validation weights\n */\nconst RUT_WEIGHTS = [2, 3, 4, 5, 6, 7];\n\n/**\n * Calculate RUT check digit\n * @param rut - The RUT body (without check digit)\n * @returns The check digit (0-9 or 'K')\n */\nexport function calculateRUTCheckDigit(rut: string): string {\n const cleaned = cleanDigits(rut);\n const reversed = cleaned.split('').reverse();\n\n let sum = 0;\n for (let i = 0; i < reversed.length; i++) {\n sum += parseInt(reversed[i], 10) * RUT_WEIGHTS[i % RUT_WEIGHTS.length];\n }\n\n const remainder = 11 - (sum % 11);\n\n if (remainder === 11) return '0';\n if (remainder === 10) return 'K';\n return String(remainder);\n}\n\n/**\n * Validate a Chilean RUT (Rol Único Tributario)\n * @param rut - The RUT to validate (e.g., \"12.345.678-5\" or \"12345678-K\")\n */\nexport function validateRUT(rut: string): boolean {\n const cleaned = cleanDocument(rut).toUpperCase();\n\n if (cleaned.length < 8 || cleaned.length > 9) {\n return false;\n }\n\n const body = cleaned.slice(0, -1);\n const checkDigit = cleaned.slice(-1);\n\n // Body must be all digits\n if (!/^\\d+$/.test(body)) {\n return false;\n }\n\n return calculateRUTCheckDigit(body) === checkDigit;\n}\n\n/**\n * Format a RUT for display\n * @returns Formatted RUT (e.g., \"12.345.678-5\")\n */\nexport function formatRUT(rut: string): string {\n const cleaned = cleanDocument(rut).toUpperCase();\n\n if (cleaned.length < 2) {\n return rut;\n }\n\n const body = cleaned.slice(0, -1);\n const checkDigit = cleaned.slice(-1);\n\n // Format with dots every 3 digits from right\n const formatted = body.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n\n return `${formatted}-${checkDigit}`;\n}\n\n/**\n * Clean a RUT\n */\nexport function cleanRUT(rut: string): string {\n return cleanDocument(rut).toUpperCase();\n}\n\n/**\n * Validate a Chilean RUN (same algorithm as RUT)\n */\nexport const validateRUN = validateRUT;\nexport const formatRUN = formatRUT;\nexport const cleanRUN = cleanRUT;\n","import { cleanDigits } from '../core/utils.js';\n\n/**\n * CUIT/CUIL weights\n */\nconst CUIT_WEIGHTS = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];\n\n/**\n * Calculate CUIT/CUIL check digit\n * @param cuit - The CUIT body (10 digits: type + DNI)\n * @returns The check digit (0-9)\n */\nexport function calculateCUITCheckDigit(cuit: string): string {\n const cleaned = cleanDigits(cuit);\n\n if (cleaned.length !== 10) {\n throw new Error('CUIT body must be 10 digits');\n }\n\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n sum += parseInt(cleaned[i], 10) * CUIT_WEIGHTS[i];\n }\n\n const remainder = 11 - (sum % 11);\n\n if (remainder === 11) return '0';\n if (remainder === 10) return '9'; // Special case for Argentina\n return String(remainder);\n}\n\n/**\n * Validate an Argentine CUIT (Clave Única de Identificación Tributaria)\n * @param cuit - The CUIT to validate (e.g., \"20-12345678-9\")\n */\nexport function validateCUIT(cuit: string): boolean {\n const cleaned = cleanDigits(cuit);\n\n if (cleaned.length !== 11) {\n return false;\n }\n\n // Valid type prefixes: 20, 23, 24, 27, 30, 33, 34\n const type = cleaned.slice(0, 2);\n const validTypes = ['20', '23', '24', '27', '30', '33', '34'];\n if (!validTypes.includes(type)) {\n return false;\n }\n\n const body = cleaned.slice(0, 10);\n const checkDigit = cleaned.slice(-1);\n\n try {\n return calculateCUITCheckDigit(body) === checkDigit;\n } catch {\n return false;\n }\n}\n\n/**\n * Format a CUIT for display\n * @returns Formatted CUIT (e.g., \"20-12345678-9\")\n */\nexport function formatCUIT(cuit: string): string {\n const cleaned = cleanDigits(cuit).padStart(11, '0');\n return `${cleaned.slice(0, 2)}-${cleaned.slice(2, 10)}-${cleaned.slice(10)}`;\n}\n\n/**\n * Clean a CUIT\n */\nexport function cleanCUIT(cuit: string): string {\n return cleanDigits(cuit);\n}\n\n/**\n * CUIL validation (same algorithm as CUIT)\n */\nexport const validateCUIL = validateCUIT;\nexport const formatCUIL = formatCUIT;\nexport const cleanCUIL = cleanCUIT;\nexport const calculateCUILCheckDigit = calculateCUITCheckDigit;\n\n/**\n * Validate an Argentine DNI\n * @param dni - The DNI number (7-8 digits)\n */\nexport function validateDNI(dni: string): boolean {\n const cleaned = cleanDigits(dni);\n return cleaned.length >= 7 && cleaned.length <= 8;\n}\n\n/**\n * Format a DNI for display\n */\nexport function formatDNI(dni: string): string {\n const cleaned = cleanDigits(dni);\n return cleaned.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n}\n\n/**\n * Clean a DNI\n */\nexport function cleanDNI(dni: string): string {\n return cleanDigits(dni);\n}\n","import { cleanDocument } from '../core/utils.js';\n\n/**\n * Valid RFC patterns\n * - Persona física: 4 letters + 6 digits + 3 alphanumeric (homoclave)\n * - Persona moral: 3 letters + 6 digits + 3 alphanumeric (homoclave)\n */\nconst RFC_PATTERN_FISICA = /^[A-ZÑ&]{4}\\d{6}[A-Z0-9]{3}$/;\nconst RFC_PATTERN_MORAL = /^[A-ZÑ&]{3}\\d{6}[A-Z0-9]{3}$/;\n\n/**\n * CURP pattern\n * 18 characters: 4 letters + 6 digits + 6 letters + 2 alphanumeric\n */\nconst CURP_PATTERN = /^[A-Z]{4}\\d{6}[HM][A-Z]{5}[A-Z0-9]\\d$/;\n\n/**\n * Validate a Mexican RFC (Registro Federal de Contribuyentes)\n * @param rfc - The RFC to validate\n */\nexport function validateRFC(rfc: string): boolean {\n const cleaned = cleanDocument(rfc).toUpperCase();\n\n if (cleaned.length !== 12 && cleaned.length !== 13) {\n return false;\n }\n\n // 12 chars = Persona moral, 13 chars = Persona física\n if (cleaned.length === 13) {\n return RFC_PATTERN_FISICA.test(cleaned);\n }\n\n return RFC_PATTERN_MORAL.test(cleaned);\n}\n\n/**\n * Format an RFC for display (uppercase, no separators)\n */\nexport function formatRFC(rfc: string): string {\n return cleanDocument(rfc).toUpperCase();\n}\n\n/**\n * Clean an RFC\n */\nexport function cleanRFC(rfc: string): string {\n return cleanDocument(rfc).toUpperCase();\n}\n\n/**\n * Validate a Mexican CURP (Clave Única de Registro de Población)\n * @param curp - The CURP to validate (18 characters)\n */\nexport function validateCURP(curp: string): boolean {\n const cleaned = cleanDocument(curp).toUpperCase();\n\n if (cleaned.length !== 18) {\n return false;\n }\n\n if (!CURP_PATTERN.test(cleaned)) {\n return false;\n }\n\n // Validate check digit\n return validateCURPCheckDigit(cleaned);\n}\n\n/**\n * CURP check digit validation\n */\nfunction validateCURPCheckDigit(curp: string): boolean {\n const dictionary = '0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZ';\n let sum = 0;\n\n for (let i = 0; i < 17; i++) {\n const char = curp[i];\n const value = dictionary.indexOf(char);\n if (value === -1) return false;\n sum += value * (18 - i);\n }\n\n const checkDigit = (10 - (sum % 10)) % 10;\n return checkDigit === parseInt(curp[17], 10);\n}\n\n/**\n * Format a CURP for display\n */\nexport function formatCURP(curp: string): string {\n return cleanDocument(curp).toUpperCase();\n}\n\n/**\n * Clean a CURP\n */\nexport function cleanCURP(curp: string): string {\n return cleanDocument(curp).toUpperCase();\n}\n\n/**\n * Get the gender from a CURP\n * @returns 'M' for male, 'F' for female, or null if invalid\n */\nexport function getCURPGender(curp: string): 'M' | 'F' | null {\n const cleaned = cleanDocument(curp).toUpperCase();\n if (cleaned.length < 11) return null;\n\n const genderChar = cleaned[10];\n if (genderChar === 'H') return 'M';\n if (genderChar === 'M') return 'F';\n return null;\n}\n\n/**\n * Get the birth date from a CURP\n * @returns Date object or null if invalid\n */\nexport function getCURPBirthDate(curp: string): Date | null {\n const cleaned = cleanDocument(curp).toUpperCase();\n if (cleaned.length < 10) return null;\n\n const yearPart = cleaned.slice(4, 6);\n const month = cleaned.slice(6, 8);\n const day = cleaned.slice(8, 10);\n\n // Determine century based on position 17 (digit for century)\n // 0-9 for people born 1900-1999, A for 2000+\n const centuryChar = cleaned[16];\n let year: number;\n\n if (/\\d/.test(centuryChar)) {\n year = 1900 + parseInt(yearPart, 10);\n } else {\n year = 2000 + parseInt(yearPart, 10);\n }\n\n const date = new Date(year, parseInt(month, 10) - 1, parseInt(day, 10));\n\n // Validate the date is real\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== parseInt(month, 10) - 1 ||\n date.getDate() !== parseInt(day, 10)\n ) {\n return null;\n }\n\n return date;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/utils.ts","../src/locales/co.ts","../src/locales/br.ts","../src/locales/cl.ts","../src/locales/ar.ts","../src/locales/mx.ts"],"names":["cleanDocument","value","cleanDigits","padStart","length","mod11","digits","weights","sum","i","mod10","product","NIT_WEIGHTS","calculateNITCheckDigit","nit","cleaned","reversed","remainder","validateNIT","body","checkDigit","formatNIT","cleanNIT","validateCC","cc","formatCC","cleanCC","validateCE","ce","formatCE","cleanCE","validateTI","ti","formatTI","cleanTI","isNITCompany","firstDigit","isNITPerson","generateNIT","isCompany","prefix","CPF_WEIGHTS_1","CPF_WEIGHTS_2","CNPJ_WEIGHTS_1","CNPJ_WEIGHTS_2","calcCheckDigit","calculateCPFCheckDigit","cpf","digit1","digit2","calculateCNPJCheckDigit","cnpj","validateCPF","formatCPF","cleanCPF","validateCNPJ","formatCNPJ","cleanCNPJ","generateCPF","checkDigits","generateCNPJ","branchNumber","base","isCNPJMatriz","isCNPJFilial","getCNPJBranchNumber","RUT_WEIGHTS","calculateRUTCheckDigit","rut","validateRUT","formatRUT","cleanRUT","validateRUN","formatRUN","cleanRUN","calculateRUNCheckDigit","generateRUT","getFormattedRUTIfValid","CUIT_WEIGHTS","calculateCUITCheckDigit","cuit","validateCUIT","type","formatCUIT","cleanCUIT","validateCUIL","formatCUIL","cleanCUIL","calculateCUILCheckDigit","validateDNI","dni","formatDNI","cleanDNI","CUIT_TYPE_COMPANY","CUIT_TYPE_PERSON","isCUITCompany","isCUITPerson","getCUITType","getDNIFromCUIT","generateCUITFromDNI","cleanedDNI","generateCUIT","types","RFC_PATTERN_FISICA","RFC_PATTERN_MORAL","CURP_PATTERN","validateRFC","rfc","formatRFC","cleanRFC","validateCURP","curp","validateCURPCheckDigit","dictionary","char","formatCURP","cleanCURP","getCURPGender","genderChar","getCURPBirthDate","yearPart","month","day","centuryChar","year","date","CURP_STATE_CODES","getCURPBirthState","stateCode","getCURPStateCode","isRFCCompany","isRFCPerson","getRFCDate","dateStart","dateStr","fullYear","parseCURP","parseRFC"],"mappings":"AAGO,SAASA,CAAAA,CAAcC,CAAAA,CAAuB,CACnD,OAAOA,CAAAA,CAAM,OAAA,CAAQ,eAAA,CAAiB,EAAE,CAC1C,CAKO,SAASC,CAAAA,CAAYD,EAAuB,CACjD,OAAOA,CAAAA,CAAM,OAAA,CAAQ,KAAA,CAAO,EAAE,CAChC,CAKO,SAASE,CAAAA,CAASF,CAAAA,CAAeG,CAAAA,CAAwB,CAC9D,OAAOH,CAAAA,CAAM,QAAA,CAASG,CAAAA,CAAQ,GAAG,CACnC,CAKO,SAASC,CAAAA,CAAMC,CAAAA,CAAgBC,CAAAA,CAA2B,CAC/D,IAAIC,CAAAA,CAAM,CAAA,CACV,IAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIH,CAAAA,CAAO,MAAA,CAAQG,IACjCD,CAAAA,EAAO,QAAA,CAASF,CAAAA,CAAOG,CAAC,CAAA,CAAG,EAAE,CAAA,CAAIF,CAAAA,CAAQE,EAAIF,CAAAA,CAAQ,MAAM,CAAA,CAG7D,OADkBC,CAAAA,CAAM,EAE1B,CAKO,SAASE,EAAMJ,CAAAA,CAAgBC,CAAAA,CAA2B,CAC/D,IAAIC,CAAAA,CAAM,CAAA,CACV,IAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIH,CAAAA,CAAO,MAAA,CAAQG,CAAAA,EAAAA,CAAK,CACtC,IAAIE,CAAAA,CAAU,SAASL,CAAAA,CAAOG,CAAC,CAAA,CAAG,EAAE,CAAA,CAAIF,CAAAA,CAAQE,CAAAA,CAAIF,CAAAA,CAAQ,MAAM,CAAA,CAC9DI,CAAAA,CAAU,CAAA,GACZA,CAAAA,CAAU,IAAA,CAAK,KAAA,CAAMA,CAAAA,CAAU,EAAE,EAAKA,CAAAA,CAAU,EAAA,CAAA,CAElDH,CAAAA,EAAOG,EACT,CACA,OAAOH,CAAAA,CAAM,EACf,CCxCA,IAAMI,CAAAA,CAAc,CAAC,CAAA,CAAG,CAAA,CAAG,EAAA,CAAI,EAAA,CAAI,GAAI,EAAA,CAAI,EAAA,CAAI,EAAA,CAAI,EAAA,CAAI,EAAA,CAAI,EAAA,CAAI,EAAA,CAAI,EAAA,CAAI,GAAI,EAAE,CAAA,CAOtE,SAASC,CAAAA,CAAuBC,CAAAA,CAAqB,CAC1D,IAAMC,CAAAA,CAAUb,EAAYY,CAAG,CAAA,CAE/B,GAAIC,CAAAA,CAAQ,MAAA,CAAS,CAAA,EAAKA,CAAAA,CAAQ,MAAA,CAAS,EAAA,CACzC,MAAM,IAAI,KAAA,CAAM,qCAAqC,CAAA,CAGvD,IAAIP,CAAAA,CAAM,EACJQ,CAAAA,CAAWD,CAAAA,CAAQ,KAAA,CAAM,EAAE,CAAA,CAAE,OAAA,EAAQ,CAE3C,IAAA,IAAS,EAAI,CAAA,CAAG,CAAA,CAAIC,CAAAA,CAAS,MAAA,CAAQ,CAAA,EAAA,CACnCR,CAAAA,EAAO,QAAA,CAASQ,CAAAA,CAAS,CAAC,CAAA,CAAG,EAAE,CAAA,CAAIJ,CAAAA,CAAY,CAAC,CAAA,CAGlD,IAAMK,CAAAA,CAAYT,CAAAA,CAAM,EAAA,CAExB,OAAIS,CAAAA,GAAc,CAAA,CAAU,GAAA,CACxBA,CAAAA,GAAc,CAAA,CAAU,IACrB,MAAA,CAAO,EAAA,CAAKA,CAAS,CAC9B,CAOO,SAASC,CAAAA,CAAYJ,CAAAA,CAAsB,CAChD,IAAMC,CAAAA,CAAUb,CAAAA,CAAYY,CAAG,CAAA,CAE/B,GAAIC,CAAAA,CAAQ,MAAA,CAAS,GAAKA,CAAAA,CAAQ,MAAA,CAAS,EAAA,CACzC,OAAO,MAAA,CAGT,IAAMI,CAAAA,CAAOJ,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAC1BK,CAAAA,CAAaL,CAAAA,CAAQ,KAAA,CAAM,EAAE,EAEnC,GAAI,CACF,OAAOF,CAAAA,CAAuBM,CAAI,CAAA,GAAMC,CAC1C,CAAA,KAAQ,CACN,OAAO,MACT,CACF,CAOO,SAASC,CAAAA,CAAUP,CAAAA,CAAqB,CAC7C,IAAMC,CAAAA,CAAUb,CAAAA,CAAYY,CAAG,CAAA,CAE/B,GAAIC,CAAAA,CAAQ,MAAA,CAAS,CAAA,CACnB,OAAOD,CAAAA,CAGT,IAAMK,CAAAA,CAAOJ,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,EAC1BK,CAAAA,CAAaL,CAAAA,CAAQ,KAAA,CAAM,EAAE,CAAA,CAKnC,OAAO,CAAA,EAFWI,CAAAA,CAAK,QAAQ,uBAAA,CAAyB,GAAG,CAExC,CAAA,CAAA,EAAIC,CAAU,CAAA,CACnC,CAKO,SAASE,EAASR,CAAAA,CAAqB,CAC5C,OAAOZ,CAAAA,CAAYY,CAAG,CACxB,CAOO,SAASS,CAAAA,CAAWC,CAAAA,CAAqB,CAC9C,IAAMT,CAAAA,CAAUb,CAAAA,CAAYsB,CAAE,CAAA,CAC9B,OAAOT,CAAAA,CAAQ,MAAA,EAAU,CAAA,EAAKA,CAAAA,CAAQ,MAAA,EAAU,EAClD,CAKO,SAASU,EAASD,CAAAA,CAAoB,CAE3C,OADgBtB,CAAAA,CAAYsB,CAAE,CAAA,CACf,OAAA,CAAQ,uBAAA,CAAyB,GAAG,CACrD,CAKO,SAASE,CAAAA,CAAQF,CAAAA,CAAoB,CAC1C,OAAOtB,CAAAA,CAAYsB,CAAE,CACvB,CAMO,SAASG,CAAAA,CAAWC,CAAAA,CAAqB,CAC9C,IAAMb,EAAUa,CAAAA,CAAG,OAAA,CAAQ,eAAA,CAAiB,EAAE,CAAA,CAC9C,OAAOb,CAAAA,CAAQ,MAAA,EAAU,GAAKA,CAAAA,CAAQ,MAAA,EAAU,EAClD,CAKO,SAASc,CAAAA,CAASD,CAAAA,CAAoB,CAE3C,OADgBA,CAAAA,CAAG,OAAA,CAAQ,eAAA,CAAiB,EAAE,CAAA,CAAE,WAAA,EAElD,CAKO,SAASE,CAAAA,CAAQF,CAAAA,CAAoB,CAC1C,OAAOA,CAAAA,CAAG,OAAA,CAAQ,eAAA,CAAiB,EAAE,CAAA,CAAE,WAAA,EACzC,CAMO,SAASG,CAAAA,CAAWC,CAAAA,CAAqB,CAC9C,IAAMjB,CAAAA,CAAUb,CAAAA,CAAY8B,CAAE,CAAA,CAC9B,OAAOjB,CAAAA,CAAQ,MAAA,EAAU,EAAA,EAAMA,EAAQ,MAAA,EAAU,EACnD,CAKO,SAASkB,EAAAA,CAASD,CAAAA,CAAoB,CAE3C,OADgB9B,CAAAA,CAAY8B,CAAE,CAAA,CACf,OAAA,CAAQ,uBAAA,CAAyB,GAAG,CACrD,CAKO,SAASE,EAAAA,CAAQF,CAAAA,CAAoB,CAC1C,OAAO9B,CAAAA,CAAY8B,CAAE,CACvB,CAMO,SAASG,CAAAA,CAAarB,CAAAA,CAAsB,CACjD,IAAMC,CAAAA,CAAUb,CAAAA,CAAYY,CAAG,CAAA,CAC/B,GAAIC,CAAAA,CAAQ,MAAA,CAAS,CAAA,CAAG,OAAO,MAAA,CAC/B,IAAMqB,CAAAA,CAAarB,CAAAA,CAAQ,CAAC,CAAA,CAC5B,OAAOqB,CAAAA,GAAe,GAAA,EAAOA,CAAAA,GAAe,GAC9C,CAKO,SAASC,EAAAA,CAAYvB,CAAAA,CAAsB,CAEhD,OADgBZ,CAAAA,CAAYY,CAAG,CAAA,CACnB,MAAA,CAAS,EAAU,KAAA,CACxB,CAACqB,CAAAA,CAAarB,CAAG,CAC1B,CAMO,SAASwB,EAAAA,CAAYC,EAAqB,IAAA,CAAc,CAC7D,IAAMC,CAAAA,CAASD,CAAAA,CACX,IAAA,CAAK,MAAA,EAAO,CAAI,EAAA,CACd,GAAA,CACA,GAAA,CACF,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,GAAW,CAAC,CAAC,CAAA,CAClCnC,CAAAA,CAAS,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,GAAW,CAAC,CAAA,CAAI,CAAA,CAC3Ce,CAAAA,CAAOqB,CAAAA,CAEX,IAAA,IAAS,CAAA,CAAI,CAAA,CAAG,EAAIpC,CAAAA,CAAQ,CAAA,EAAA,CAC1Be,CAAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,EAAO,CAAI,EAAE,CAAA,CAGvC,IAAMC,CAAAA,CAAaP,CAAAA,CAAuBM,CAAI,CAAA,CAC9C,OAAOA,EAAOC,CAChB,CC/LA,IAAMqB,CAAAA,CAAgB,CAAC,EAAA,CAAI,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAK3CC,CAAAA,CAAgB,CAAC,GAAI,EAAA,CAAI,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAK/CC,CAAAA,CAAiB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAKpDC,CAAAA,CAAiB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAK7D,SAASC,CAAAA,CAAevC,CAAAA,CAAgBC,CAAAA,CAA2B,CACjE,IAAIC,CAAAA,CAAM,CAAA,CACV,IAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,EAAIF,CAAAA,CAAQ,MAAA,CAAQE,CAAAA,EAAAA,CAClCD,CAAAA,EAAO,QAAA,CAASF,CAAAA,CAAOG,CAAC,CAAA,CAAG,EAAE,CAAA,CAAIF,CAAAA,CAAQE,CAAC,CAAA,CAE5C,IAAMQ,CAAAA,CAAYT,CAAAA,CAAM,EAAA,CACxB,OAAOS,CAAAA,CAAY,CAAA,CAAI,CAAA,CAAI,EAAA,CAAKA,CAClC,CAOO,SAAS6B,CAAAA,CAAuBC,CAAAA,CAAqB,CAC1D,IAAMhC,CAAAA,CAAUb,CAAAA,CAAY6C,CAAG,CAAA,CAAE,KAAA,CAAM,EAAG,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,CAE5D,GAAIhC,CAAAA,CAAQ,SAAW,CAAA,CACrB,MAAM,IAAI,KAAA,CAAM,2BAA2B,CAAA,CAG7C,IAAMiC,CAAAA,CAASH,EAAe9B,CAAAA,CAAS0B,CAAa,CAAA,CAC9CQ,CAAAA,CAASJ,CAAAA,CAAe9B,CAAAA,CAAUiC,CAAAA,CAAQN,CAAa,CAAA,CAE7D,OAAO,CAAA,EAAGM,CAAM,CAAA,EAAGC,CAAM,CAAA,CAC3B,CAOO,SAASC,CAAAA,CAAwBC,CAAAA,CAAsB,CAC5D,IAAMpC,CAAAA,CAAUb,CAAAA,CAAYiD,CAAI,CAAA,CAAE,MAAM,CAAA,CAAG,EAAE,CAAA,CAAE,QAAA,CAAS,EAAA,CAAI,GAAG,CAAA,CAE/D,GAAIpC,EAAQ,MAAA,GAAW,EAAA,CACrB,MAAM,IAAI,KAAA,CAAM,6BAA6B,CAAA,CAG/C,IAAMiC,CAAAA,CAASH,CAAAA,CAAe9B,CAAAA,CAAS4B,CAAc,CAAA,CAC/CM,CAAAA,CAASJ,CAAAA,CAAe9B,CAAAA,CAAUiC,EAAQJ,CAAc,CAAA,CAE9D,OAAO,CAAA,EAAGI,CAAM,CAAA,EAAGC,CAAM,CAAA,CAC3B,CAMO,SAASG,EAAAA,CAAYL,CAAAA,CAAsB,CAChD,IAAMhC,CAAAA,CAAUb,CAAAA,CAAY6C,CAAG,EAa/B,OAXIhC,CAAAA,CAAQ,MAAA,GAAW,EAAA,EAKnB,WAAA,CAAY,IAAA,CAAKA,CAAO,CAAA,EAKb8B,CAAAA,CAAe9B,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAG0B,CAAa,CAAA,GACjD,SAAS1B,CAAAA,CAAQ,CAAC,CAAA,CAAG,EAAE,CAAA,CAC7B,KAAA,CAIM8B,CAAAA,CAAe9B,CAAAA,CAAQ,MAAM,CAAA,CAAG,EAAE,CAAA,CAAG2B,CAAa,CAAA,GAC/C,QAAA,CAAS3B,CAAAA,CAAQ,EAAE,EAAG,EAAE,CAC5C,CAMO,SAASsC,EAAAA,CAAUN,CAAAA,CAAqB,CAC7C,IAAMhC,CAAAA,CAAUb,CAAAA,CAAY6C,CAAG,CAAA,CAAE,QAAA,CAAS,EAAA,CAAI,GAAG,CAAA,CACjD,OAAO,CAAA,EAAGhC,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,MAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,CAAC,CAAC,CAAA,CACjG,CAKO,SAASuC,EAAAA,CAASP,CAAAA,CAAqB,CAC5C,OAAO7C,CAAAA,CAAY6C,CAAG,CACxB,CAMO,SAASQ,EAAAA,CAAaJ,CAAAA,CAAuB,CAClD,IAAMpC,CAAAA,CAAUb,CAAAA,CAAYiD,CAAI,CAAA,CAahC,OAXIpC,CAAAA,CAAQ,MAAA,GAAW,EAAA,EAKnB,WAAA,CAAY,IAAA,CAAKA,CAAO,CAAA,EAKb8B,CAAAA,CAAe9B,EAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAAG4B,CAAc,CAAA,GACnD,QAAA,CAAS5B,CAAAA,CAAQ,EAAE,CAAA,CAAG,EAAE,CAAA,CAC9B,KAAA,CAIM8B,CAAAA,CAAe9B,CAAAA,CAAQ,KAAA,CAAM,EAAG,EAAE,CAAA,CAAG6B,CAAc,CAAA,GAChD,QAAA,CAAS7B,CAAAA,CAAQ,EAAE,CAAA,CAAG,EAAE,CAC5C,CAMO,SAASyC,EAAAA,CAAWL,CAAAA,CAAsB,CAC/C,IAAMpC,CAAAA,CAAUb,EAAYiD,CAAI,CAAA,CAAE,QAAA,CAAS,EAAA,CAAI,GAAG,CAAA,CAClD,OAAO,CAAA,EAAGpC,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,EAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,IAAIA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,EAAE,CAAC,CAAA,CAC1H,CAKO,SAAS0C,EAAAA,CAAUN,CAAAA,CAAsB,CAC9C,OAAOjD,CAAAA,CAAYiD,CAAI,CACzB,CAKO,SAASO,EAAAA,EAAsB,CACpC,IAAIvC,EAAO,EAAA,CACX,IAAA,IAASV,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,CAAA,CAAGA,CAAAA,EAAAA,CACrBU,CAAAA,EAAQ,KAAK,KAAA,CAAM,IAAA,CAAK,MAAA,EAAO,CAAI,EAAE,CAAA,CAEvC,IAAMwC,CAAAA,CAAcb,EAAuB3B,CAAI,CAAA,CAC/C,OAAOA,CAAAA,CAAOwC,CAChB,CAMO,SAASC,EAAAA,CAAaC,CAAAA,CAAuB,MAAA,CAAgB,CAClE,IAAIC,CAAAA,CAAO,EAAA,CACX,IAAA,IAASrD,CAAAA,CAAI,EAAGA,CAAAA,CAAI,CAAA,CAAGA,CAAAA,EAAAA,CACrBqD,CAAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,GAAW,EAAE,CAAA,CAEvC,IAAM3C,CAAAA,CAAO2C,CAAAA,CAAOD,CAAAA,CAAa,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,CAC1CF,CAAAA,CAAcT,CAAAA,CAAwB/B,CAAI,CAAA,CAChD,OAAOA,CAAAA,CAAOwC,CAChB,CAKO,SAASI,EAAAA,CAAaZ,CAAAA,CAAuB,CAClD,IAAMpC,CAAAA,CAAUb,CAAAA,CAAYiD,CAAI,CAAA,CAChC,OAAIpC,CAAAA,CAAQ,MAAA,GAAW,EAAA,CAAW,KAAA,CAC3BA,CAAAA,CAAQ,KAAA,CAAM,EAAG,EAAE,CAAA,GAAM,MAClC,CAKO,SAASiD,EAAAA,CAAab,CAAAA,CAAuB,CAClD,IAAMpC,CAAAA,CAAUb,CAAAA,CAAYiD,CAAI,CAAA,CAChC,OAAIpC,CAAAA,CAAQ,MAAA,GAAW,EAAA,CAAW,KAAA,CAC3BA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,GAAM,MAClC,CAMO,SAASkD,EAAAA,CAAoBd,CAAAA,CAA6B,CAC/D,IAAMpC,CAAAA,CAAUb,CAAAA,CAAYiD,CAAI,CAAA,CAChC,OAAIpC,CAAAA,CAAQ,MAAA,GAAW,EAAA,CAAW,IAAA,CAC3BA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAC5B,CC3MA,IAAMmD,CAAAA,CAAc,CAAC,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAO9B,SAASC,CAAAA,CAAuBC,CAAAA,CAAqB,CAE1D,IAAMpD,EADUd,CAAAA,CAAYkE,CAAG,CAAA,CACN,KAAA,CAAM,EAAE,CAAA,CAAE,OAAA,EAAQ,CAEvC5D,EAAM,CAAA,CACV,IAAA,IAAS,CAAA,CAAI,CAAA,CAAG,CAAA,CAAIQ,CAAAA,CAAS,MAAA,CAAQ,CAAA,EAAA,CACnCR,GAAO,QAAA,CAASQ,CAAAA,CAAS,CAAC,CAAA,CAAG,EAAE,CAAA,CAAIkD,CAAAA,CAAY,CAAA,CAAIA,CAAAA,CAAY,MAAM,CAAA,CAGvE,IAAMjD,CAAAA,CAAY,EAAA,CAAMT,CAAAA,CAAM,EAAA,CAE9B,OAAIS,CAAAA,GAAc,EAAA,CAAW,GAAA,CACzBA,CAAAA,GAAc,EAAA,CAAW,GAAA,CACtB,MAAA,CAAOA,CAAS,CACzB,CAMO,SAASoD,CAAAA,CAAYD,CAAAA,CAAsB,CAChD,IAAMrD,CAAAA,CAAUf,CAAAA,CAAcoE,CAAG,CAAA,CAAE,WAAA,EAAY,CAE/C,GAAIrD,CAAAA,CAAQ,MAAA,CAAS,CAAA,EAAKA,CAAAA,CAAQ,OAAS,CAAA,CACzC,OAAO,MAAA,CAGT,IAAMI,CAAAA,CAAOJ,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAC1BK,CAAAA,CAAaL,CAAAA,CAAQ,KAAA,CAAM,EAAE,CAAA,CAGnC,OAAK,OAAA,CAAQ,KAAKI,CAAI,CAAA,CAIfgD,CAAAA,CAAuBhD,CAAI,CAAA,GAAMC,CAAAA,CAH/B,KAIX,CAMO,SAASkD,CAAAA,CAAUF,CAAAA,CAAqB,CAC7C,IAAMrD,CAAAA,CAAUf,CAAAA,CAAcoE,CAAG,CAAA,CAAE,WAAA,EAAY,CAE/C,GAAIrD,CAAAA,CAAQ,MAAA,CAAS,CAAA,CACnB,OAAOqD,CAAAA,CAGT,IAAMjD,CAAAA,CAAOJ,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAC1BK,CAAAA,CAAaL,CAAAA,CAAQ,MAAM,EAAE,CAAA,CAKnC,OAAO,CAAA,EAFWI,CAAAA,CAAK,OAAA,CAAQ,uBAAA,CAAyB,GAAG,CAExC,CAAA,CAAA,EAAIC,CAAU,CAAA,CACnC,CAKO,SAASmD,CAAAA,CAASH,CAAAA,CAAqB,CAC5C,OAAOpE,CAAAA,CAAcoE,CAAG,CAAA,CAAE,WAAA,EAC5B,CAKO,IAAMI,GAAcH,CAAAA,CACdI,EAAAA,CAAYH,CAAAA,CACZI,EAAAA,CAAWH,CAAAA,CACXI,EAAAA,CAAyBR,EAK/B,SAASS,IAAsB,CAEpC,IAAMxE,CAAAA,CAAS,IAAA,CAAK,MAAA,EAAO,CAAI,EAAA,CAAM,CAAA,CAAI,EACrCe,CAAAA,CAAO,EAAA,CAGXA,CAAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,EAAO,CAAI,CAAC,CAAA,CAAI,CAAA,CAExC,IAAA,IAASV,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIL,CAAAA,CAAQK,IAC1BU,CAAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,EAAO,CAAI,EAAE,CAAA,CAGvC,IAAMC,CAAAA,CAAa+C,CAAAA,CAAuBhD,CAAI,CAAA,CAC9C,OAAOA,CAAAA,CAAOC,CAChB,CAMO,SAASyD,EAAAA,CAAuBT,CAAAA,CAA4B,CACjE,OAAKC,CAAAA,CAAYD,CAAG,CAAA,CACbE,CAAAA,CAAUF,CAAG,CAAA,CADU,IAEhC,CC1GA,IAAMU,EAAAA,CAAe,CAAC,CAAA,CAAG,EAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,EAO3C,SAASC,CAAAA,CAAwBC,CAAAA,CAAsB,CAC5D,IAAMjE,CAAAA,CAAUb,CAAAA,CAAY8E,CAAI,EAEhC,GAAIjE,CAAAA,CAAQ,MAAA,GAAW,EAAA,CACrB,MAAM,IAAI,KAAA,CAAM,6BAA6B,CAAA,CAG/C,IAAIP,CAAAA,CAAM,CAAA,CACV,IAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,GAAIA,CAAAA,EAAAA,CACtBD,CAAAA,EAAO,QAAA,CAASO,CAAAA,CAAQN,CAAC,CAAA,CAAG,EAAE,CAAA,CAAIqE,GAAarE,CAAC,CAAA,CAGlD,IAAMQ,CAAAA,CAAY,EAAA,CAAMT,CAAAA,CAAM,EAAA,CAE9B,OAAIS,IAAc,EAAA,CAAW,GAAA,CACzBA,CAAAA,GAAc,EAAA,CAAW,GAAA,CACtB,MAAA,CAAOA,CAAS,CACzB,CAMO,SAASgE,CAAAA,CAAaD,CAAAA,CAAuB,CAClD,IAAMjE,CAAAA,CAAUb,CAAAA,CAAY8E,CAAI,CAAA,CAEhC,GAAIjE,CAAAA,CAAQ,MAAA,GAAW,EAAA,CACrB,OAAO,MAAA,CAIT,IAAMmE,EAAOnE,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAE/B,GAAI,CADe,CAAC,KAAM,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAI,CAAA,CAC5C,QAAA,CAASmE,CAAI,CAAA,CAC3B,OAAO,MAAA,CAGT,IAAM/D,CAAAA,CAAOJ,CAAAA,CAAQ,KAAA,CAAM,EAAG,EAAE,CAAA,CAC1BK,CAAAA,CAAaL,CAAAA,CAAQ,KAAA,CAAM,EAAE,CAAA,CAEnC,GAAI,CACF,OAAOgE,CAAAA,CAAwB5D,CAAI,CAAA,GAAMC,CAC3C,CAAA,KAAQ,CACN,OAAO,MACT,CACF,CAMO,SAAS+D,CAAAA,CAAWH,CAAAA,CAAsB,CAC/C,IAAMjE,CAAAA,CAAUb,CAAAA,CAAY8E,CAAI,CAAA,CAAE,QAAA,CAAS,EAAA,CAAI,GAAG,CAAA,CAClD,OAAO,GAAGjE,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,EAAG,EAAE,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,EAAE,CAAC,CAAA,CAC5E,CAKO,SAASqE,CAAAA,CAAUJ,CAAAA,CAAsB,CAC9C,OAAO9E,CAAAA,CAAY8E,CAAI,CACzB,CAKO,IAAMK,EAAAA,CAAeJ,CAAAA,CACfK,EAAAA,CAAaH,CAAAA,CACbI,EAAAA,CAAYH,CAAAA,CACZI,GAA0BT,EAMhC,SAASU,EAAAA,CAAYC,CAAAA,CAAsB,CAChD,IAAM3E,CAAAA,CAAUb,CAAAA,CAAYwF,CAAG,CAAA,CAC/B,OAAO3E,CAAAA,CAAQ,MAAA,EAAU,CAAA,EAAKA,CAAAA,CAAQ,MAAA,EAAU,CAClD,CAKO,SAAS4E,EAAAA,CAAUD,CAAAA,CAAqB,CAE7C,OADgBxF,CAAAA,CAAYwF,CAAG,CAAA,CAChB,OAAA,CAAQ,uBAAA,CAAyB,GAAG,CACrD,CAKO,SAASE,EAAAA,CAASF,CAAAA,CAAqB,CAC5C,OAAOxF,CAAAA,CAAYwF,CAAG,CACxB,CAKA,IAAMG,CAAAA,CAAoB,CAAC,KAAM,IAAA,CAAM,IAAI,CAAA,CACrCC,EAAAA,CAAmB,CAAC,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAI,CAAA,CAKzC,SAASC,EAAAA,CAAcf,CAAAA,CAAuB,CACnD,IAAMjE,CAAAA,CAAUb,CAAAA,CAAY8E,CAAI,CAAA,CAChC,GAAIjE,CAAAA,CAAQ,MAAA,GAAW,EAAA,CAAI,OAAO,MAAA,CAClC,IAAMmE,CAAAA,CAAOnE,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAC/B,OAAO8E,CAAAA,CAAkB,SAASX,CAAI,CACxC,CAKO,SAASc,EAAAA,CAAahB,CAAAA,CAAuB,CAClD,IAAMjE,EAAUb,CAAAA,CAAY8E,CAAI,CAAA,CAChC,GAAIjE,CAAAA,CAAQ,MAAA,GAAW,EAAA,CAAI,OAAO,MAAA,CAClC,IAAMmE,CAAAA,CAAOnE,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAC/B,OAAO+E,EAAAA,CAAiB,QAAA,CAASZ,CAAI,CACvC,CAMO,SAASe,EAAAA,CAAYjB,CAAAA,CAAyD,CACnF,IAAMjE,CAAAA,CAAUb,CAAAA,CAAY8E,CAAI,CAAA,CAChC,GAAIjE,CAAAA,CAAQ,MAAA,GAAW,GAAI,OAAO,SAAA,CAElC,IAAMmE,CAAAA,CAAOnE,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAE/B,OAAI8E,CAAAA,CAAkB,QAAA,CAASX,CAAI,CAAA,CAAU,SAAA,CACzCA,CAAAA,GAAS,KAAa,MAAA,CACtBA,CAAAA,GAAS,IAAA,CAAa,QAAA,CAEiB,SAG7C,CAKO,SAASgB,EAAAA,CAAelB,EAA6B,CAC1D,IAAMjE,CAAAA,CAAUb,CAAAA,CAAY8E,CAAI,CAAA,CAChC,OAAIjE,CAAAA,CAAQ,SAAW,EAAA,CAAW,IAAA,CAC3BA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAC5B,CAOO,SAASoF,CAAAA,CACdT,CAAAA,CACAR,CAAAA,CAAuD,IAAA,CAC/C,CACR,IAAMkB,CAAAA,CAAalG,EAAYwF,CAAG,CAAA,CAAE,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,CAC7CvE,CAAAA,CAAO+D,CAAAA,CAAOkB,EACdhF,CAAAA,CAAa2D,CAAAA,CAAwB5D,CAAI,CAAA,CAC/C,OAAOA,CAAAA,CAAOC,CAChB,CAMO,SAASiF,EAAAA,CAAa9D,CAAAA,CAAqB,KAAA,CAAe,CAC/D,IAAM+D,CAAAA,CAAQ/D,CAAAA,CAAYsD,CAAAA,CAAoB,CAAC,IAAA,CAAM,IAAI,CAAA,CACnDX,CAAAA,CAAOoB,CAAAA,CAAM,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,CAAIA,CAAAA,CAAM,MAAM,CAAC,CAAA,CAEvDZ,CAAAA,CAAM,EAAA,CACV,QAASjF,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,CAAA,CAAGA,CAAAA,EAAAA,CACrBiF,CAAAA,EAAO,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,CAAI,EAAE,CAAA,CAGtC,OAAOS,CAAAA,CAAoBT,CAAAA,CAAKR,CAAwC,CAC1E,CCvLA,IAAMqB,EAAAA,CAAqB,8BAAA,CACrBC,EAAAA,CAAoB,8BAAA,CAMpBC,EAAAA,CAAe,uCAAA,CAMd,SAASC,CAAAA,CAAYC,CAAAA,CAAsB,CAChD,IAAM5F,CAAAA,CAAUf,CAAAA,CAAc2G,CAAG,CAAA,CAAE,aAAY,CAE/C,OAAI5F,CAAAA,CAAQ,MAAA,GAAW,EAAA,EAAMA,CAAAA,CAAQ,MAAA,GAAW,EAAA,CACvC,MAILA,CAAAA,CAAQ,MAAA,GAAW,EAAA,CACdwF,EAAAA,CAAmB,IAAA,CAAKxF,CAAO,CAAA,CAGjCyF,EAAAA,CAAkB,IAAA,CAAKzF,CAAO,CACvC,CAKO,SAAS6F,EAAAA,CAAUD,CAAAA,CAAqB,CAC7C,OAAO3G,CAAAA,CAAc2G,CAAG,CAAA,CAAE,WAAA,EAC5B,CAKO,SAASE,EAAAA,CAASF,EAAqB,CAC5C,OAAO3G,CAAAA,CAAc2G,CAAG,CAAA,CAAE,WAAA,EAC5B,CAMO,SAASG,CAAAA,CAAaC,CAAAA,CAAuB,CAClD,IAAMhG,CAAAA,CAAUf,CAAAA,CAAc+G,CAAI,CAAA,CAAE,WAAA,EAAY,CAMhD,OAJIhG,CAAAA,CAAQ,MAAA,GAAW,EAAA,EAInB,CAAC0F,EAAAA,CAAa,KAAK1F,CAAO,CAAA,CACrB,KAAA,CAIFiG,EAAAA,CAAuBjG,CAAO,CACvC,CAKA,SAASiG,GAAuBD,CAAAA,CAAuB,CACrD,IAAME,CAAAA,CAAa,0CAAA,CACfzG,CAAAA,CAAM,CAAA,CAEV,IAAA,IAASC,EAAI,CAAA,CAAGA,CAAAA,CAAI,EAAA,CAAIA,CAAAA,EAAAA,CAAK,CAC3B,IAAMyG,CAAAA,CAAOH,CAAAA,CAAKtG,CAAC,CAAA,CACbR,CAAAA,CAAQgH,CAAAA,CAAW,OAAA,CAAQC,CAAI,CAAA,CACrC,GAAIjH,IAAU,EAAA,CAAI,OAAO,MAAA,CACzBO,CAAAA,EAAOP,CAAAA,EAAS,EAAA,CAAKQ,CAAAA,EACvB,CAGA,QADoB,EAAA,CAAMD,CAAAA,CAAM,EAAA,EAAO,EAAA,GACjB,QAAA,CAASuG,CAAAA,CAAK,EAAE,CAAA,CAAG,EAAE,CAC7C,CAKO,SAASI,EAAAA,CAAWJ,CAAAA,CAAsB,CAC/C,OAAO/G,CAAAA,CAAc+G,CAAI,CAAA,CAAE,WAAA,EAC7B,CAKO,SAASK,EAAAA,CAAUL,CAAAA,CAAsB,CAC9C,OAAO/G,CAAAA,CAAc+G,CAAI,CAAA,CAAE,WAAA,EAC7B,CAMO,SAASM,EAAcN,CAAAA,CAAgC,CAC5D,IAAMhG,CAAAA,CAAUf,CAAAA,CAAc+G,CAAI,CAAA,CAAE,WAAA,GACpC,GAAIhG,CAAAA,CAAQ,MAAA,CAAS,EAAA,CAAI,OAAO,IAAA,CAEhC,IAAMuG,CAAAA,CAAavG,CAAAA,CAAQ,EAAE,CAAA,CAC7B,OAAIuG,CAAAA,GAAe,GAAA,CAAY,GAAA,CAC3BA,CAAAA,GAAe,IAAY,GAAA,CACxB,IACT,CAMO,SAASC,CAAAA,CAAiBR,CAAAA,CAA2B,CAC1D,IAAMhG,EAAUf,CAAAA,CAAc+G,CAAI,CAAA,CAAE,WAAA,EAAY,CAChD,GAAIhG,CAAAA,CAAQ,MAAA,CAAS,GAAI,OAAO,IAAA,CAEhC,IAAMyG,CAAAA,CAAWzG,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAC7B0G,CAAAA,CAAQ1G,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAC1B2G,CAAAA,CAAM3G,EAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAIzB4G,CAAAA,CAAc5G,CAAAA,CAAQ,EAAE,CAAA,CAC1B6G,EAEA,IAAA,CAAK,IAAA,CAAKD,CAAW,CAAA,CACvBC,CAAAA,CAAO,IAAA,CAAO,QAAA,CAASJ,CAAAA,CAAU,EAAE,CAAA,CAEnCI,CAAAA,CAAO,GAAA,CAAO,QAAA,CAASJ,CAAAA,CAAU,EAAE,CAAA,CAGrC,IAAMK,CAAAA,CAAO,IAAI,IAAA,CAAKD,CAAAA,CAAM,QAAA,CAASH,CAAAA,CAAO,EAAE,CAAA,CAAI,EAAG,QAAA,CAASC,CAAAA,CAAK,EAAE,CAAC,CAAA,CAGtE,OACEG,CAAAA,CAAK,WAAA,KAAkBD,CAAAA,EACvBC,CAAAA,CAAK,QAAA,EAAS,GAAM,QAAA,CAASJ,CAAAA,CAAO,EAAE,CAAA,CAAI,GAC1CI,CAAAA,CAAK,OAAA,EAAQ,GAAM,QAAA,CAASH,CAAAA,CAAK,EAAE,CAAA,CAE5B,IAAA,CAGFG,CACT,CAKA,IAAMC,CAAAA,CAA2C,CAC/C,EAAA,CAAI,gBAAA,CACJ,EAAA,CAAI,iBAAA,CACJ,GAAI,qBAAA,CACJ,EAAA,CAAI,UAAA,CACJ,EAAA,CAAI,UAAA,CACJ,EAAA,CAAI,QAAA,CACJ,EAAA,CAAI,UACJ,EAAA,CAAI,WAAA,CACJ,EAAA,CAAI,qBAAA,CACJ,EAAA,CAAI,SAAA,CACJ,EAAA,CAAI,YAAA,CACJ,GAAI,UAAA,CACJ,EAAA,CAAI,SAAA,CACJ,EAAA,CAAI,SAAA,CACJ,EAAA,CAAI,qBAAA,CACJ,EAAA,CAAI,cAAA,CACJ,EAAA,CAAI,SAAA,CACJ,EAAA,CAAI,SAAA,CACJ,EAAA,CAAI,eAAA,CACJ,EAAA,CAAI,SACJ,EAAA,CAAI,QAAA,CACJ,EAAA,CAAI,cAAA,CACJ,EAAA,CAAI,cAAA,CACJ,EAAA,CAAI,oBAAA,CACJ,GAAI,SAAA,CACJ,EAAA,CAAI,QAAA,CACJ,EAAA,CAAI,SAAA,CACJ,EAAA,CAAI,YAAA,CACJ,EAAA,CAAI,WACJ,EAAA,CAAI,UAAA,CACJ,EAAA,CAAI,YAAA,CACJ,EAAA,CAAI,WAAA,CACJ,EAAA,CAAI,yBACN,CAAA,CAMO,SAASC,CAAAA,CAAkBhB,CAAAA,CAA6B,CAC7D,IAAMhG,CAAAA,CAAUf,CAAAA,CAAc+G,CAAI,CAAA,CAAE,WAAA,EAAY,CAChD,GAAIhG,CAAAA,CAAQ,MAAA,CAAS,EAAA,CAAI,OAAO,KAEhC,IAAMiH,CAAAA,CAAYjH,CAAAA,CAAQ,KAAA,CAAM,EAAA,CAAI,EAAE,CAAA,CACtC,OAAO+G,EAAiBE,CAAS,CAAA,EAAK,IACxC,CAMO,SAASC,CAAAA,CAAiBlB,CAAAA,CAA6B,CAC5D,IAAMhG,CAAAA,CAAUf,CAAAA,CAAc+G,CAAI,CAAA,CAAE,WAAA,EAAY,CAChD,GAAIhG,EAAQ,MAAA,CAAS,EAAA,CAAI,OAAO,IAAA,CAEhC,IAAMiH,CAAAA,CAAYjH,CAAAA,CAAQ,KAAA,CAAM,GAAI,EAAE,CAAA,CACtC,OAAO+G,CAAAA,CAAiBE,CAAS,CAAA,CAAIA,CAAAA,CAAY,IACnD,CAKO,SAASE,CAAAA,CAAavB,CAAAA,CAAsB,CAEjD,OADgB3G,CAAAA,CAAc2G,CAAG,CAAA,CAAE,WAAA,EAAY,CAChC,MAAA,GAAW,EAC5B,CAKO,SAASwB,EAAAA,CAAYxB,CAAAA,CAAsB,CAEhD,OADgB3G,CAAAA,CAAc2G,CAAG,CAAA,CAAE,WAAA,EAAY,CAChC,MAAA,GAAW,EAC5B,CAMO,SAASyB,CAAAA,CAAWzB,CAAAA,CAA0B,CACnD,IAAM5F,CAAAA,CAAUf,CAAAA,CAAc2G,CAAG,EAAE,WAAA,EAAY,CAE/C,GAAI5F,CAAAA,CAAQ,MAAA,GAAW,EAAA,EAAMA,CAAAA,CAAQ,MAAA,GAAW,EAAA,CAAI,OAAO,IAAA,CAG3D,IAAMsH,CAAAA,CAAYtH,CAAAA,CAAQ,MAAA,GAAW,EAAA,CAAK,EAAI,CAAA,CACxCuH,CAAAA,CAAUvH,CAAAA,CAAQ,KAAA,CAAMsH,CAAAA,CAAWA,CAAAA,CAAY,CAAC,CAAA,CAEhDT,EAAO,QAAA,CAASU,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAG,EAAE,CAAA,CACvCb,EAAQ,QAAA,CAASa,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAG,EAAE,CAAA,CACxCZ,CAAAA,CAAM,QAAA,CAASY,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAG,EAAE,EAGtCC,CAAAA,CAAWX,CAAAA,CAAO,EAAA,CAAK,IAAA,CAAOA,CAAAA,CAAO,GAAA,CAAOA,CAAAA,CAE5CC,CAAAA,CAAO,IAAI,IAAA,CAAKU,CAAAA,CAAUd,CAAAA,CAAQ,CAAA,CAAGC,CAAG,CAAA,CAG9C,OAAIG,CAAAA,CAAK,aAAY,GAAMU,CAAAA,EAAYV,CAAAA,CAAK,QAAA,EAAS,GAAMJ,CAAAA,CAAQ,CAAA,EAAKI,CAAAA,CAAK,OAAA,EAAQ,GAAMH,CAAAA,CAClF,IAAA,CAGFG,CACT,CAKO,SAASW,EAAAA,CAAUzB,EAMxB,CACA,OAAO,CACL,KAAA,CAAOD,CAAAA,CAAaC,CAAI,CAAA,CACxB,MAAA,CAAQM,EAAcN,CAAI,CAAA,CAC1B,SAAA,CAAWQ,CAAAA,CAAiBR,CAAI,CAAA,CAChC,UAAA,CAAYgB,CAAAA,CAAkBhB,CAAI,CAAA,CAClC,SAAA,CAAWkB,CAAAA,CAAiBlB,CAAI,CAClC,CACF,CAKO,SAAS0B,GAAS9B,CAAAA,CAIvB,CAEA,OADcD,CAAAA,CAAYC,CAAG,CAAA,CAKtB,CACL,KAAA,CAAO,KACP,IAAA,CAAMuB,CAAAA,CAAavB,CAAG,CAAA,CAAI,SAAA,CAAY,QAAA,CACtC,IAAA,CAAMyB,CAAAA,CAAWzB,CAAG,CACtB,CAAA,CAPS,CAAE,KAAA,CAAO,KAAA,CAAO,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAK,CAQlD","file":"index.js","sourcesContent":["/**\n * Remove all non-alphanumeric characters\n */\nexport function cleanDocument(value: string): string {\n return value.replace(/[^a-zA-Z0-9]/g, '');\n}\n\n/**\n * Remove all non-digit characters\n */\nexport function cleanDigits(value: string): string {\n return value.replace(/\\D/g, '');\n}\n\n/**\n * Pad a string with leading zeros\n */\nexport function padStart(value: string, length: number): string {\n return value.padStart(length, '0');\n}\n\n/**\n * Calculate modulo 11 check digit (common algorithm)\n */\nexport function mod11(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i % weights.length];\n }\n const remainder = sum % 11;\n return remainder;\n}\n\n/**\n * Calculate modulo 10 check digit (Luhn-like algorithms)\n */\nexport function mod10(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n let product = parseInt(digits[i], 10) * weights[i % weights.length];\n if (product > 9) {\n product = Math.floor(product / 10) + (product % 10);\n }\n sum += product;\n }\n return sum % 10;\n}\n","import { cleanDigits } from '../core/utils.js';\n\n/**\n * NIT verification weights (Colombian tax ID)\n * Algorithm: Multiply each digit by its weight, sum, mod 11\n */\nconst NIT_WEIGHTS = [3, 7, 13, 17, 19, 23, 29, 37, 41, 43, 47, 53, 59, 67, 71];\n\n/**\n * Calculate the NIT check digit\n * @param nit - The NIT without check digit (8-15 digits)\n * @returns The check digit (0-9)\n */\nexport function calculateNITCheckDigit(nit: string): string {\n const cleaned = cleanDigits(nit);\n\n if (cleaned.length < 8 || cleaned.length > 15) {\n throw new Error('NIT must be between 8 and 15 digits');\n }\n\n let sum = 0;\n const reversed = cleaned.split('').reverse();\n\n for (let i = 0; i < reversed.length; i++) {\n sum += parseInt(reversed[i], 10) * NIT_WEIGHTS[i];\n }\n\n const remainder = sum % 11;\n\n if (remainder === 0) return '0';\n if (remainder === 1) return '1';\n return String(11 - remainder);\n}\n\n/**\n * Validate a Colombian NIT\n * @param nit - The NIT to validate (with or without check digit)\n * @returns true if valid\n */\nexport function validateNIT(nit: string): boolean {\n const cleaned = cleanDigits(nit);\n\n if (cleaned.length < 9 || cleaned.length > 16) {\n return false;\n }\n\n const body = cleaned.slice(0, -1);\n const checkDigit = cleaned.slice(-1);\n\n try {\n return calculateNITCheckDigit(body) === checkDigit;\n } catch {\n return false;\n }\n}\n\n/**\n * Format a NIT for display\n * @param nit - The NIT to format\n * @returns Formatted NIT (e.g., \"900.123.456-7\")\n */\nexport function formatNIT(nit: string): string {\n const cleaned = cleanDigits(nit);\n\n if (cleaned.length < 9) {\n return nit;\n }\n\n const body = cleaned.slice(0, -1);\n const checkDigit = cleaned.slice(-1);\n\n // Format with dots every 3 digits from right\n const formatted = body.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n\n return `${formatted}-${checkDigit}`;\n}\n\n/**\n * Clean a NIT (remove all formatting)\n */\nexport function cleanNIT(nit: string): string {\n return cleanDigits(nit);\n}\n\n/**\n * Validate a Colombian Cédula de Ciudadanía (CC)\n * @param cc - The CC number (6-10 digits)\n * @returns true if valid format\n */\nexport function validateCC(cc: string): boolean {\n const cleaned = cleanDigits(cc);\n return cleaned.length >= 6 && cleaned.length <= 10;\n}\n\n/**\n * Format a Cédula for display\n */\nexport function formatCC(cc: string): string {\n const cleaned = cleanDigits(cc);\n return cleaned.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n}\n\n/**\n * Clean a Cédula\n */\nexport function cleanCC(cc: string): string {\n return cleanDigits(cc);\n}\n\n/**\n * Validate a Cédula de Extranjería (CE)\n * @param ce - The CE number (6-10 alphanumeric characters)\n */\nexport function validateCE(ce: string): boolean {\n const cleaned = ce.replace(/[^a-zA-Z0-9]/g, '');\n return cleaned.length >= 6 && cleaned.length <= 10;\n}\n\n/**\n * Format a Cédula de Extranjería for display\n */\nexport function formatCE(ce: string): string {\n const cleaned = ce.replace(/[^a-zA-Z0-9]/g, '').toUpperCase();\n return cleaned;\n}\n\n/**\n * Clean a Cédula de Extranjería\n */\nexport function cleanCE(ce: string): string {\n return ce.replace(/[^a-zA-Z0-9]/g, '').toUpperCase();\n}\n\n/**\n * Validate a Tarjeta de Identidad (TI)\n * @param ti - The TI number (10-11 digits)\n */\nexport function validateTI(ti: string): boolean {\n const cleaned = cleanDigits(ti);\n return cleaned.length >= 10 && cleaned.length <= 11;\n}\n\n/**\n * Format a Tarjeta de Identidad for display\n */\nexport function formatTI(ti: string): string {\n const cleaned = cleanDigits(ti);\n return cleaned.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n}\n\n/**\n * Clean a Tarjeta de Identidad\n */\nexport function cleanTI(ti: string): string {\n return cleanDigits(ti);\n}\n\n/**\n * Check if a NIT belongs to a company (persona jurídica)\n * Company NITs typically start with 8 or 9\n */\nexport function isNITCompany(nit: string): boolean {\n const cleaned = cleanDigits(nit);\n if (cleaned.length < 9) return false;\n const firstDigit = cleaned[0];\n return firstDigit === '8' || firstDigit === '9';\n}\n\n/**\n * Check if a NIT belongs to an individual (persona natural)\n */\nexport function isNITPerson(nit: string): boolean {\n const cleaned = cleanDigits(nit);\n if (cleaned.length < 9) return false;\n return !isNITCompany(nit);\n}\n\n/**\n * Generate a random valid NIT\n * @param isCompany - Whether to generate a company NIT\n */\nexport function generateNIT(isCompany: boolean = true): string {\n const prefix = isCompany\n ? Math.random() < 0.5\n ? '8'\n : '9'\n : String(Math.floor(Math.random() * 8));\n const length = Math.floor(Math.random() * 7) + 8; // 8-14 digits body\n let body = prefix;\n\n for (let i = 1; i < length; i++) {\n body += Math.floor(Math.random() * 10);\n }\n\n const checkDigit = calculateNITCheckDigit(body);\n return body + checkDigit;\n}\n","import { cleanDigits } from '../core/utils.js';\n\n/**\n * CPF weights for first check digit\n */\nconst CPF_WEIGHTS_1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * CPF weights for second check digit\n */\nconst CPF_WEIGHTS_2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * CNPJ weights for first check digit\n */\nconst CNPJ_WEIGHTS_1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * CNPJ weights for second check digit\n */\nconst CNPJ_WEIGHTS_2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * Calculate CPF/CNPJ check digit using mod 11\n */\nfunction calcCheckDigit(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < weights.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i];\n }\n const remainder = sum % 11;\n return remainder < 2 ? 0 : 11 - remainder;\n}\n\n/**\n * Calculate CPF check digits\n * @param cpf - The CPF body (9 digits without check digits)\n * @returns The two check digits as a string\n */\nexport function calculateCPFCheckDigit(cpf: string): string {\n const cleaned = cleanDigits(cpf).slice(0, 9).padStart(9, '0');\n\n if (cleaned.length !== 9) {\n throw new Error('CPF body must be 9 digits');\n }\n\n const digit1 = calcCheckDigit(cleaned, CPF_WEIGHTS_1);\n const digit2 = calcCheckDigit(cleaned + digit1, CPF_WEIGHTS_2);\n\n return `${digit1}${digit2}`;\n}\n\n/**\n * Calculate CNPJ check digits\n * @param cnpj - The CNPJ body (12 digits without check digits)\n * @returns The two check digits as a string\n */\nexport function calculateCNPJCheckDigit(cnpj: string): string {\n const cleaned = cleanDigits(cnpj).slice(0, 12).padStart(12, '0');\n\n if (cleaned.length !== 12) {\n throw new Error('CNPJ body must be 12 digits');\n }\n\n const digit1 = calcCheckDigit(cleaned, CNPJ_WEIGHTS_1);\n const digit2 = calcCheckDigit(cleaned + digit1, CNPJ_WEIGHTS_2);\n\n return `${digit1}${digit2}`;\n}\n\n/**\n * Validate a Brazilian CPF (Individual Tax ID)\n * @param cpf - The CPF to validate (11 digits)\n */\nexport function validateCPF(cpf: string): boolean {\n const cleaned = cleanDigits(cpf);\n\n if (cleaned.length !== 11) {\n return false;\n }\n\n // Check for known invalid CPFs (all same digits)\n if (/^(\\d)\\1+$/.test(cleaned)) {\n return false;\n }\n\n // Calculate first check digit\n const digit1 = calcCheckDigit(cleaned.slice(0, 9), CPF_WEIGHTS_1);\n if (digit1 !== parseInt(cleaned[9], 10)) {\n return false;\n }\n\n // Calculate second check digit\n const digit2 = calcCheckDigit(cleaned.slice(0, 10), CPF_WEIGHTS_2);\n return digit2 === parseInt(cleaned[10], 10);\n}\n\n/**\n * Format a CPF for display\n * @returns Formatted CPF (e.g., \"123.456.789-09\")\n */\nexport function formatCPF(cpf: string): string {\n const cleaned = cleanDigits(cpf).padStart(11, '0');\n return `${cleaned.slice(0, 3)}.${cleaned.slice(3, 6)}.${cleaned.slice(6, 9)}-${cleaned.slice(9)}`;\n}\n\n/**\n * Clean a CPF\n */\nexport function cleanCPF(cpf: string): string {\n return cleanDigits(cpf);\n}\n\n/**\n * Validate a Brazilian CNPJ (Business Tax ID)\n * @param cnpj - The CNPJ to validate (14 digits)\n */\nexport function validateCNPJ(cnpj: string): boolean {\n const cleaned = cleanDigits(cnpj);\n\n if (cleaned.length !== 14) {\n return false;\n }\n\n // Check for known invalid CNPJs (all same digits)\n if (/^(\\d)\\1+$/.test(cleaned)) {\n return false;\n }\n\n // Calculate first check digit\n const digit1 = calcCheckDigit(cleaned.slice(0, 12), CNPJ_WEIGHTS_1);\n if (digit1 !== parseInt(cleaned[12], 10)) {\n return false;\n }\n\n // Calculate second check digit\n const digit2 = calcCheckDigit(cleaned.slice(0, 13), CNPJ_WEIGHTS_2);\n return digit2 === parseInt(cleaned[13], 10);\n}\n\n/**\n * Format a CNPJ for display\n * @returns Formatted CNPJ (e.g., \"12.345.678/0001-95\")\n */\nexport function formatCNPJ(cnpj: string): string {\n const cleaned = cleanDigits(cnpj).padStart(14, '0');\n return `${cleaned.slice(0, 2)}.${cleaned.slice(2, 5)}.${cleaned.slice(5, 8)}/${cleaned.slice(8, 12)}-${cleaned.slice(12)}`;\n}\n\n/**\n * Clean a CNPJ\n */\nexport function cleanCNPJ(cnpj: string): string {\n return cleanDigits(cnpj);\n}\n\n/**\n * Generate a random valid CPF\n */\nexport function generateCPF(): string {\n let body = '';\n for (let i = 0; i < 9; i++) {\n body += Math.floor(Math.random() * 10);\n }\n const checkDigits = calculateCPFCheckDigit(body);\n return body + checkDigits;\n}\n\n/**\n * Generate a random valid CNPJ\n * @param branchNumber - The branch number (0001 for matriz, others for filiais)\n */\nexport function generateCNPJ(branchNumber: string = '0001'): string {\n let base = '';\n for (let i = 0; i < 8; i++) {\n base += Math.floor(Math.random() * 10);\n }\n const body = base + branchNumber.padStart(4, '0');\n const checkDigits = calculateCNPJCheckDigit(body);\n return body + checkDigits;\n}\n\n/**\n * Check if CNPJ is a matriz (main branch)\n */\nexport function isCNPJMatriz(cnpj: string): boolean {\n const cleaned = cleanDigits(cnpj);\n if (cleaned.length !== 14) return false;\n return cleaned.slice(8, 12) === '0001';\n}\n\n/**\n * Check if CNPJ is a filial (branch)\n */\nexport function isCNPJFilial(cnpj: string): boolean {\n const cleaned = cleanDigits(cnpj);\n if (cleaned.length !== 14) return false;\n return cleaned.slice(8, 12) !== '0001';\n}\n\n/**\n * Get the branch number from a CNPJ\n * @returns The branch number (e.g., \"0001\" for matriz)\n */\nexport function getCNPJBranchNumber(cnpj: string): string | null {\n const cleaned = cleanDigits(cnpj);\n if (cleaned.length !== 14) return null;\n return cleaned.slice(8, 12);\n}\n","import { cleanDocument, cleanDigits } from '../core/utils.js';\n\n/**\n * RUT/RUN validation weights\n */\nconst RUT_WEIGHTS = [2, 3, 4, 5, 6, 7];\n\n/**\n * Calculate RUT check digit\n * @param rut - The RUT body (without check digit)\n * @returns The check digit (0-9 or 'K')\n */\nexport function calculateRUTCheckDigit(rut: string): string {\n const cleaned = cleanDigits(rut);\n const reversed = cleaned.split('').reverse();\n\n let sum = 0;\n for (let i = 0; i < reversed.length; i++) {\n sum += parseInt(reversed[i], 10) * RUT_WEIGHTS[i % RUT_WEIGHTS.length];\n }\n\n const remainder = 11 - (sum % 11);\n\n if (remainder === 11) return '0';\n if (remainder === 10) return 'K';\n return String(remainder);\n}\n\n/**\n * Validate a Chilean RUT (Rol Único Tributario)\n * @param rut - The RUT to validate (e.g., \"12.345.678-5\" or \"12345678-K\")\n */\nexport function validateRUT(rut: string): boolean {\n const cleaned = cleanDocument(rut).toUpperCase();\n\n if (cleaned.length < 8 || cleaned.length > 9) {\n return false;\n }\n\n const body = cleaned.slice(0, -1);\n const checkDigit = cleaned.slice(-1);\n\n // Body must be all digits\n if (!/^\\d+$/.test(body)) {\n return false;\n }\n\n return calculateRUTCheckDigit(body) === checkDigit;\n}\n\n/**\n * Format a RUT for display\n * @returns Formatted RUT (e.g., \"12.345.678-5\")\n */\nexport function formatRUT(rut: string): string {\n const cleaned = cleanDocument(rut).toUpperCase();\n\n if (cleaned.length < 2) {\n return rut;\n }\n\n const body = cleaned.slice(0, -1);\n const checkDigit = cleaned.slice(-1);\n\n // Format with dots every 3 digits from right\n const formatted = body.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n\n return `${formatted}-${checkDigit}`;\n}\n\n/**\n * Clean a RUT\n */\nexport function cleanRUT(rut: string): string {\n return cleanDocument(rut).toUpperCase();\n}\n\n/**\n * Validate a Chilean RUN (same algorithm as RUT)\n */\nexport const validateRUN = validateRUT;\nexport const formatRUN = formatRUT;\nexport const cleanRUN = cleanRUT;\nexport const calculateRUNCheckDigit = calculateRUTCheckDigit;\n\n/**\n * Generate a random valid RUT\n */\nexport function generateRUT(): string {\n // Generate a random 7-8 digit number (typical RUT range)\n const length = Math.random() < 0.5 ? 7 : 8;\n let body = '';\n\n // First digit shouldn't be 0 for realistic RUTs\n body += Math.floor(Math.random() * 9) + 1;\n\n for (let i = 1; i < length; i++) {\n body += Math.floor(Math.random() * 10);\n }\n\n const checkDigit = calculateRUTCheckDigit(body);\n return body + checkDigit;\n}\n\n/**\n * Check if RUT is valid and return formatted version\n * @returns Formatted RUT if valid, null otherwise\n */\nexport function getFormattedRUTIfValid(rut: string): string | null {\n if (!validateRUT(rut)) return null;\n return formatRUT(rut);\n}\n","import { cleanDigits } from '../core/utils.js';\n\n/**\n * CUIT/CUIL weights\n */\nconst CUIT_WEIGHTS = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];\n\n/**\n * Calculate CUIT/CUIL check digit\n * @param cuit - The CUIT body (10 digits: type + DNI)\n * @returns The check digit (0-9)\n */\nexport function calculateCUITCheckDigit(cuit: string): string {\n const cleaned = cleanDigits(cuit);\n\n if (cleaned.length !== 10) {\n throw new Error('CUIT body must be 10 digits');\n }\n\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n sum += parseInt(cleaned[i], 10) * CUIT_WEIGHTS[i];\n }\n\n const remainder = 11 - (sum % 11);\n\n if (remainder === 11) return '0';\n if (remainder === 10) return '9'; // Special case for Argentina\n return String(remainder);\n}\n\n/**\n * Validate an Argentine CUIT (Clave Única de Identificación Tributaria)\n * @param cuit - The CUIT to validate (e.g., \"20-12345678-9\")\n */\nexport function validateCUIT(cuit: string): boolean {\n const cleaned = cleanDigits(cuit);\n\n if (cleaned.length !== 11) {\n return false;\n }\n\n // Valid type prefixes: 20, 23, 24, 27, 30, 33, 34\n const type = cleaned.slice(0, 2);\n const validTypes = ['20', '23', '24', '27', '30', '33', '34'];\n if (!validTypes.includes(type)) {\n return false;\n }\n\n const body = cleaned.slice(0, 10);\n const checkDigit = cleaned.slice(-1);\n\n try {\n return calculateCUITCheckDigit(body) === checkDigit;\n } catch {\n return false;\n }\n}\n\n/**\n * Format a CUIT for display\n * @returns Formatted CUIT (e.g., \"20-12345678-9\")\n */\nexport function formatCUIT(cuit: string): string {\n const cleaned = cleanDigits(cuit).padStart(11, '0');\n return `${cleaned.slice(0, 2)}-${cleaned.slice(2, 10)}-${cleaned.slice(10)}`;\n}\n\n/**\n * Clean a CUIT\n */\nexport function cleanCUIT(cuit: string): string {\n return cleanDigits(cuit);\n}\n\n/**\n * CUIL validation (same algorithm as CUIT)\n */\nexport const validateCUIL = validateCUIT;\nexport const formatCUIL = formatCUIT;\nexport const cleanCUIL = cleanCUIT;\nexport const calculateCUILCheckDigit = calculateCUITCheckDigit;\n\n/**\n * Validate an Argentine DNI\n * @param dni - The DNI number (7-8 digits)\n */\nexport function validateDNI(dni: string): boolean {\n const cleaned = cleanDigits(dni);\n return cleaned.length >= 7 && cleaned.length <= 8;\n}\n\n/**\n * Format a DNI for display\n */\nexport function formatDNI(dni: string): string {\n const cleaned = cleanDigits(dni);\n return cleaned.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n}\n\n/**\n * Clean a DNI\n */\nexport function cleanDNI(dni: string): string {\n return cleanDigits(dni);\n}\n\n/**\n * CUIT type prefixes\n */\nconst CUIT_TYPE_COMPANY = ['30', '33', '34'];\nconst CUIT_TYPE_PERSON = ['20', '23', '24', '27'];\n\n/**\n * Check if CUIT belongs to a company\n */\nexport function isCUITCompany(cuit: string): boolean {\n const cleaned = cleanDigits(cuit);\n if (cleaned.length !== 11) return false;\n const type = cleaned.slice(0, 2);\n return CUIT_TYPE_COMPANY.includes(type);\n}\n\n/**\n * Check if CUIT belongs to an individual\n */\nexport function isCUITPerson(cuit: string): boolean {\n const cleaned = cleanDigits(cuit);\n if (cleaned.length !== 11) return false;\n const type = cleaned.slice(0, 2);\n return CUIT_TYPE_PERSON.includes(type);\n}\n\n/**\n * Get the type of entity from CUIT\n * @returns 'company' | 'male' | 'female' | 'unknown'\n */\nexport function getCUITType(cuit: string): 'company' | 'male' | 'female' | 'unknown' {\n const cleaned = cleanDigits(cuit);\n if (cleaned.length !== 11) return 'unknown';\n\n const type = cleaned.slice(0, 2);\n\n if (CUIT_TYPE_COMPANY.includes(type)) return 'company';\n if (type === '20') return 'male';\n if (type === '27') return 'female';\n // 23 and 24 can be either male or female\n if (type === '23' || type === '24') return 'unknown';\n\n return 'unknown';\n}\n\n/**\n * Get DNI from CUIT/CUIL\n */\nexport function getDNIFromCUIT(cuit: string): string | null {\n const cleaned = cleanDigits(cuit);\n if (cleaned.length !== 11) return null;\n return cleaned.slice(2, 10);\n}\n\n/**\n * Generate a valid CUIT from DNI\n * @param dni - The DNI (7-8 digits)\n * @param type - Type prefix (default '20' for male individual)\n */\nexport function generateCUITFromDNI(\n dni: string,\n type: '20' | '23' | '24' | '27' | '30' | '33' | '34' = '20',\n): string {\n const cleanedDNI = cleanDigits(dni).padStart(8, '0');\n const body = type + cleanedDNI;\n const checkDigit = calculateCUITCheckDigit(body);\n return body + checkDigit;\n}\n\n/**\n * Generate a random valid CUIT\n * @param isCompany - Whether to generate a company CUIT\n */\nexport function generateCUIT(isCompany: boolean = false): string {\n const types = isCompany ? CUIT_TYPE_COMPANY : ['20', '27'];\n const type = types[Math.floor(Math.random() * types.length)];\n\n let dni = '';\n for (let i = 0; i < 8; i++) {\n dni += Math.floor(Math.random() * 10);\n }\n\n return generateCUITFromDNI(dni, type as '20' | '27' | '30' | '33' | '34');\n}\n","import { cleanDocument } from '../core/utils.js';\n\n/**\n * Valid RFC patterns\n * - Persona física: 4 letters + 6 digits + 3 alphanumeric (homoclave)\n * - Persona moral: 3 letters + 6 digits + 3 alphanumeric (homoclave)\n */\nconst RFC_PATTERN_FISICA = /^[A-ZÑ&]{4}\\d{6}[A-Z0-9]{3}$/;\nconst RFC_PATTERN_MORAL = /^[A-ZÑ&]{3}\\d{6}[A-Z0-9]{3}$/;\n\n/**\n * CURP pattern\n * 18 characters: 4 letters + 6 digits + 6 letters + 2 alphanumeric\n */\nconst CURP_PATTERN = /^[A-Z]{4}\\d{6}[HM][A-Z]{5}[A-Z0-9]\\d$/;\n\n/**\n * Validate a Mexican RFC (Registro Federal de Contribuyentes)\n * @param rfc - The RFC to validate\n */\nexport function validateRFC(rfc: string): boolean {\n const cleaned = cleanDocument(rfc).toUpperCase();\n\n if (cleaned.length !== 12 && cleaned.length !== 13) {\n return false;\n }\n\n // 12 chars = Persona moral, 13 chars = Persona física\n if (cleaned.length === 13) {\n return RFC_PATTERN_FISICA.test(cleaned);\n }\n\n return RFC_PATTERN_MORAL.test(cleaned);\n}\n\n/**\n * Format an RFC for display (uppercase, no separators)\n */\nexport function formatRFC(rfc: string): string {\n return cleanDocument(rfc).toUpperCase();\n}\n\n/**\n * Clean an RFC\n */\nexport function cleanRFC(rfc: string): string {\n return cleanDocument(rfc).toUpperCase();\n}\n\n/**\n * Validate a Mexican CURP (Clave Única de Registro de Población)\n * @param curp - The CURP to validate (18 characters)\n */\nexport function validateCURP(curp: string): boolean {\n const cleaned = cleanDocument(curp).toUpperCase();\n\n if (cleaned.length !== 18) {\n return false;\n }\n\n if (!CURP_PATTERN.test(cleaned)) {\n return false;\n }\n\n // Validate check digit\n return validateCURPCheckDigit(cleaned);\n}\n\n/**\n * CURP check digit validation\n */\nfunction validateCURPCheckDigit(curp: string): boolean {\n const dictionary = '0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZ';\n let sum = 0;\n\n for (let i = 0; i < 17; i++) {\n const char = curp[i];\n const value = dictionary.indexOf(char);\n if (value === -1) return false;\n sum += value * (18 - i);\n }\n\n const checkDigit = (10 - (sum % 10)) % 10;\n return checkDigit === parseInt(curp[17], 10);\n}\n\n/**\n * Format a CURP for display\n */\nexport function formatCURP(curp: string): string {\n return cleanDocument(curp).toUpperCase();\n}\n\n/**\n * Clean a CURP\n */\nexport function cleanCURP(curp: string): string {\n return cleanDocument(curp).toUpperCase();\n}\n\n/**\n * Get the gender from a CURP\n * @returns 'M' for male, 'F' for female, or null if invalid\n */\nexport function getCURPGender(curp: string): 'M' | 'F' | null {\n const cleaned = cleanDocument(curp).toUpperCase();\n if (cleaned.length < 11) return null;\n\n const genderChar = cleaned[10];\n if (genderChar === 'H') return 'M';\n if (genderChar === 'M') return 'F';\n return null;\n}\n\n/**\n * Get the birth date from a CURP\n * @returns Date object or null if invalid\n */\nexport function getCURPBirthDate(curp: string): Date | null {\n const cleaned = cleanDocument(curp).toUpperCase();\n if (cleaned.length < 10) return null;\n\n const yearPart = cleaned.slice(4, 6);\n const month = cleaned.slice(6, 8);\n const day = cleaned.slice(8, 10);\n\n // Determine century based on position 17 (digit for century)\n // 0-9 for people born 1900-1999, A for 2000+\n const centuryChar = cleaned[16];\n let year: number;\n\n if (/\\d/.test(centuryChar)) {\n year = 1900 + parseInt(yearPart, 10);\n } else {\n year = 2000 + parseInt(yearPart, 10);\n }\n\n const date = new Date(year, parseInt(month, 10) - 1, parseInt(day, 10));\n\n // Validate the date is real\n if (\n date.getFullYear() !== year ||\n date.getMonth() !== parseInt(month, 10) - 1 ||\n date.getDate() !== parseInt(day, 10)\n ) {\n return null;\n }\n\n return date;\n}\n\n/**\n * Mexican state codes used in CURP\n */\nconst CURP_STATE_CODES: Record<string, string> = {\n AS: 'Aguascalientes',\n BC: 'Baja California',\n BS: 'Baja California Sur',\n CC: 'Campeche',\n CL: 'Coahuila',\n CM: 'Colima',\n CS: 'Chiapas',\n CH: 'Chihuahua',\n DF: 'Ciudad de México',\n DG: 'Durango',\n GT: 'Guanajuato',\n GR: 'Guerrero',\n HG: 'Hidalgo',\n JC: 'Jalisco',\n MC: 'Estado de México',\n MN: 'Michoacán',\n MS: 'Morelos',\n NT: 'Nayarit',\n NL: 'Nuevo León',\n OC: 'Oaxaca',\n PL: 'Puebla',\n QT: 'Querétaro',\n QR: 'Quintana Roo',\n SP: 'San Luis Potosí',\n SL: 'Sinaloa',\n SR: 'Sonora',\n TC: 'Tabasco',\n TS: 'Tamaulipas',\n TL: 'Tlaxcala',\n VZ: 'Veracruz',\n YN: 'Yucatán',\n ZS: 'Zacatecas',\n NE: 'Nacido en el Extranjero',\n};\n\n/**\n * Get the birth state from a CURP\n * @returns State name or null if invalid\n */\nexport function getCURPBirthState(curp: string): string | null {\n const cleaned = cleanDocument(curp).toUpperCase();\n if (cleaned.length < 13) return null;\n\n const stateCode = cleaned.slice(11, 13);\n return CURP_STATE_CODES[stateCode] || null;\n}\n\n/**\n * Get the state code from a CURP\n * @returns Two-letter state code or null if invalid\n */\nexport function getCURPStateCode(curp: string): string | null {\n const cleaned = cleanDocument(curp).toUpperCase();\n if (cleaned.length < 13) return null;\n\n const stateCode = cleaned.slice(11, 13);\n return CURP_STATE_CODES[stateCode] ? stateCode : null;\n}\n\n/**\n * Check if RFC belongs to a company (persona moral)\n */\nexport function isRFCCompany(rfc: string): boolean {\n const cleaned = cleanDocument(rfc).toUpperCase();\n return cleaned.length === 12;\n}\n\n/**\n * Check if RFC belongs to an individual (persona física)\n */\nexport function isRFCPerson(rfc: string): boolean {\n const cleaned = cleanDocument(rfc).toUpperCase();\n return cleaned.length === 13;\n}\n\n/**\n * Get the registration date from RFC\n * @returns Date object or null if invalid\n */\nexport function getRFCDate(rfc: string): Date | null {\n const cleaned = cleanDocument(rfc).toUpperCase();\n\n if (cleaned.length !== 12 && cleaned.length !== 13) return null;\n\n // Date starts at position 3 for companies, 4 for individuals\n const dateStart = cleaned.length === 12 ? 3 : 4;\n const dateStr = cleaned.slice(dateStart, dateStart + 6);\n\n const year = parseInt(dateStr.slice(0, 2), 10);\n const month = parseInt(dateStr.slice(2, 4), 10);\n const day = parseInt(dateStr.slice(4, 6), 10);\n\n // Assume 1900s for years > 30, 2000s otherwise (heuristic)\n const fullYear = year > 30 ? 1900 + year : 2000 + year;\n\n const date = new Date(fullYear, month - 1, day);\n\n // Validate the date\n if (date.getFullYear() !== fullYear || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null;\n }\n\n return date;\n}\n\n/**\n * Extract all info from a CURP\n */\nexport function parseCURP(curp: string): {\n valid: boolean;\n gender: 'M' | 'F' | null;\n birthDate: Date | null;\n birthState: string | null;\n stateCode: string | null;\n} {\n return {\n valid: validateCURP(curp),\n gender: getCURPGender(curp),\n birthDate: getCURPBirthDate(curp),\n birthState: getCURPBirthState(curp),\n stateCode: getCURPStateCode(curp),\n };\n}\n\n/**\n * Extract info from RFC\n */\nexport function parseRFC(rfc: string): {\n valid: boolean;\n type: 'company' | 'person' | null;\n date: Date | null;\n} {\n const valid = validateRFC(rfc);\n if (!valid) {\n return { valid: false, type: null, date: null };\n }\n\n return {\n valid: true,\n type: isRFCCompany(rfc) ? 'company' : 'person',\n date: getRFCDate(rfc),\n };\n}\n"]}
|
package/dist/locales/ar.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';function
|
|
1
|
+
'use strict';function r(t){return t.replace(/\D/g,"")}var a=[5,4,3,2,7,6,5,4,3,2];function c(t){let n=r(t);if(n.length!==10)throw new Error("CUIT body must be 10 digits");let e=0;for(let o=0;o<10;o++)e+=parseInt(n[o],10)*a[o];let i=11-e%11;return i===11?"0":i===10?"9":String(i)}function u(t){let n=r(t);if(n.length!==11)return false;let e=n.slice(0,2);if(!["20","23","24","27","30","33","34"].includes(e))return false;let o=n.slice(0,10),l=n.slice(-1);try{return c(o)===l}catch{return false}}function g(t){let n=r(t).padStart(11,"0");return `${n.slice(0,2)}-${n.slice(2,10)}-${n.slice(10)}`}function f(t){return r(t)}var h=u,x=g,C=f,T=c;function U(t){let n=r(t);return n.length>=7&&n.length<=8}function y(t){return r(t).replace(/\B(?=(\d{3})+(?!\d))/g,".")}function b(t){return r(t)}var s=["30","33","34"],p=["20","23","24","27"];function D(t){let n=r(t);if(n.length!==11)return false;let e=n.slice(0,2);return s.includes(e)}function k(t){let n=r(t);if(n.length!==11)return false;let e=n.slice(0,2);return p.includes(e)}function N(t){let n=r(t);if(n.length!==11)return "unknown";let e=n.slice(0,2);return s.includes(e)?"company":e==="20"?"male":e==="27"?"female":"unknown"}function S(t){let n=r(t);return n.length!==11?null:n.slice(2,10)}function d(t,n="20"){let e=r(t).padStart(8,"0"),i=n+e,o=c(i);return i+o}function M(t=false){let n=t?s:["20","27"],e=n[Math.floor(Math.random()*n.length)],i="";for(let o=0;o<8;o++)i+=Math.floor(Math.random()*10);return d(i,e)}exports.calculateCUILCheckDigit=T;exports.calculateCUITCheckDigit=c;exports.cleanCUIL=C;exports.cleanCUIT=f;exports.cleanDNI=b;exports.formatCUIL=x;exports.formatCUIT=g;exports.formatDNI=y;exports.generateCUIT=M;exports.generateCUITFromDNI=d;exports.getCUITType=N;exports.getDNIFromCUIT=S;exports.isCUITCompany=D;exports.isCUITPerson=k;exports.validateCUIL=h;exports.validateCUIT=u;exports.validateDNI=U;//# sourceMappingURL=ar.cjs.map
|
|
2
2
|
//# sourceMappingURL=ar.cjs.map
|
package/dist/locales/ar.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/utils.ts","../../src/locales/ar.ts"],"names":["cleanDigits","value","CUIT_WEIGHTS","calculateCUITCheckDigit","cuit","cleaned","sum","i","remainder","validateCUIT","type","body","checkDigit","formatCUIT","cleanCUIT","validateCUIL","formatCUIL","cleanCUIL","calculateCUILCheckDigit","validateDNI","dni","formatDNI","cleanDNI"],"mappings":"aAUO,SAASA,CAAAA,CAAYC,CAAAA,CAAuB,CACjD,OAAOA,CAAAA,CAAM,QAAQ,KAAA,CAAO,EAAE,CAChC,CCPA,IAAMC,CAAAA,CAAe,CAAC,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAO3C,SAASC,CAAAA,CAAwBC,CAAAA,CAAsB,CAC5D,IAAMC,CAAAA,CAAUL,CAAAA,CAAYI,CAAI,CAAA,CAEhC,GAAIC,EAAQ,MAAA,GAAW,EAAA,CACrB,MAAM,IAAI,KAAA,CAAM,6BAA6B,EAG/C,IAAIC,CAAAA,CAAM,CAAA,CACV,IAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,EAAA,CAAIA,CAAAA,EAAAA,CACtBD,CAAAA,EAAO,QAAA,CAASD,CAAAA,CAAQE,CAAC,CAAA,CAAG,EAAE,CAAA,CAAIL,CAAAA,CAAaK,CAAC,CAAA,CAGlD,IAAMC,CAAAA,CAAY,GAAMF,CAAAA,CAAM,EAAA,CAE9B,OAAIE,CAAAA,GAAc,EAAA,CAAW,GAAA,CACzBA,IAAc,EAAA,CAAW,GAAA,CACtB,MAAA,CAAOA,CAAS,CACzB,CAMO,SAASC,CAAAA,CAAaL,CAAAA,CAAuB,CAClD,IAAMC,CAAAA,CAAUL,CAAAA,CAAYI,CAAI,EAEhC,GAAIC,CAAAA,CAAQ,MAAA,GAAW,EAAA,CACrB,OAAO,MAAA,CAIT,IAAMK,CAAAA,CAAOL,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAE/B,GAAI,CADe,CAAC,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAI,CAAA,CAC5C,QAAA,CAASK,CAAI,CAAA,CAC3B,OAAO,OAGT,IAAMC,CAAAA,CAAON,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,EAC1BO,CAAAA,CAAaP,CAAAA,CAAQ,KAAA,CAAM,EAAE,CAAA,CAEnC,GAAI,CACF,OAAOF,CAAAA,CAAwBQ,CAAI,CAAA,GAAMC,CAC3C,CAAA,KAAQ,CACN,OAAO,MACT,CACF,CAMO,SAASC,CAAAA,CAAWT,CAAAA,CAAsB,CAC/C,IAAMC,CAAAA,CAAUL,CAAAA,CAAYI,CAAI,CAAA,CAAE,QAAA,CAAS,GAAI,GAAG,CAAA,CAClD,OAAO,CAAA,EAAGC,CAAAA,CAAQ,KAAA,CAAM,EAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,EAAE,CAAC,CAAA,CAC5E,CAKO,SAASS,CAAAA,CAAUV,CAAAA,CAAsB,CAC9C,OAAOJ,CAAAA,CAAYI,CAAI,CACzB,CAKO,IAAMW,CAAAA,CAAeN,CAAAA,CACfO,CAAAA,CAAaH,EACbI,CAAAA,CAAYH,CAAAA,CACZI,CAAAA,CAA0Bf,EAMhC,SAASgB,CAAAA,CAAYC,CAAAA,CAAsB,CAChD,IAAMf,CAAAA,CAAUL,CAAAA,CAAYoB,CAAG,CAAA,CAC/B,OAAOf,EAAQ,MAAA,EAAU,CAAA,EAAKA,CAAAA,CAAQ,MAAA,EAAU,CAClD,CAKO,SAASgB,CAAAA,CAAUD,CAAAA,CAAqB,CAE7C,OADgBpB,CAAAA,CAAYoB,CAAG,EAChB,OAAA,CAAQ,uBAAA,CAAyB,GAAG,CACrD,CAKO,SAASE,CAAAA,CAASF,CAAAA,CAAqB,CAC5C,OAAOpB,CAAAA,CAAYoB,CAAG,CACxB","file":"ar.cjs","sourcesContent":["/**\n * Remove all non-alphanumeric characters\n */\nexport function cleanDocument(value: string): string {\n return value.replace(/[^a-zA-Z0-9]/g, '');\n}\n\n/**\n * Remove all non-digit characters\n */\nexport function cleanDigits(value: string): string {\n return value.replace(/\\D/g, '');\n}\n\n/**\n * Pad a string with leading zeros\n */\nexport function padStart(value: string, length: number): string {\n return value.padStart(length, '0');\n}\n\n/**\n * Calculate modulo 11 check digit (common algorithm)\n */\nexport function mod11(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i % weights.length];\n }\n const remainder = sum % 11;\n return remainder;\n}\n\n/**\n * Calculate modulo 10 check digit (Luhn-like algorithms)\n */\nexport function mod10(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n let product = parseInt(digits[i], 10) * weights[i % weights.length];\n if (product > 9) {\n product = Math.floor(product / 10) + (product % 10);\n }\n sum += product;\n }\n return sum % 10;\n}\n","import { cleanDigits } from '../core/utils.js';\n\n/**\n * CUIT/CUIL weights\n */\nconst CUIT_WEIGHTS = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];\n\n/**\n * Calculate CUIT/CUIL check digit\n * @param cuit - The CUIT body (10 digits: type + DNI)\n * @returns The check digit (0-9)\n */\nexport function calculateCUITCheckDigit(cuit: string): string {\n const cleaned = cleanDigits(cuit);\n\n if (cleaned.length !== 10) {\n throw new Error('CUIT body must be 10 digits');\n }\n\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n sum += parseInt(cleaned[i], 10) * CUIT_WEIGHTS[i];\n }\n\n const remainder = 11 - (sum % 11);\n\n if (remainder === 11) return '0';\n if (remainder === 10) return '9'; // Special case for Argentina\n return String(remainder);\n}\n\n/**\n * Validate an Argentine CUIT (Clave Única de Identificación Tributaria)\n * @param cuit - The CUIT to validate (e.g., \"20-12345678-9\")\n */\nexport function validateCUIT(cuit: string): boolean {\n const cleaned = cleanDigits(cuit);\n\n if (cleaned.length !== 11) {\n return false;\n }\n\n // Valid type prefixes: 20, 23, 24, 27, 30, 33, 34\n const type = cleaned.slice(0, 2);\n const validTypes = ['20', '23', '24', '27', '30', '33', '34'];\n if (!validTypes.includes(type)) {\n return false;\n }\n\n const body = cleaned.slice(0, 10);\n const checkDigit = cleaned.slice(-1);\n\n try {\n return calculateCUITCheckDigit(body) === checkDigit;\n } catch {\n return false;\n }\n}\n\n/**\n * Format a CUIT for display\n * @returns Formatted CUIT (e.g., \"20-12345678-9\")\n */\nexport function formatCUIT(cuit: string): string {\n const cleaned = cleanDigits(cuit).padStart(11, '0');\n return `${cleaned.slice(0, 2)}-${cleaned.slice(2, 10)}-${cleaned.slice(10)}`;\n}\n\n/**\n * Clean a CUIT\n */\nexport function cleanCUIT(cuit: string): string {\n return cleanDigits(cuit);\n}\n\n/**\n * CUIL validation (same algorithm as CUIT)\n */\nexport const validateCUIL = validateCUIT;\nexport const formatCUIL = formatCUIT;\nexport const cleanCUIL = cleanCUIT;\nexport const calculateCUILCheckDigit = calculateCUITCheckDigit;\n\n/**\n * Validate an Argentine DNI\n * @param dni - The DNI number (7-8 digits)\n */\nexport function validateDNI(dni: string): boolean {\n const cleaned = cleanDigits(dni);\n return cleaned.length >= 7 && cleaned.length <= 8;\n}\n\n/**\n * Format a DNI for display\n */\nexport function formatDNI(dni: string): string {\n const cleaned = cleanDigits(dni);\n return cleaned.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n}\n\n/**\n * Clean a DNI\n */\nexport function cleanDNI(dni: string): string {\n return cleanDigits(dni);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/core/utils.ts","../../src/locales/ar.ts"],"names":["cleanDigits","value","CUIT_WEIGHTS","calculateCUITCheckDigit","cuit","cleaned","sum","i","remainder","validateCUIT","type","body","checkDigit","formatCUIT","cleanCUIT","validateCUIL","formatCUIL","cleanCUIL","calculateCUILCheckDigit","validateDNI","dni","formatDNI","cleanDNI","CUIT_TYPE_COMPANY","CUIT_TYPE_PERSON","isCUITCompany","isCUITPerson","getCUITType","getDNIFromCUIT","generateCUITFromDNI","cleanedDNI","generateCUIT","isCompany","types"],"mappings":"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","file":"ar.cjs","sourcesContent":["/**\n * Remove all non-alphanumeric characters\n */\nexport function cleanDocument(value: string): string {\n return value.replace(/[^a-zA-Z0-9]/g, '');\n}\n\n/**\n * Remove all non-digit characters\n */\nexport function cleanDigits(value: string): string {\n return value.replace(/\\D/g, '');\n}\n\n/**\n * Pad a string with leading zeros\n */\nexport function padStart(value: string, length: number): string {\n return value.padStart(length, '0');\n}\n\n/**\n * Calculate modulo 11 check digit (common algorithm)\n */\nexport function mod11(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i % weights.length];\n }\n const remainder = sum % 11;\n return remainder;\n}\n\n/**\n * Calculate modulo 10 check digit (Luhn-like algorithms)\n */\nexport function mod10(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n let product = parseInt(digits[i], 10) * weights[i % weights.length];\n if (product > 9) {\n product = Math.floor(product / 10) + (product % 10);\n }\n sum += product;\n }\n return sum % 10;\n}\n","import { cleanDigits } from '../core/utils.js';\n\n/**\n * CUIT/CUIL weights\n */\nconst CUIT_WEIGHTS = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];\n\n/**\n * Calculate CUIT/CUIL check digit\n * @param cuit - The CUIT body (10 digits: type + DNI)\n * @returns The check digit (0-9)\n */\nexport function calculateCUITCheckDigit(cuit: string): string {\n const cleaned = cleanDigits(cuit);\n\n if (cleaned.length !== 10) {\n throw new Error('CUIT body must be 10 digits');\n }\n\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n sum += parseInt(cleaned[i], 10) * CUIT_WEIGHTS[i];\n }\n\n const remainder = 11 - (sum % 11);\n\n if (remainder === 11) return '0';\n if (remainder === 10) return '9'; // Special case for Argentina\n return String(remainder);\n}\n\n/**\n * Validate an Argentine CUIT (Clave Única de Identificación Tributaria)\n * @param cuit - The CUIT to validate (e.g., \"20-12345678-9\")\n */\nexport function validateCUIT(cuit: string): boolean {\n const cleaned = cleanDigits(cuit);\n\n if (cleaned.length !== 11) {\n return false;\n }\n\n // Valid type prefixes: 20, 23, 24, 27, 30, 33, 34\n const type = cleaned.slice(0, 2);\n const validTypes = ['20', '23', '24', '27', '30', '33', '34'];\n if (!validTypes.includes(type)) {\n return false;\n }\n\n const body = cleaned.slice(0, 10);\n const checkDigit = cleaned.slice(-1);\n\n try {\n return calculateCUITCheckDigit(body) === checkDigit;\n } catch {\n return false;\n }\n}\n\n/**\n * Format a CUIT for display\n * @returns Formatted CUIT (e.g., \"20-12345678-9\")\n */\nexport function formatCUIT(cuit: string): string {\n const cleaned = cleanDigits(cuit).padStart(11, '0');\n return `${cleaned.slice(0, 2)}-${cleaned.slice(2, 10)}-${cleaned.slice(10)}`;\n}\n\n/**\n * Clean a CUIT\n */\nexport function cleanCUIT(cuit: string): string {\n return cleanDigits(cuit);\n}\n\n/**\n * CUIL validation (same algorithm as CUIT)\n */\nexport const validateCUIL = validateCUIT;\nexport const formatCUIL = formatCUIT;\nexport const cleanCUIL = cleanCUIT;\nexport const calculateCUILCheckDigit = calculateCUITCheckDigit;\n\n/**\n * Validate an Argentine DNI\n * @param dni - The DNI number (7-8 digits)\n */\nexport function validateDNI(dni: string): boolean {\n const cleaned = cleanDigits(dni);\n return cleaned.length >= 7 && cleaned.length <= 8;\n}\n\n/**\n * Format a DNI for display\n */\nexport function formatDNI(dni: string): string {\n const cleaned = cleanDigits(dni);\n return cleaned.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n}\n\n/**\n * Clean a DNI\n */\nexport function cleanDNI(dni: string): string {\n return cleanDigits(dni);\n}\n\n/**\n * CUIT type prefixes\n */\nconst CUIT_TYPE_COMPANY = ['30', '33', '34'];\nconst CUIT_TYPE_PERSON = ['20', '23', '24', '27'];\n\n/**\n * Check if CUIT belongs to a company\n */\nexport function isCUITCompany(cuit: string): boolean {\n const cleaned = cleanDigits(cuit);\n if (cleaned.length !== 11) return false;\n const type = cleaned.slice(0, 2);\n return CUIT_TYPE_COMPANY.includes(type);\n}\n\n/**\n * Check if CUIT belongs to an individual\n */\nexport function isCUITPerson(cuit: string): boolean {\n const cleaned = cleanDigits(cuit);\n if (cleaned.length !== 11) return false;\n const type = cleaned.slice(0, 2);\n return CUIT_TYPE_PERSON.includes(type);\n}\n\n/**\n * Get the type of entity from CUIT\n * @returns 'company' | 'male' | 'female' | 'unknown'\n */\nexport function getCUITType(cuit: string): 'company' | 'male' | 'female' | 'unknown' {\n const cleaned = cleanDigits(cuit);\n if (cleaned.length !== 11) return 'unknown';\n\n const type = cleaned.slice(0, 2);\n\n if (CUIT_TYPE_COMPANY.includes(type)) return 'company';\n if (type === '20') return 'male';\n if (type === '27') return 'female';\n // 23 and 24 can be either male or female\n if (type === '23' || type === '24') return 'unknown';\n\n return 'unknown';\n}\n\n/**\n * Get DNI from CUIT/CUIL\n */\nexport function getDNIFromCUIT(cuit: string): string | null {\n const cleaned = cleanDigits(cuit);\n if (cleaned.length !== 11) return null;\n return cleaned.slice(2, 10);\n}\n\n/**\n * Generate a valid CUIT from DNI\n * @param dni - The DNI (7-8 digits)\n * @param type - Type prefix (default '20' for male individual)\n */\nexport function generateCUITFromDNI(\n dni: string,\n type: '20' | '23' | '24' | '27' | '30' | '33' | '34' = '20',\n): string {\n const cleanedDNI = cleanDigits(dni).padStart(8, '0');\n const body = type + cleanedDNI;\n const checkDigit = calculateCUITCheckDigit(body);\n return body + checkDigit;\n}\n\n/**\n * Generate a random valid CUIT\n * @param isCompany - Whether to generate a company CUIT\n */\nexport function generateCUIT(isCompany: boolean = false): string {\n const types = isCompany ? CUIT_TYPE_COMPANY : ['20', '27'];\n const type = types[Math.floor(Math.random() * types.length)];\n\n let dni = '';\n for (let i = 0; i < 8; i++) {\n dni += Math.floor(Math.random() * 10);\n }\n\n return generateCUITFromDNI(dni, type as '20' | '27' | '30' | '33' | '34');\n}\n"]}
|
package/dist/locales/ar.d.cts
CHANGED
|
@@ -38,5 +38,33 @@ declare function formatDNI(dni: string): string;
|
|
|
38
38
|
* Clean a DNI
|
|
39
39
|
*/
|
|
40
40
|
declare function cleanDNI(dni: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Check if CUIT belongs to a company
|
|
43
|
+
*/
|
|
44
|
+
declare function isCUITCompany(cuit: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Check if CUIT belongs to an individual
|
|
47
|
+
*/
|
|
48
|
+
declare function isCUITPerson(cuit: string): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Get the type of entity from CUIT
|
|
51
|
+
* @returns 'company' | 'male' | 'female' | 'unknown'
|
|
52
|
+
*/
|
|
53
|
+
declare function getCUITType(cuit: string): 'company' | 'male' | 'female' | 'unknown';
|
|
54
|
+
/**
|
|
55
|
+
* Get DNI from CUIT/CUIL
|
|
56
|
+
*/
|
|
57
|
+
declare function getDNIFromCUIT(cuit: string): string | null;
|
|
58
|
+
/**
|
|
59
|
+
* Generate a valid CUIT from DNI
|
|
60
|
+
* @param dni - The DNI (7-8 digits)
|
|
61
|
+
* @param type - Type prefix (default '20' for male individual)
|
|
62
|
+
*/
|
|
63
|
+
declare function generateCUITFromDNI(dni: string, type?: '20' | '23' | '24' | '27' | '30' | '33' | '34'): string;
|
|
64
|
+
/**
|
|
65
|
+
* Generate a random valid CUIT
|
|
66
|
+
* @param isCompany - Whether to generate a company CUIT
|
|
67
|
+
*/
|
|
68
|
+
declare function generateCUIT(isCompany?: boolean): string;
|
|
41
69
|
|
|
42
|
-
export { calculateCUILCheckDigit, calculateCUITCheckDigit, cleanCUIL, cleanCUIT, cleanDNI, formatCUIL, formatCUIT, formatDNI, validateCUIL, validateCUIT, validateDNI };
|
|
70
|
+
export { calculateCUILCheckDigit, calculateCUITCheckDigit, cleanCUIL, cleanCUIT, cleanDNI, formatCUIL, formatCUIT, formatDNI, generateCUIT, generateCUITFromDNI, getCUITType, getDNIFromCUIT, isCUITCompany, isCUITPerson, validateCUIL, validateCUIT, validateDNI };
|
package/dist/locales/ar.d.ts
CHANGED
|
@@ -38,5 +38,33 @@ declare function formatDNI(dni: string): string;
|
|
|
38
38
|
* Clean a DNI
|
|
39
39
|
*/
|
|
40
40
|
declare function cleanDNI(dni: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Check if CUIT belongs to a company
|
|
43
|
+
*/
|
|
44
|
+
declare function isCUITCompany(cuit: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Check if CUIT belongs to an individual
|
|
47
|
+
*/
|
|
48
|
+
declare function isCUITPerson(cuit: string): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Get the type of entity from CUIT
|
|
51
|
+
* @returns 'company' | 'male' | 'female' | 'unknown'
|
|
52
|
+
*/
|
|
53
|
+
declare function getCUITType(cuit: string): 'company' | 'male' | 'female' | 'unknown';
|
|
54
|
+
/**
|
|
55
|
+
* Get DNI from CUIT/CUIL
|
|
56
|
+
*/
|
|
57
|
+
declare function getDNIFromCUIT(cuit: string): string | null;
|
|
58
|
+
/**
|
|
59
|
+
* Generate a valid CUIT from DNI
|
|
60
|
+
* @param dni - The DNI (7-8 digits)
|
|
61
|
+
* @param type - Type prefix (default '20' for male individual)
|
|
62
|
+
*/
|
|
63
|
+
declare function generateCUITFromDNI(dni: string, type?: '20' | '23' | '24' | '27' | '30' | '33' | '34'): string;
|
|
64
|
+
/**
|
|
65
|
+
* Generate a random valid CUIT
|
|
66
|
+
* @param isCompany - Whether to generate a company CUIT
|
|
67
|
+
*/
|
|
68
|
+
declare function generateCUIT(isCompany?: boolean): string;
|
|
41
69
|
|
|
42
|
-
export { calculateCUILCheckDigit, calculateCUITCheckDigit, cleanCUIL, cleanCUIT, cleanDNI, formatCUIL, formatCUIT, formatDNI, validateCUIL, validateCUIT, validateDNI };
|
|
70
|
+
export { calculateCUILCheckDigit, calculateCUITCheckDigit, cleanCUIL, cleanCUIT, cleanDNI, formatCUIL, formatCUIT, formatDNI, generateCUIT, generateCUITFromDNI, getCUITType, getDNIFromCUIT, isCUITCompany, isCUITPerson, validateCUIL, validateCUIT, validateDNI };
|
package/dist/locales/ar.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function
|
|
1
|
+
function r(t){return t.replace(/\D/g,"")}var a=[5,4,3,2,7,6,5,4,3,2];function c(t){let n=r(t);if(n.length!==10)throw new Error("CUIT body must be 10 digits");let e=0;for(let o=0;o<10;o++)e+=parseInt(n[o],10)*a[o];let i=11-e%11;return i===11?"0":i===10?"9":String(i)}function u(t){let n=r(t);if(n.length!==11)return false;let e=n.slice(0,2);if(!["20","23","24","27","30","33","34"].includes(e))return false;let o=n.slice(0,10),l=n.slice(-1);try{return c(o)===l}catch{return false}}function g(t){let n=r(t).padStart(11,"0");return `${n.slice(0,2)}-${n.slice(2,10)}-${n.slice(10)}`}function f(t){return r(t)}var h=u,x=g,C=f,T=c;function U(t){let n=r(t);return n.length>=7&&n.length<=8}function y(t){return r(t).replace(/\B(?=(\d{3})+(?!\d))/g,".")}function b(t){return r(t)}var s=["30","33","34"],p=["20","23","24","27"];function D(t){let n=r(t);if(n.length!==11)return false;let e=n.slice(0,2);return s.includes(e)}function k(t){let n=r(t);if(n.length!==11)return false;let e=n.slice(0,2);return p.includes(e)}function N(t){let n=r(t);if(n.length!==11)return "unknown";let e=n.slice(0,2);return s.includes(e)?"company":e==="20"?"male":e==="27"?"female":"unknown"}function S(t){let n=r(t);return n.length!==11?null:n.slice(2,10)}function d(t,n="20"){let e=r(t).padStart(8,"0"),i=n+e,o=c(i);return i+o}function M(t=false){let n=t?s:["20","27"],e=n[Math.floor(Math.random()*n.length)],i="";for(let o=0;o<8;o++)i+=Math.floor(Math.random()*10);return d(i,e)}export{T as calculateCUILCheckDigit,c as calculateCUITCheckDigit,C as cleanCUIL,f as cleanCUIT,b as cleanDNI,x as formatCUIL,g as formatCUIT,y as formatDNI,M as generateCUIT,d as generateCUITFromDNI,N as getCUITType,S as getDNIFromCUIT,D as isCUITCompany,k as isCUITPerson,h as validateCUIL,u as validateCUIT,U as validateDNI};//# sourceMappingURL=ar.js.map
|
|
2
2
|
//# sourceMappingURL=ar.js.map
|
package/dist/locales/ar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/utils.ts","../../src/locales/ar.ts"],"names":["cleanDigits","value","CUIT_WEIGHTS","calculateCUITCheckDigit","cuit","cleaned","sum","i","remainder","validateCUIT","type","body","checkDigit","formatCUIT","cleanCUIT","validateCUIL","formatCUIL","cleanCUIL","calculateCUILCheckDigit","validateDNI","dni","formatDNI","cleanDNI"],"mappings":"AAUO,SAASA,CAAAA,CAAYC,CAAAA,CAAuB,CACjD,OAAOA,CAAAA,CAAM,QAAQ,KAAA,CAAO,EAAE,CAChC,CCPA,IAAMC,CAAAA,CAAe,CAAC,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAO3C,SAASC,CAAAA,CAAwBC,CAAAA,CAAsB,CAC5D,IAAMC,CAAAA,CAAUL,CAAAA,CAAYI,CAAI,CAAA,CAEhC,GAAIC,EAAQ,MAAA,GAAW,EAAA,CACrB,MAAM,IAAI,KAAA,CAAM,6BAA6B,EAG/C,IAAIC,CAAAA,CAAM,CAAA,CACV,IAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,EAAA,CAAIA,CAAAA,EAAAA,CACtBD,CAAAA,EAAO,QAAA,CAASD,CAAAA,CAAQE,CAAC,CAAA,CAAG,EAAE,CAAA,CAAIL,CAAAA,CAAaK,CAAC,CAAA,CAGlD,IAAMC,CAAAA,CAAY,GAAMF,CAAAA,CAAM,EAAA,CAE9B,OAAIE,CAAAA,GAAc,EAAA,CAAW,GAAA,CACzBA,IAAc,EAAA,CAAW,GAAA,CACtB,MAAA,CAAOA,CAAS,CACzB,CAMO,SAASC,CAAAA,CAAaL,CAAAA,CAAuB,CAClD,IAAMC,CAAAA,CAAUL,CAAAA,CAAYI,CAAI,EAEhC,GAAIC,CAAAA,CAAQ,MAAA,GAAW,EAAA,CACrB,OAAO,MAAA,CAIT,IAAMK,CAAAA,CAAOL,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAE/B,GAAI,CADe,CAAC,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAA,CAAM,IAAI,CAAA,CAC5C,QAAA,CAASK,CAAI,CAAA,CAC3B,OAAO,OAGT,IAAMC,CAAAA,CAAON,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,EAC1BO,CAAAA,CAAaP,CAAAA,CAAQ,KAAA,CAAM,EAAE,CAAA,CAEnC,GAAI,CACF,OAAOF,CAAAA,CAAwBQ,CAAI,CAAA,GAAMC,CAC3C,CAAA,KAAQ,CACN,OAAO,MACT,CACF,CAMO,SAASC,CAAAA,CAAWT,CAAAA,CAAsB,CAC/C,IAAMC,CAAAA,CAAUL,CAAAA,CAAYI,CAAI,CAAA,CAAE,QAAA,CAAS,GAAI,GAAG,CAAA,CAClD,OAAO,CAAA,EAAGC,CAAAA,CAAQ,KAAA,CAAM,EAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,EAAE,CAAC,CAAA,CAC5E,CAKO,SAASS,CAAAA,CAAUV,CAAAA,CAAsB,CAC9C,OAAOJ,CAAAA,CAAYI,CAAI,CACzB,CAKO,IAAMW,CAAAA,CAAeN,CAAAA,CACfO,CAAAA,CAAaH,EACbI,CAAAA,CAAYH,CAAAA,CACZI,CAAAA,CAA0Bf,EAMhC,SAASgB,CAAAA,CAAYC,CAAAA,CAAsB,CAChD,IAAMf,CAAAA,CAAUL,CAAAA,CAAYoB,CAAG,CAAA,CAC/B,OAAOf,EAAQ,MAAA,EAAU,CAAA,EAAKA,CAAAA,CAAQ,MAAA,EAAU,CAClD,CAKO,SAASgB,CAAAA,CAAUD,CAAAA,CAAqB,CAE7C,OADgBpB,CAAAA,CAAYoB,CAAG,EAChB,OAAA,CAAQ,uBAAA,CAAyB,GAAG,CACrD,CAKO,SAASE,CAAAA,CAASF,CAAAA,CAAqB,CAC5C,OAAOpB,CAAAA,CAAYoB,CAAG,CACxB","file":"ar.js","sourcesContent":["/**\n * Remove all non-alphanumeric characters\n */\nexport function cleanDocument(value: string): string {\n return value.replace(/[^a-zA-Z0-9]/g, '');\n}\n\n/**\n * Remove all non-digit characters\n */\nexport function cleanDigits(value: string): string {\n return value.replace(/\\D/g, '');\n}\n\n/**\n * Pad a string with leading zeros\n */\nexport function padStart(value: string, length: number): string {\n return value.padStart(length, '0');\n}\n\n/**\n * Calculate modulo 11 check digit (common algorithm)\n */\nexport function mod11(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i % weights.length];\n }\n const remainder = sum % 11;\n return remainder;\n}\n\n/**\n * Calculate modulo 10 check digit (Luhn-like algorithms)\n */\nexport function mod10(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n let product = parseInt(digits[i], 10) * weights[i % weights.length];\n if (product > 9) {\n product = Math.floor(product / 10) + (product % 10);\n }\n sum += product;\n }\n return sum % 10;\n}\n","import { cleanDigits } from '../core/utils.js';\n\n/**\n * CUIT/CUIL weights\n */\nconst CUIT_WEIGHTS = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];\n\n/**\n * Calculate CUIT/CUIL check digit\n * @param cuit - The CUIT body (10 digits: type + DNI)\n * @returns The check digit (0-9)\n */\nexport function calculateCUITCheckDigit(cuit: string): string {\n const cleaned = cleanDigits(cuit);\n\n if (cleaned.length !== 10) {\n throw new Error('CUIT body must be 10 digits');\n }\n\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n sum += parseInt(cleaned[i], 10) * CUIT_WEIGHTS[i];\n }\n\n const remainder = 11 - (sum % 11);\n\n if (remainder === 11) return '0';\n if (remainder === 10) return '9'; // Special case for Argentina\n return String(remainder);\n}\n\n/**\n * Validate an Argentine CUIT (Clave Única de Identificación Tributaria)\n * @param cuit - The CUIT to validate (e.g., \"20-12345678-9\")\n */\nexport function validateCUIT(cuit: string): boolean {\n const cleaned = cleanDigits(cuit);\n\n if (cleaned.length !== 11) {\n return false;\n }\n\n // Valid type prefixes: 20, 23, 24, 27, 30, 33, 34\n const type = cleaned.slice(0, 2);\n const validTypes = ['20', '23', '24', '27', '30', '33', '34'];\n if (!validTypes.includes(type)) {\n return false;\n }\n\n const body = cleaned.slice(0, 10);\n const checkDigit = cleaned.slice(-1);\n\n try {\n return calculateCUITCheckDigit(body) === checkDigit;\n } catch {\n return false;\n }\n}\n\n/**\n * Format a CUIT for display\n * @returns Formatted CUIT (e.g., \"20-12345678-9\")\n */\nexport function formatCUIT(cuit: string): string {\n const cleaned = cleanDigits(cuit).padStart(11, '0');\n return `${cleaned.slice(0, 2)}-${cleaned.slice(2, 10)}-${cleaned.slice(10)}`;\n}\n\n/**\n * Clean a CUIT\n */\nexport function cleanCUIT(cuit: string): string {\n return cleanDigits(cuit);\n}\n\n/**\n * CUIL validation (same algorithm as CUIT)\n */\nexport const validateCUIL = validateCUIT;\nexport const formatCUIL = formatCUIT;\nexport const cleanCUIL = cleanCUIT;\nexport const calculateCUILCheckDigit = calculateCUITCheckDigit;\n\n/**\n * Validate an Argentine DNI\n * @param dni - The DNI number (7-8 digits)\n */\nexport function validateDNI(dni: string): boolean {\n const cleaned = cleanDigits(dni);\n return cleaned.length >= 7 && cleaned.length <= 8;\n}\n\n/**\n * Format a DNI for display\n */\nexport function formatDNI(dni: string): string {\n const cleaned = cleanDigits(dni);\n return cleaned.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n}\n\n/**\n * Clean a DNI\n */\nexport function cleanDNI(dni: string): string {\n return cleanDigits(dni);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/core/utils.ts","../../src/locales/ar.ts"],"names":["cleanDigits","value","CUIT_WEIGHTS","calculateCUITCheckDigit","cuit","cleaned","sum","i","remainder","validateCUIT","type","body","checkDigit","formatCUIT","cleanCUIT","validateCUIL","formatCUIL","cleanCUIL","calculateCUILCheckDigit","validateDNI","dni","formatDNI","cleanDNI","CUIT_TYPE_COMPANY","CUIT_TYPE_PERSON","isCUITCompany","isCUITPerson","getCUITType","getDNIFromCUIT","generateCUITFromDNI","cleanedDNI","generateCUIT","isCompany","types"],"mappings":"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","file":"ar.js","sourcesContent":["/**\n * Remove all non-alphanumeric characters\n */\nexport function cleanDocument(value: string): string {\n return value.replace(/[^a-zA-Z0-9]/g, '');\n}\n\n/**\n * Remove all non-digit characters\n */\nexport function cleanDigits(value: string): string {\n return value.replace(/\\D/g, '');\n}\n\n/**\n * Pad a string with leading zeros\n */\nexport function padStart(value: string, length: number): string {\n return value.padStart(length, '0');\n}\n\n/**\n * Calculate modulo 11 check digit (common algorithm)\n */\nexport function mod11(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i % weights.length];\n }\n const remainder = sum % 11;\n return remainder;\n}\n\n/**\n * Calculate modulo 10 check digit (Luhn-like algorithms)\n */\nexport function mod10(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n let product = parseInt(digits[i], 10) * weights[i % weights.length];\n if (product > 9) {\n product = Math.floor(product / 10) + (product % 10);\n }\n sum += product;\n }\n return sum % 10;\n}\n","import { cleanDigits } from '../core/utils.js';\n\n/**\n * CUIT/CUIL weights\n */\nconst CUIT_WEIGHTS = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];\n\n/**\n * Calculate CUIT/CUIL check digit\n * @param cuit - The CUIT body (10 digits: type + DNI)\n * @returns The check digit (0-9)\n */\nexport function calculateCUITCheckDigit(cuit: string): string {\n const cleaned = cleanDigits(cuit);\n\n if (cleaned.length !== 10) {\n throw new Error('CUIT body must be 10 digits');\n }\n\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n sum += parseInt(cleaned[i], 10) * CUIT_WEIGHTS[i];\n }\n\n const remainder = 11 - (sum % 11);\n\n if (remainder === 11) return '0';\n if (remainder === 10) return '9'; // Special case for Argentina\n return String(remainder);\n}\n\n/**\n * Validate an Argentine CUIT (Clave Única de Identificación Tributaria)\n * @param cuit - The CUIT to validate (e.g., \"20-12345678-9\")\n */\nexport function validateCUIT(cuit: string): boolean {\n const cleaned = cleanDigits(cuit);\n\n if (cleaned.length !== 11) {\n return false;\n }\n\n // Valid type prefixes: 20, 23, 24, 27, 30, 33, 34\n const type = cleaned.slice(0, 2);\n const validTypes = ['20', '23', '24', '27', '30', '33', '34'];\n if (!validTypes.includes(type)) {\n return false;\n }\n\n const body = cleaned.slice(0, 10);\n const checkDigit = cleaned.slice(-1);\n\n try {\n return calculateCUITCheckDigit(body) === checkDigit;\n } catch {\n return false;\n }\n}\n\n/**\n * Format a CUIT for display\n * @returns Formatted CUIT (e.g., \"20-12345678-9\")\n */\nexport function formatCUIT(cuit: string): string {\n const cleaned = cleanDigits(cuit).padStart(11, '0');\n return `${cleaned.slice(0, 2)}-${cleaned.slice(2, 10)}-${cleaned.slice(10)}`;\n}\n\n/**\n * Clean a CUIT\n */\nexport function cleanCUIT(cuit: string): string {\n return cleanDigits(cuit);\n}\n\n/**\n * CUIL validation (same algorithm as CUIT)\n */\nexport const validateCUIL = validateCUIT;\nexport const formatCUIL = formatCUIT;\nexport const cleanCUIL = cleanCUIT;\nexport const calculateCUILCheckDigit = calculateCUITCheckDigit;\n\n/**\n * Validate an Argentine DNI\n * @param dni - The DNI number (7-8 digits)\n */\nexport function validateDNI(dni: string): boolean {\n const cleaned = cleanDigits(dni);\n return cleaned.length >= 7 && cleaned.length <= 8;\n}\n\n/**\n * Format a DNI for display\n */\nexport function formatDNI(dni: string): string {\n const cleaned = cleanDigits(dni);\n return cleaned.replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n}\n\n/**\n * Clean a DNI\n */\nexport function cleanDNI(dni: string): string {\n return cleanDigits(dni);\n}\n\n/**\n * CUIT type prefixes\n */\nconst CUIT_TYPE_COMPANY = ['30', '33', '34'];\nconst CUIT_TYPE_PERSON = ['20', '23', '24', '27'];\n\n/**\n * Check if CUIT belongs to a company\n */\nexport function isCUITCompany(cuit: string): boolean {\n const cleaned = cleanDigits(cuit);\n if (cleaned.length !== 11) return false;\n const type = cleaned.slice(0, 2);\n return CUIT_TYPE_COMPANY.includes(type);\n}\n\n/**\n * Check if CUIT belongs to an individual\n */\nexport function isCUITPerson(cuit: string): boolean {\n const cleaned = cleanDigits(cuit);\n if (cleaned.length !== 11) return false;\n const type = cleaned.slice(0, 2);\n return CUIT_TYPE_PERSON.includes(type);\n}\n\n/**\n * Get the type of entity from CUIT\n * @returns 'company' | 'male' | 'female' | 'unknown'\n */\nexport function getCUITType(cuit: string): 'company' | 'male' | 'female' | 'unknown' {\n const cleaned = cleanDigits(cuit);\n if (cleaned.length !== 11) return 'unknown';\n\n const type = cleaned.slice(0, 2);\n\n if (CUIT_TYPE_COMPANY.includes(type)) return 'company';\n if (type === '20') return 'male';\n if (type === '27') return 'female';\n // 23 and 24 can be either male or female\n if (type === '23' || type === '24') return 'unknown';\n\n return 'unknown';\n}\n\n/**\n * Get DNI from CUIT/CUIL\n */\nexport function getDNIFromCUIT(cuit: string): string | null {\n const cleaned = cleanDigits(cuit);\n if (cleaned.length !== 11) return null;\n return cleaned.slice(2, 10);\n}\n\n/**\n * Generate a valid CUIT from DNI\n * @param dni - The DNI (7-8 digits)\n * @param type - Type prefix (default '20' for male individual)\n */\nexport function generateCUITFromDNI(\n dni: string,\n type: '20' | '23' | '24' | '27' | '30' | '33' | '34' = '20',\n): string {\n const cleanedDNI = cleanDigits(dni).padStart(8, '0');\n const body = type + cleanedDNI;\n const checkDigit = calculateCUITCheckDigit(body);\n return body + checkDigit;\n}\n\n/**\n * Generate a random valid CUIT\n * @param isCompany - Whether to generate a company CUIT\n */\nexport function generateCUIT(isCompany: boolean = false): string {\n const types = isCompany ? CUIT_TYPE_COMPANY : ['20', '27'];\n const type = types[Math.floor(Math.random() * types.length)];\n\n let dni = '';\n for (let i = 0; i < 8; i++) {\n dni += Math.floor(Math.random() * 10);\n }\n\n return generateCUITFromDNI(dni, type as '20' | '27' | '30' | '33' | '34');\n}\n"]}
|
package/dist/locales/br.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';function
|
|
1
|
+
'use strict';function r(n){return n.replace(/\D/g,"")}var c=[10,9,8,7,6,5,4,3,2],l=[11,10,9,8,7,6,5,4,3,2],a=[5,4,3,2,9,8,7,6,5,4,3,2],u=[6,5,4,3,2,9,8,7,6,5,4,3,2];function o(n,t){let e=0;for(let s=0;s<t.length;s++)e+=parseInt(n[s],10)*t[s];let i=e%11;return i<2?0:11-i}function g(n){let t=r(n).slice(0,9).padStart(9,"0");if(t.length!==9)throw new Error("CPF body must be 9 digits");let e=o(t,c),i=o(t+e,l);return `${e}${i}`}function f(n){let t=r(n).slice(0,12).padStart(12,"0");if(t.length!==12)throw new Error("CNPJ body must be 12 digits");let e=o(t,a),i=o(t+e,u);return `${e}${i}`}function m(n){let t=r(n);return t.length!==11||/^(\d)\1+$/.test(t)||o(t.slice(0,9),c)!==parseInt(t[9],10)?false:o(t.slice(0,10),l)===parseInt(t[10],10)}function h(n){let t=r(n).padStart(11,"0");return `${t.slice(0,3)}.${t.slice(3,6)}.${t.slice(6,9)}-${t.slice(9)}`}function C(n){return r(n)}function b(n){let t=r(n);return t.length!==14||/^(\d)\1+$/.test(t)||o(t.slice(0,12),a)!==parseInt(t[12],10)?false:o(t.slice(0,13),u)===parseInt(t[13],10)}function P(n){let t=r(n).padStart(14,"0");return `${t.slice(0,2)}.${t.slice(2,5)}.${t.slice(5,8)}/${t.slice(8,12)}-${t.slice(12)}`}function x(n){return r(n)}function $(){let n="";for(let e=0;e<9;e++)n+=Math.floor(Math.random()*10);let t=g(n);return n+t}function N(n="0001"){let t="";for(let s=0;s<8;s++)t+=Math.floor(Math.random()*10);let e=t+n.padStart(4,"0"),i=f(e);return e+i}function I(n){let t=r(n);return t.length!==14?false:t.slice(8,12)==="0001"}function J(n){let t=r(n);return t.length!==14?false:t.slice(8,12)!=="0001"}function S(n){let t=r(n);return t.length!==14?null:t.slice(8,12)}exports.calculateCNPJCheckDigit=f;exports.calculateCPFCheckDigit=g;exports.cleanCNPJ=x;exports.cleanCPF=C;exports.formatCNPJ=P;exports.formatCPF=h;exports.generateCNPJ=N;exports.generateCPF=$;exports.getCNPJBranchNumber=S;exports.isCNPJFilial=J;exports.isCNPJMatriz=I;exports.validateCNPJ=b;exports.validateCPF=m;//# sourceMappingURL=br.cjs.map
|
|
2
2
|
//# sourceMappingURL=br.cjs.map
|
package/dist/locales/br.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/utils.ts","../../src/locales/br.ts"],"names":["cleanDigits","value","CPF_WEIGHTS_1","CPF_WEIGHTS_2","CNPJ_WEIGHTS_1","CNPJ_WEIGHTS_2","calcCheckDigit","digits","weights","sum","i","remainder","validateCPF","cpf","cleaned","formatCPF","cleanCPF","validateCNPJ","cnpj","formatCNPJ","cleanCNPJ"],"mappings":"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","file":"br.cjs","sourcesContent":["/**\n * Remove all non-alphanumeric characters\n */\nexport function cleanDocument(value: string): string {\n return value.replace(/[^a-zA-Z0-9]/g, '');\n}\n\n/**\n * Remove all non-digit characters\n */\nexport function cleanDigits(value: string): string {\n return value.replace(/\\D/g, '');\n}\n\n/**\n * Pad a string with leading zeros\n */\nexport function padStart(value: string, length: number): string {\n return value.padStart(length, '0');\n}\n\n/**\n * Calculate modulo 11 check digit (common algorithm)\n */\nexport function mod11(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i % weights.length];\n }\n const remainder = sum % 11;\n return remainder;\n}\n\n/**\n * Calculate modulo 10 check digit (Luhn-like algorithms)\n */\nexport function mod10(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n let product = parseInt(digits[i], 10) * weights[i % weights.length];\n if (product > 9) {\n product = Math.floor(product / 10) + (product % 10);\n }\n sum += product;\n }\n return sum % 10;\n}\n","import { cleanDigits } from '../core/utils.js';\n\n/**\n * CPF weights for first check digit\n */\nconst CPF_WEIGHTS_1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * CPF weights for second check digit\n */\nconst CPF_WEIGHTS_2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * CNPJ weights for first check digit\n */\nconst CNPJ_WEIGHTS_1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * CNPJ weights for second check digit\n */\nconst CNPJ_WEIGHTS_2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * Calculate CPF/CNPJ check digit using mod 11\n */\nfunction calcCheckDigit(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < weights.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i];\n }\n const remainder = sum % 11;\n return remainder < 2 ? 0 : 11 - remainder;\n}\n\n/**\n * Validate a Brazilian CPF (Individual Tax ID)\n * @param cpf - The CPF to validate (11 digits)\n */\nexport function validateCPF(cpf: string): boolean {\n const cleaned = cleanDigits(cpf);\n\n if (cleaned.length !== 11) {\n return false;\n }\n\n // Check for known invalid CPFs (all same digits)\n if (/^(\\d)\\1+$/.test(cleaned)) {\n return false;\n }\n\n // Calculate first check digit\n const digit1 = calcCheckDigit(cleaned.slice(0, 9), CPF_WEIGHTS_1);\n if (digit1 !== parseInt(cleaned[9], 10)) {\n return false;\n }\n\n // Calculate second check digit\n const digit2 = calcCheckDigit(cleaned.slice(0, 10), CPF_WEIGHTS_2);\n return digit2 === parseInt(cleaned[10], 10);\n}\n\n/**\n * Format a CPF for display\n * @returns Formatted CPF (e.g., \"123.456.789-09\")\n */\nexport function formatCPF(cpf: string): string {\n const cleaned = cleanDigits(cpf).padStart(11, '0');\n return `${cleaned.slice(0, 3)}.${cleaned.slice(3, 6)}.${cleaned.slice(6, 9)}-${cleaned.slice(9)}`;\n}\n\n/**\n * Clean a CPF\n */\nexport function cleanCPF(cpf: string): string {\n return cleanDigits(cpf);\n}\n\n/**\n * Validate a Brazilian CNPJ (Business Tax ID)\n * @param cnpj - The CNPJ to validate (14 digits)\n */\nexport function validateCNPJ(cnpj: string): boolean {\n const cleaned = cleanDigits(cnpj);\n\n if (cleaned.length !== 14) {\n return false;\n }\n\n // Check for known invalid CNPJs (all same digits)\n if (/^(\\d)\\1+$/.test(cleaned)) {\n return false;\n }\n\n // Calculate first check digit\n const digit1 = calcCheckDigit(cleaned.slice(0, 12), CNPJ_WEIGHTS_1);\n if (digit1 !== parseInt(cleaned[12], 10)) {\n return false;\n }\n\n // Calculate second check digit\n const digit2 = calcCheckDigit(cleaned.slice(0, 13), CNPJ_WEIGHTS_2);\n return digit2 === parseInt(cleaned[13], 10);\n}\n\n/**\n * Format a CNPJ for display\n * @returns Formatted CNPJ (e.g., \"12.345.678/0001-95\")\n */\nexport function formatCNPJ(cnpj: string): string {\n const cleaned = cleanDigits(cnpj).padStart(14, '0');\n return `${cleaned.slice(0, 2)}.${cleaned.slice(2, 5)}.${cleaned.slice(5, 8)}/${cleaned.slice(8, 12)}-${cleaned.slice(12)}`;\n}\n\n/**\n * Clean a CNPJ\n */\nexport function cleanCNPJ(cnpj: string): string {\n return cleanDigits(cnpj);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/core/utils.ts","../../src/locales/br.ts"],"names":["cleanDigits","value","CPF_WEIGHTS_1","CPF_WEIGHTS_2","CNPJ_WEIGHTS_1","CNPJ_WEIGHTS_2","calcCheckDigit","digits","weights","sum","i","remainder","calculateCPFCheckDigit","cpf","cleaned","digit1","digit2","calculateCNPJCheckDigit","cnpj","validateCPF","formatCPF","cleanCPF","validateCNPJ","formatCNPJ","cleanCNPJ","generateCPF","body","checkDigits","generateCNPJ","branchNumber","base","isCNPJMatriz","isCNPJFilial","getCNPJBranchNumber"],"mappings":"aAUO,SAASA,CAAAA,CAAYC,CAAAA,CAAuB,CACjD,OAAOA,CAAAA,CAAM,OAAA,CAAQ,KAAA,CAAO,EAAE,CAChC,CCPA,IAAMC,CAAAA,CAAgB,CAAC,EAAA,CAAI,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAK3CC,CAAAA,CAAgB,CAAC,EAAA,CAAI,EAAA,CAAI,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAK/CC,CAAAA,CAAiB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAKpDC,CAAAA,CAAiB,CAAC,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,EAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAK7D,SAASC,CAAAA,CAAeC,CAAAA,CAAgBC,CAAAA,CAA2B,CACjE,IAAIC,CAAAA,CAAM,CAAA,CACV,IAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIF,CAAAA,CAAQ,MAAA,CAAQE,CAAAA,EAAAA,CAClCD,CAAAA,EAAO,QAAA,CAASF,CAAAA,CAAOG,CAAC,CAAA,CAAG,EAAE,CAAA,CAAIF,CAAAA,CAAQE,CAAC,CAAA,CAE5C,IAAMC,CAAAA,CAAYF,CAAAA,CAAM,EAAA,CACxB,OAAOE,CAAAA,CAAY,CAAA,CAAI,CAAA,CAAI,EAAA,CAAKA,CAClC,CAOO,SAASC,CAAAA,CAAuBC,CAAAA,CAAqB,CAC1D,IAAMC,CAAAA,CAAUd,CAAAA,CAAYa,CAAG,CAAA,CAAE,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,CAE5D,GAAIC,CAAAA,CAAQ,MAAA,GAAW,CAAA,CACrB,MAAM,IAAI,KAAA,CAAM,2BAA2B,CAAA,CAG7C,IAAMC,CAAAA,CAAST,CAAAA,CAAeQ,CAAAA,CAASZ,CAAa,CAAA,CAC9Cc,CAAAA,CAASV,CAAAA,CAAeQ,CAAAA,CAAUC,CAAAA,CAAQZ,CAAa,CAAA,CAE7D,OAAO,CAAA,EAAGY,CAAM,CAAA,EAAGC,CAAM,CAAA,CAC3B,CAOO,SAASC,CAAAA,CAAwBC,CAAAA,CAAsB,CAC5D,IAAMJ,CAAAA,CAAUd,CAAAA,CAAYkB,CAAI,CAAA,CAAE,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAAE,QAAA,CAAS,EAAA,CAAI,GAAG,CAAA,CAE/D,GAAIJ,CAAAA,CAAQ,MAAA,GAAW,EAAA,CACrB,MAAM,IAAI,KAAA,CAAM,6BAA6B,CAAA,CAG/C,IAAMC,CAAAA,CAAST,CAAAA,CAAeQ,CAAAA,CAASV,CAAc,CAAA,CAC/CY,CAAAA,CAASV,CAAAA,CAAeQ,CAAAA,CAAUC,CAAAA,CAAQV,CAAc,CAAA,CAE9D,OAAO,CAAA,EAAGU,CAAM,CAAA,EAAGC,CAAM,CAAA,CAC3B,CAMO,SAASG,CAAAA,CAAYN,CAAAA,CAAsB,CAChD,IAAMC,CAAAA,CAAUd,CAAAA,CAAYa,CAAG,CAAA,CAa/B,OAXIC,CAAAA,CAAQ,MAAA,GAAW,EAAA,EAKnB,WAAA,CAAY,IAAA,CAAKA,CAAO,CAAA,EAKbR,CAAAA,CAAeQ,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAGZ,CAAa,CAAA,GACjD,QAAA,CAASY,CAAAA,CAAQ,CAAC,CAAA,CAAG,EAAE,CAAA,CAC7B,KAAA,CAIMR,CAAAA,CAAeQ,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAAGX,CAAa,CAAA,GAC/C,QAAA,CAASW,CAAAA,CAAQ,EAAE,CAAA,CAAG,EAAE,CAC5C,CAMO,SAASM,CAAAA,CAAUP,CAAAA,CAAqB,CAC7C,IAAMC,CAAAA,CAAUd,CAAAA,CAAYa,CAAG,CAAA,CAAE,QAAA,CAAS,EAAA,CAAI,GAAG,CAAA,CACjD,OAAO,CAAA,EAAGC,EAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,CAAC,CAAC,CAAA,CACjG,CAKO,SAASO,CAAAA,CAASR,CAAAA,CAAqB,CAC5C,OAAOb,CAAAA,CAAYa,CAAG,CACxB,CAMO,SAASS,CAAAA,CAAaJ,CAAAA,CAAuB,CAClD,IAAMJ,CAAAA,CAAUd,CAAAA,CAAYkB,CAAI,CAAA,CAahC,OAXIJ,CAAAA,CAAQ,MAAA,GAAW,EAAA,EAKnB,WAAA,CAAY,IAAA,CAAKA,CAAO,CAAA,EAKbR,CAAAA,CAAeQ,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAAGV,CAAc,CAAA,GACnD,QAAA,CAASU,CAAAA,CAAQ,EAAE,CAAA,CAAG,EAAE,CAAA,CAC9B,KAAA,CAIMR,EAAeQ,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAAGT,CAAc,CAAA,GAChD,QAAA,CAASS,CAAAA,CAAQ,EAAE,CAAA,CAAG,EAAE,CAC5C,CAMO,SAASS,CAAAA,CAAWL,CAAAA,CAAsB,CAC/C,IAAMJ,CAAAA,CAAUd,CAAAA,CAAYkB,CAAI,CAAA,CAAE,QAAA,CAAS,EAAA,CAAI,GAAG,CAAA,CAClD,OAAO,CAAA,EAAGJ,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAC,CAAA,CAAA,EAAIA,CAAAA,CAAQ,KAAA,CAAM,EAAE,CAAC,CAAA,CAC1H,CAKO,SAASU,CAAAA,CAAUN,CAAAA,CAAsB,CAC9C,OAAOlB,EAAYkB,CAAI,CACzB,CAKO,SAASO,CAAAA,EAAsB,CACpC,IAAIC,CAAAA,CAAO,EAAA,CACX,IAAA,IAAShB,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,CAAA,CAAGA,CAAAA,EAAAA,CACrBgB,CAAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,EAAO,CAAI,EAAE,CAAA,CAEvC,IAAMC,CAAAA,CAAcf,CAAAA,CAAuBc,CAAI,CAAA,CAC/C,OAAOA,CAAAA,CAAOC,CAChB,CAMO,SAASC,CAAAA,CAAaC,CAAAA,CAAuB,MAAA,CAAgB,CAClE,IAAIC,CAAAA,CAAO,EAAA,CACX,IAAA,IAASpB,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAI,CAAA,CAAGA,CAAAA,EAAAA,CACrBoB,CAAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,EAAO,CAAI,EAAE,CAAA,CAEvC,IAAMJ,CAAAA,CAAOI,CAAAA,CAAOD,CAAAA,CAAa,QAAA,CAAS,CAAA,CAAG,GAAG,CAAA,CAC1CF,CAAAA,CAAcV,CAAAA,CAAwBS,CAAI,CAAA,CAChD,OAAOA,CAAAA,CAAOC,CAChB,CAKO,SAASI,CAAAA,CAAab,CAAAA,CAAuB,CAClD,IAAMJ,CAAAA,CAAUd,CAAAA,CAAYkB,CAAI,CAAA,CAChC,OAAIJ,CAAAA,CAAQ,MAAA,GAAW,EAAA,CAAW,KAAA,CAC3BA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,GAAM,MAClC,CAKO,SAASkB,CAAAA,CAAad,CAAAA,CAAuB,CAClD,IAAMJ,CAAAA,CAAUd,CAAAA,CAAYkB,CAAI,CAAA,CAChC,OAAIJ,CAAAA,CAAQ,MAAA,GAAW,EAAA,CAAW,KAAA,CAC3BA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,GAAM,MAClC,CAMO,SAASmB,CAAAA,CAAoBf,CAAAA,CAA6B,CAC/D,IAAMJ,CAAAA,CAAUd,CAAAA,CAAYkB,CAAI,CAAA,CAChC,OAAIJ,CAAAA,CAAQ,MAAA,GAAW,EAAA,CAAW,IAAA,CAC3BA,CAAAA,CAAQ,KAAA,CAAM,CAAA,CAAG,EAAE,CAC5B","file":"br.cjs","sourcesContent":["/**\n * Remove all non-alphanumeric characters\n */\nexport function cleanDocument(value: string): string {\n return value.replace(/[^a-zA-Z0-9]/g, '');\n}\n\n/**\n * Remove all non-digit characters\n */\nexport function cleanDigits(value: string): string {\n return value.replace(/\\D/g, '');\n}\n\n/**\n * Pad a string with leading zeros\n */\nexport function padStart(value: string, length: number): string {\n return value.padStart(length, '0');\n}\n\n/**\n * Calculate modulo 11 check digit (common algorithm)\n */\nexport function mod11(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i % weights.length];\n }\n const remainder = sum % 11;\n return remainder;\n}\n\n/**\n * Calculate modulo 10 check digit (Luhn-like algorithms)\n */\nexport function mod10(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < digits.length; i++) {\n let product = parseInt(digits[i], 10) * weights[i % weights.length];\n if (product > 9) {\n product = Math.floor(product / 10) + (product % 10);\n }\n sum += product;\n }\n return sum % 10;\n}\n","import { cleanDigits } from '../core/utils.js';\n\n/**\n * CPF weights for first check digit\n */\nconst CPF_WEIGHTS_1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * CPF weights for second check digit\n */\nconst CPF_WEIGHTS_2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * CNPJ weights for first check digit\n */\nconst CNPJ_WEIGHTS_1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * CNPJ weights for second check digit\n */\nconst CNPJ_WEIGHTS_2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n\n/**\n * Calculate CPF/CNPJ check digit using mod 11\n */\nfunction calcCheckDigit(digits: string, weights: number[]): number {\n let sum = 0;\n for (let i = 0; i < weights.length; i++) {\n sum += parseInt(digits[i], 10) * weights[i];\n }\n const remainder = sum % 11;\n return remainder < 2 ? 0 : 11 - remainder;\n}\n\n/**\n * Calculate CPF check digits\n * @param cpf - The CPF body (9 digits without check digits)\n * @returns The two check digits as a string\n */\nexport function calculateCPFCheckDigit(cpf: string): string {\n const cleaned = cleanDigits(cpf).slice(0, 9).padStart(9, '0');\n\n if (cleaned.length !== 9) {\n throw new Error('CPF body must be 9 digits');\n }\n\n const digit1 = calcCheckDigit(cleaned, CPF_WEIGHTS_1);\n const digit2 = calcCheckDigit(cleaned + digit1, CPF_WEIGHTS_2);\n\n return `${digit1}${digit2}`;\n}\n\n/**\n * Calculate CNPJ check digits\n * @param cnpj - The CNPJ body (12 digits without check digits)\n * @returns The two check digits as a string\n */\nexport function calculateCNPJCheckDigit(cnpj: string): string {\n const cleaned = cleanDigits(cnpj).slice(0, 12).padStart(12, '0');\n\n if (cleaned.length !== 12) {\n throw new Error('CNPJ body must be 12 digits');\n }\n\n const digit1 = calcCheckDigit(cleaned, CNPJ_WEIGHTS_1);\n const digit2 = calcCheckDigit(cleaned + digit1, CNPJ_WEIGHTS_2);\n\n return `${digit1}${digit2}`;\n}\n\n/**\n * Validate a Brazilian CPF (Individual Tax ID)\n * @param cpf - The CPF to validate (11 digits)\n */\nexport function validateCPF(cpf: string): boolean {\n const cleaned = cleanDigits(cpf);\n\n if (cleaned.length !== 11) {\n return false;\n }\n\n // Check for known invalid CPFs (all same digits)\n if (/^(\\d)\\1+$/.test(cleaned)) {\n return false;\n }\n\n // Calculate first check digit\n const digit1 = calcCheckDigit(cleaned.slice(0, 9), CPF_WEIGHTS_1);\n if (digit1 !== parseInt(cleaned[9], 10)) {\n return false;\n }\n\n // Calculate second check digit\n const digit2 = calcCheckDigit(cleaned.slice(0, 10), CPF_WEIGHTS_2);\n return digit2 === parseInt(cleaned[10], 10);\n}\n\n/**\n * Format a CPF for display\n * @returns Formatted CPF (e.g., \"123.456.789-09\")\n */\nexport function formatCPF(cpf: string): string {\n const cleaned = cleanDigits(cpf).padStart(11, '0');\n return `${cleaned.slice(0, 3)}.${cleaned.slice(3, 6)}.${cleaned.slice(6, 9)}-${cleaned.slice(9)}`;\n}\n\n/**\n * Clean a CPF\n */\nexport function cleanCPF(cpf: string): string {\n return cleanDigits(cpf);\n}\n\n/**\n * Validate a Brazilian CNPJ (Business Tax ID)\n * @param cnpj - The CNPJ to validate (14 digits)\n */\nexport function validateCNPJ(cnpj: string): boolean {\n const cleaned = cleanDigits(cnpj);\n\n if (cleaned.length !== 14) {\n return false;\n }\n\n // Check for known invalid CNPJs (all same digits)\n if (/^(\\d)\\1+$/.test(cleaned)) {\n return false;\n }\n\n // Calculate first check digit\n const digit1 = calcCheckDigit(cleaned.slice(0, 12), CNPJ_WEIGHTS_1);\n if (digit1 !== parseInt(cleaned[12], 10)) {\n return false;\n }\n\n // Calculate second check digit\n const digit2 = calcCheckDigit(cleaned.slice(0, 13), CNPJ_WEIGHTS_2);\n return digit2 === parseInt(cleaned[13], 10);\n}\n\n/**\n * Format a CNPJ for display\n * @returns Formatted CNPJ (e.g., \"12.345.678/0001-95\")\n */\nexport function formatCNPJ(cnpj: string): string {\n const cleaned = cleanDigits(cnpj).padStart(14, '0');\n return `${cleaned.slice(0, 2)}.${cleaned.slice(2, 5)}.${cleaned.slice(5, 8)}/${cleaned.slice(8, 12)}-${cleaned.slice(12)}`;\n}\n\n/**\n * Clean a CNPJ\n */\nexport function cleanCNPJ(cnpj: string): string {\n return cleanDigits(cnpj);\n}\n\n/**\n * Generate a random valid CPF\n */\nexport function generateCPF(): string {\n let body = '';\n for (let i = 0; i < 9; i++) {\n body += Math.floor(Math.random() * 10);\n }\n const checkDigits = calculateCPFCheckDigit(body);\n return body + checkDigits;\n}\n\n/**\n * Generate a random valid CNPJ\n * @param branchNumber - The branch number (0001 for matriz, others for filiais)\n */\nexport function generateCNPJ(branchNumber: string = '0001'): string {\n let base = '';\n for (let i = 0; i < 8; i++) {\n base += Math.floor(Math.random() * 10);\n }\n const body = base + branchNumber.padStart(4, '0');\n const checkDigits = calculateCNPJCheckDigit(body);\n return body + checkDigits;\n}\n\n/**\n * Check if CNPJ is a matriz (main branch)\n */\nexport function isCNPJMatriz(cnpj: string): boolean {\n const cleaned = cleanDigits(cnpj);\n if (cleaned.length !== 14) return false;\n return cleaned.slice(8, 12) === '0001';\n}\n\n/**\n * Check if CNPJ is a filial (branch)\n */\nexport function isCNPJFilial(cnpj: string): boolean {\n const cleaned = cleanDigits(cnpj);\n if (cleaned.length !== 14) return false;\n return cleaned.slice(8, 12) !== '0001';\n}\n\n/**\n * Get the branch number from a CNPJ\n * @returns The branch number (e.g., \"0001\" for matriz)\n */\nexport function getCNPJBranchNumber(cnpj: string): string | null {\n const cleaned = cleanDigits(cnpj);\n if (cleaned.length !== 14) return null;\n return cleaned.slice(8, 12);\n}\n"]}
|
package/dist/locales/br.d.cts
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate CPF check digits
|
|
3
|
+
* @param cpf - The CPF body (9 digits without check digits)
|
|
4
|
+
* @returns The two check digits as a string
|
|
5
|
+
*/
|
|
6
|
+
declare function calculateCPFCheckDigit(cpf: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Calculate CNPJ check digits
|
|
9
|
+
* @param cnpj - The CNPJ body (12 digits without check digits)
|
|
10
|
+
* @returns The two check digits as a string
|
|
11
|
+
*/
|
|
12
|
+
declare function calculateCNPJCheckDigit(cnpj: string): string;
|
|
1
13
|
/**
|
|
2
14
|
* Validate a Brazilian CPF (Individual Tax ID)
|
|
3
15
|
* @param cpf - The CPF to validate (11 digits)
|
|
@@ -26,5 +38,27 @@ declare function formatCNPJ(cnpj: string): string;
|
|
|
26
38
|
* Clean a CNPJ
|
|
27
39
|
*/
|
|
28
40
|
declare function cleanCNPJ(cnpj: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Generate a random valid CPF
|
|
43
|
+
*/
|
|
44
|
+
declare function generateCPF(): string;
|
|
45
|
+
/**
|
|
46
|
+
* Generate a random valid CNPJ
|
|
47
|
+
* @param branchNumber - The branch number (0001 for matriz, others for filiais)
|
|
48
|
+
*/
|
|
49
|
+
declare function generateCNPJ(branchNumber?: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Check if CNPJ is a matriz (main branch)
|
|
52
|
+
*/
|
|
53
|
+
declare function isCNPJMatriz(cnpj: string): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Check if CNPJ is a filial (branch)
|
|
56
|
+
*/
|
|
57
|
+
declare function isCNPJFilial(cnpj: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Get the branch number from a CNPJ
|
|
60
|
+
* @returns The branch number (e.g., "0001" for matriz)
|
|
61
|
+
*/
|
|
62
|
+
declare function getCNPJBranchNumber(cnpj: string): string | null;
|
|
29
63
|
|
|
30
|
-
export { cleanCNPJ, cleanCPF, formatCNPJ, formatCPF, validateCNPJ, validateCPF };
|
|
64
|
+
export { calculateCNPJCheckDigit, calculateCPFCheckDigit, cleanCNPJ, cleanCPF, formatCNPJ, formatCPF, generateCNPJ, generateCPF, getCNPJBranchNumber, isCNPJFilial, isCNPJMatriz, validateCNPJ, validateCPF };
|
package/dist/locales/br.d.ts
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate CPF check digits
|
|
3
|
+
* @param cpf - The CPF body (9 digits without check digits)
|
|
4
|
+
* @returns The two check digits as a string
|
|
5
|
+
*/
|
|
6
|
+
declare function calculateCPFCheckDigit(cpf: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Calculate CNPJ check digits
|
|
9
|
+
* @param cnpj - The CNPJ body (12 digits without check digits)
|
|
10
|
+
* @returns The two check digits as a string
|
|
11
|
+
*/
|
|
12
|
+
declare function calculateCNPJCheckDigit(cnpj: string): string;
|
|
1
13
|
/**
|
|
2
14
|
* Validate a Brazilian CPF (Individual Tax ID)
|
|
3
15
|
* @param cpf - The CPF to validate (11 digits)
|
|
@@ -26,5 +38,27 @@ declare function formatCNPJ(cnpj: string): string;
|
|
|
26
38
|
* Clean a CNPJ
|
|
27
39
|
*/
|
|
28
40
|
declare function cleanCNPJ(cnpj: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Generate a random valid CPF
|
|
43
|
+
*/
|
|
44
|
+
declare function generateCPF(): string;
|
|
45
|
+
/**
|
|
46
|
+
* Generate a random valid CNPJ
|
|
47
|
+
* @param branchNumber - The branch number (0001 for matriz, others for filiais)
|
|
48
|
+
*/
|
|
49
|
+
declare function generateCNPJ(branchNumber?: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Check if CNPJ is a matriz (main branch)
|
|
52
|
+
*/
|
|
53
|
+
declare function isCNPJMatriz(cnpj: string): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Check if CNPJ is a filial (branch)
|
|
56
|
+
*/
|
|
57
|
+
declare function isCNPJFilial(cnpj: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Get the branch number from a CNPJ
|
|
60
|
+
* @returns The branch number (e.g., "0001" for matriz)
|
|
61
|
+
*/
|
|
62
|
+
declare function getCNPJBranchNumber(cnpj: string): string | null;
|
|
29
63
|
|
|
30
|
-
export { cleanCNPJ, cleanCPF, formatCNPJ, formatCPF, validateCNPJ, validateCPF };
|
|
64
|
+
export { calculateCNPJCheckDigit, calculateCPFCheckDigit, cleanCNPJ, cleanCPF, formatCNPJ, formatCPF, generateCNPJ, generateCPF, getCNPJBranchNumber, isCNPJFilial, isCNPJMatriz, validateCNPJ, validateCPF };
|
package/dist/locales/br.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function
|
|
1
|
+
function r(n){return n.replace(/\D/g,"")}var c=[10,9,8,7,6,5,4,3,2],l=[11,10,9,8,7,6,5,4,3,2],a=[5,4,3,2,9,8,7,6,5,4,3,2],u=[6,5,4,3,2,9,8,7,6,5,4,3,2];function o(n,t){let e=0;for(let s=0;s<t.length;s++)e+=parseInt(n[s],10)*t[s];let i=e%11;return i<2?0:11-i}function g(n){let t=r(n).slice(0,9).padStart(9,"0");if(t.length!==9)throw new Error("CPF body must be 9 digits");let e=o(t,c),i=o(t+e,l);return `${e}${i}`}function f(n){let t=r(n).slice(0,12).padStart(12,"0");if(t.length!==12)throw new Error("CNPJ body must be 12 digits");let e=o(t,a),i=o(t+e,u);return `${e}${i}`}function m(n){let t=r(n);return t.length!==11||/^(\d)\1+$/.test(t)||o(t.slice(0,9),c)!==parseInt(t[9],10)?false:o(t.slice(0,10),l)===parseInt(t[10],10)}function h(n){let t=r(n).padStart(11,"0");return `${t.slice(0,3)}.${t.slice(3,6)}.${t.slice(6,9)}-${t.slice(9)}`}function C(n){return r(n)}function b(n){let t=r(n);return t.length!==14||/^(\d)\1+$/.test(t)||o(t.slice(0,12),a)!==parseInt(t[12],10)?false:o(t.slice(0,13),u)===parseInt(t[13],10)}function P(n){let t=r(n).padStart(14,"0");return `${t.slice(0,2)}.${t.slice(2,5)}.${t.slice(5,8)}/${t.slice(8,12)}-${t.slice(12)}`}function x(n){return r(n)}function $(){let n="";for(let e=0;e<9;e++)n+=Math.floor(Math.random()*10);let t=g(n);return n+t}function N(n="0001"){let t="";for(let s=0;s<8;s++)t+=Math.floor(Math.random()*10);let e=t+n.padStart(4,"0"),i=f(e);return e+i}function I(n){let t=r(n);return t.length!==14?false:t.slice(8,12)==="0001"}function J(n){let t=r(n);return t.length!==14?false:t.slice(8,12)!=="0001"}function S(n){let t=r(n);return t.length!==14?null:t.slice(8,12)}export{f as calculateCNPJCheckDigit,g as calculateCPFCheckDigit,x as cleanCNPJ,C as cleanCPF,P as formatCNPJ,h as formatCPF,N as generateCNPJ,$ as generateCPF,S as getCNPJBranchNumber,J as isCNPJFilial,I as isCNPJMatriz,b as validateCNPJ,m as validateCPF};//# sourceMappingURL=br.js.map
|
|
2
2
|
//# sourceMappingURL=br.js.map
|