UNPKG

whatsapp-crm-common

Version:

Componentes compartidos para servicios de WhatsApp CRM - Common utilities and types for WhatsApp CRM system

101 lines 3.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatPhoneNumber = formatPhoneNumber; exports.formatPhoneNumberForDisplay = formatPhoneNumberForDisplay; exports.isValidPhoneNumber = isValidPhoneNumber; exports.formatGroupId = formatGroupId; exports.extractPhoneNumber = extractPhoneNumber; exports.timestampToDate = timestampToDate; exports.formatDateTime = formatDateTime; /** * Formatea un número de teléfono para asegurar que tenga el formato correcto para WhatsApp * @param phone Número de teléfono (con código de país) * @returns Número formateado para WhatsApp */ function formatPhoneNumber(phone) { // Eliminar cualquier carácter no numérico let cleaned = phone.replace(/\D/g, ""); // Asegurar que tiene el formato correcto para WhatsApp (CCNNNNNNNNN@s.whatsapp.net) if (!cleaned.includes("@")) { cleaned = `${cleaned}@s.whatsapp.net`; } return cleaned; } /** * Formatea un número de teléfono para mostrar en la interfaz de usuario * @param phone Número de teléfono con formato WhatsApp * @returns Número formateado para mostrar */ function formatPhoneNumberForDisplay(phone) { // Quitar el sufijo '@s.whatsapp.net' si existe let cleaned = phone.replace(/@s\.whatsapp\.net$/, ""); // Formatear como +CC NNN NNN NNN si es posible if (cleaned.length > 2) { // Asumir que los primeros 2-3 dígitos son el código de país const countryCode = cleaned.substring(0, cleaned.length > 10 ? 3 : 2); const rest = cleaned.substring(countryCode.length); // Insertar espacios cada 3 dígitos let formatted = ""; for (let i = 0; i < rest.length; i += 3) { formatted += " " + rest.substring(i, Math.min(i + 3, rest.length)); } return `+${countryCode}${formatted}`; } return cleaned; } /** * Verifica si un número de teléfono tiene el formato correcto para WhatsApp * @param phone Número de teléfono a verificar * @returns true si el formato es válido, false en caso contrario */ function isValidPhoneNumber(phone) { // Patrón básico: código de país + número (al menos 10 dígitos en total) const phonePattern = /^\d{10,15}$/; // Limpiar el número de cualquier caracter que no sea dígito const cleaned = phone.replace(/\D/g, ""); return phonePattern.test(cleaned); } /** * Convierte un ID de chat grupal al formato JID de WhatsApp * @param groupId ID del grupo * @returns ID del grupo en formato JID */ function formatGroupId(groupId) { // Asegurar que tiene el formato correcto para grupos de WhatsApp if (!groupId.includes("@")) { groupId = `${groupId}@g.us`; } return groupId; } /** * Extrae el número de teléfono desde un JID de WhatsApp * @param jid JID de WhatsApp (ej: '5491155555555@s.whatsapp.net') * @returns Número de teléfono sin el dominio */ function extractPhoneNumber(jid) { return jid.split("@")[0]; } /** * Convierte una marca de tiempo de WhatsApp a Date * @param timestamp Marca de tiempo en formato WhatsApp (segundos) * @returns Objeto Date */ function timestampToDate(timestamp) { // WhatsApp usa segundos, JavaScript usa milisegundos return new Date(timestamp * 1000); } /** * Formatea una fecha para mostrar en la interfaz de usuario * @param date Fecha a formatear * @returns Fecha formateada */ function formatDateTime(date) { return date.toLocaleString("es-ES", { year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", }); } //# sourceMappingURL=formatter.js.map