ci-validation
Version:
🇺🇾 Complete TypeScript/JavaScript library for validating Uruguayan CI (Cédula de Identidad) with official algorithm and government service integration
87 lines • 3.54 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProcessFieldSubmitFormatter = void 0;
/**
* Clase para formatear y generar requests de processFieldSubmit limpios
*/
class ProcessFieldSubmitFormatter {
/**
* Crea un objeto JSON limpio y ordenado para processFieldSubmit
* @param frmId - ID del formulario
* @param attId - ID del atributo
* @param value - Valor del campo
* @returns Objeto JSON formateado sin elementos duplicados y en orden
*/
static createRequest(frmId, attId, value) {
// Crear objeto en el orden especÃfico requerido
const request = {
frmId: frmId.trim(),
attId: attId.trim(),
value: value.trim(),
};
return request;
}
/**
* Convierte múltiples requests a un array JSON limpio
* @param requests - Array de requests con frmId, attId y value
* @returns Array de objetos JSON formateados, sin duplicados y ordenados
*/
static createMultipleRequests(requests) {
// Usar un Map para eliminar duplicados basados en frmId + attId
const uniqueRequests = new Map();
requests.forEach(({ frmId, attId, value }) => {
const key = `${frmId.trim()}_${attId.trim()}`;
// Solo agregar si no existe o si el nuevo valor no está vacÃo
if (!uniqueRequests.has(key) || (value.trim() !== "" && uniqueRequests.get(key)?.value === "")) {
uniqueRequests.set(key, this.createRequest(frmId, attId, value));
}
});
// Convertir a array y ordenar por frmId primero, luego por attId
return Array.from(uniqueRequests.values()).sort((a, b) => {
const frmIdComparison = a.frmId.localeCompare(b.frmId);
if (frmIdComparison !== 0) {
return frmIdComparison;
}
return a.attId.localeCompare(b.attId);
});
}
/**
* Extrae parámetros de processFieldSubmit de una URL
* @param url - URL que contiene los parámetros
* @returns Objeto con los parámetros extraÃdos o null si no se encuentran
*/
static extractFromUrl(url) {
try {
const urlObj = new URL(url);
const frmId = urlObj.searchParams.get("frmId");
const attId = urlObj.searchParams.get("attId");
if (!frmId || !attId) {
return null;
}
return this.createRequest(frmId, attId, "");
}
catch (error) {
console.error("Error al extraer parámetros de URL:", error);
return null;
}
}
/**
* Convierte el objeto a JSON string formateado
* @param request - Request object o array de requests
* @param indent - Número de espacios para indentación (default: 2)
* @returns JSON string formateado
*/
static toFormattedJson(request, indent = 2) {
return JSON.stringify(request, null, indent);
}
/**
* Valida que un objeto tenga la estructura correcta de ProcessFieldSubmitRequest
* @param obj - Objeto a validar
* @returns true si es válido, false si no
*/
static isValidRequest(obj) {
return typeof obj === "object" && obj !== null && typeof obj.frmId === "string" && typeof obj.attId === "string" && typeof obj.value === "string" && Object.keys(obj).length === 3;
}
}
exports.ProcessFieldSubmitFormatter = ProcessFieldSubmitFormatter;
//# sourceMappingURL=processFieldSubmitFormatter.js.map
;