UNPKG

cnj-validate

Version:

Biblioteca TypeScript para validação e análise de números de processos em conformidade com o CNJ (Conselho Nacional de Justiça) do Brasil

125 lines 3.81 kB
"use strict"; /** * Utilitários para formatação de dados CNJ */ Object.defineProperty(exports, "__esModule", { value: true }); exports.formatCNJWithMask = formatCNJWithMask; exports.removeCNJMask = removeCNJMask; exports.formatBrazilianDate = formatBrazilianDate; exports.formatTimestamp = formatTimestamp; exports.capitalizeWords = capitalizeWords; exports.formatLawsuitNumber = formatLawsuitNumber; exports.formatProtocolYear = formatProtocolYear; exports.formatFileSize = formatFileSize; exports.formatPercentage = formatPercentage; exports.formatDuration = formatDuration; /** * Formata número CNJ com máscara * @param cnj CNJ sem formatação (20 dígitos) * @returns CNJ formatado NNNNNNN-DD.AAAA.J.CT.0000 */ function formatCNJWithMask(cnj) { const clean = cnj.replace(/\D/g, ''); if (clean.length !== 20) { throw new Error('CNJ deve ter exatamente 20 dígitos'); } return `${clean.slice(0, 7)}-${clean.slice(7, 9)}.${clean.slice(9, 13)}.${clean.slice(13, 14)}.${clean.slice(14, 16)}.${clean.slice(16, 20)}`; } /** * Remove formatação de um CNJ * @param cnj CNJ formatado ou não * @returns CNJ apenas com números */ function removeCNJMask(cnj) { return cnj.replace(/\D/g, ''); } /** * Formata data no padrão brasileiro * @param date Data a ser formatada * @returns Data no formato DD/MM/AAAA */ function formatBrazilianDate(date) { return date.toLocaleDateString('pt-BR'); } /** * Formata timestamp para string legível * @param timestamp Timestamp em millisegundos * @returns String formatada */ function formatTimestamp(timestamp) { return new Date(timestamp).toLocaleString('pt-BR'); } /** * Capitaliza primeira letra de cada palavra * @param text Texto a ser formatado * @returns Texto com primeiras letras maiúsculas */ function capitalizeWords(text) { return text.toLowerCase().replace(/\b\w/g, (char) => char.toUpperCase()); } /** * Formata número de processo para exibição * @param lawsuitNumber Número do processo (7 dígitos) * @returns Número formatado */ function formatLawsuitNumber(lawsuitNumber) { if (lawsuitNumber.length !== 7) { return lawsuitNumber; } return `${lawsuitNumber.slice(0, 7)}`; } /** * Formata ano de protocolo * @param year Ano (4 dígitos) * @returns Ano formatado */ function formatProtocolYear(year) { return year; } /** * Formata tamanho de arquivo em bytes para string legível * @param bytes Tamanho em bytes * @returns String formatada (ex: "1.5 MB") */ function formatFileSize(bytes) { if (bytes === 0) return '0 Bytes'; const k = 1024; const sizes = ['Bytes', 'KB', 'MB', 'GB']; const i = Math.min(Math.floor(Math.log(bytes) / Math.log(k)), sizes.length - 1); return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]; } /** * Formata porcentagem * @param value Valor decimal (0-1) * @param decimals Número de casas decimais * @returns Porcentagem formatada */ function formatPercentage(value, decimals = 1) { return `${(value * 100).toFixed(decimals)}%`; } /** * Formata duração em millisegundos para string legível * @param ms Duração em millisegundos * @returns String formatada (ex: "2m 30s") */ function formatDuration(ms) { if (ms < 1000) { return `${ms}ms`; } const seconds = Math.floor(ms / 1000); if (seconds < 60) { return `${seconds}s`; } const minutes = Math.floor(seconds / 60); const remainingSeconds = seconds % 60; if (minutes < 60) { return remainingSeconds > 0 ? `${minutes}m ${remainingSeconds}s` : `${minutes}m`; } const hours = Math.floor(minutes / 60); const remainingMinutes = minutes % 60; return `${hours}h ${remainingMinutes}m`; } //# sourceMappingURL=formatters.js.map