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

128 lines 4.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.analyzeCNJ = analyzeCNJ; exports.writeCNJ = writeCNJ; exports.analyzeCNJBatch = analyzeCNJBatch; exports.isValidCNJComplete = isValidCNJComplete; exports.getBatchStatistics = getBatchStatistics; const segments_1 = require("../data/segments"); const errors_1 = require("../types/errors"); const court_analyzer_1 = require("./court-analyzer"); const decomposer_1 = require("./decomposer"); const source_unit_analyzer_1 = require("./source-unit-analyzer"); const validator_1 = require("./validator"); /** * Realiza análise completa de um número CNJ * @param cnj Número CNJ a ser analisado * @returns Estrutura AnalysisCNJ com todas as informações */ function analyzeCNJ(cnj) { try { // Decompõe o CNJ const decomposed = (0, decomposer_1.decomposeCNJ)(cnj); // Valida o CNJ const validation = (0, validator_1.validateCNJ)(cnj); // Obtém informações do segmento const segment = (0, segments_1.getSegment)(decomposed.segment); if (!segment) { throw errors_1.CNJValidationError.invalidSegment(decomposed.segment); } // Obtém informações da unidade de origem const sourceUnit = (0, source_unit_analyzer_1.getSourceUnit)(decomposed.sourceUnit, segment); // Obtém informações do tribunal de origem const originCourt = (0, court_analyzer_1.getOriginCourt)(decomposed.court, segment); return { receivedCNJ: cnj, validCNJ: validation.isValid, segmentName: segment.name, segmentShort: segment.short, sourceUnitType: sourceUnit.sourceUnitType, sourceUnitNumber: sourceUnit.sourceUnitNumber, courtType: originCourt.originCourtType, courtNumber: originCourt.originCourtNumber, detailed: decomposed, }; } catch (error) { if (error instanceof errors_1.CNJValidationError) { throw error; } throw new errors_1.CNJValidationError('CALCULATION_ERROR', error instanceof Error ? error.message : 'Erro desconhecido na análise', 'ANALYSIS_ERROR', { cnj }); } } /** * Gera descrição textual de um processo CNJ * @param analysis Análise CNJ completa * @returns Descrição formatada do processo */ function writeCNJ(analysis) { if (!analysis.detailed.lawsuitNumber) { throw new Error('AnalysisCNJ não possui dados utilizáveis'); } const lawsuit = analysis.detailed.lawsuitNumber; const year = analysis.detailed.protocolYear; const segment1 = analysis.segmentName; const segment2 = analysis.segmentShort; const sourceU1 = analysis.sourceUnitType; const ct1 = analysis.courtType; // Determina o nome da unidade de origem const sourceU2 = analysis.detailed.district || analysis.sourceUnitNumber; // Determina a identificação do tribunal const ct2 = analysis.detailed.uf || analysis.courtNumber; // Determina a preposição baseada na unidade de origem const preposition = analysis.detailed.sourceUnit !== '8' ? 'o' : 'a'; return `Processo número: ${lawsuit}, protocolado n${preposition} ${sourceU1} de ${sourceU2}, no ano ${year} | ${ct1}: ${ct2} | ${segment1} (${segment2})`; } /** * Analisa múltiplos CNJs * @param cnjs Array de números CNJ * @returns Array de análises */ function analyzeCNJBatch(cnjs) { return cnjs.map((cnj) => { try { return analyzeCNJ(cnj); } catch (error) { return { error: error instanceof Error ? error.message : 'Erro desconhecido', cnj, }; } }); } /** * Analisa CNJ e retorna apenas se é válido ou não * @param cnj Número CNJ a ser analisado * @returns true se válido, false se inválido */ function isValidCNJComplete(cnj) { try { const analysis = analyzeCNJ(cnj); return analysis.validCNJ; } catch { return false; } } /** * Obtém estatísticas de uma análise em lote * @param analyses Array de análises ou erros * @returns Estatísticas do processamento */ function getBatchStatistics(analyses) { const total = analyses.length; const errors = analyses.filter((item) => 'error' in item).length; const valid = analyses.filter((item) => 'validCNJ' in item && item.validCNJ).length; const invalid = analyses.filter((item) => 'validCNJ' in item && !item.validCNJ).length; return { total, successful: total - errors, errors, valid, invalid, successRate: total > 0 ? ((total - errors) / total) * 100 : 0, validityRate: total > 0 ? (valid / total) * 100 : 0, }; } //# sourceMappingURL=analyzer.js.map