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

160 lines 5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getOriginCourt = getOriginCourt; exports.getMaxCourtBySegment = getMaxCourtBySegment; const court_1 = require("../types/court"); const district_1 = require("../types/district"); const errors_1 = require("../types/errors"); /** * Analisa e retorna informações sobre tribunal de origem * @param court Código do tribunal (2 dígitos) * @param segment Informações do segmento * @returns Informações do tribunal de origem */ function getOriginCourt(court, segment) { switch (court) { case court_1.SpecialCourtCode.ORIGINAL: return parseCourt00(segment); case court_1.SpecialCourtCode.COUNCIL: return parseCourt90(segment); default: return parseCourtOther(segment, court); } } /** * Processa tribunal código 00 (processo originário) */ function parseCourt00(segment) { let originCourt; switch (segment.number) { case 1: case 2: case 3: originCourt = `${segment.name} (${segment.short})`; break; case 5: originCourt = 'Tribunal Superior do Trabalho (TST)'; break; case 6: originCourt = 'Tribunal Superior Eleitoral (TSE)'; break; case 7: case 9: originCourt = 'Superior Tribunal Militar (STM)'; break; default: throw errors_1.CNJValidationError.invalidCourt('00', segment.number); } return { originCourtType: court_1.CourtType.ORIGINAL_LAWSUIT, originCourtNumber: originCourt, }; } /** * Processa tribunal código 90 (conselhos especiais) */ function parseCourt90(segment) { let originCourt; switch (segment.number) { case 4: originCourt = 'Conselho da Justiça Federal'; break; case 5: originCourt = 'Conselho Superior da Justiça do Trabalho'; break; default: throw errors_1.CNJValidationError.invalidCourt('90', segment.number); } return { originCourtType: court_1.CourtType.ORIGINAL_LAWSUIT, originCourtNumber: originCourt, }; } /** * Processa outros códigos de tribunal */ function parseCourtOther(segment, court) { const courtNumber = parseInt(court, 10); if (isNaN(courtNumber)) { throw errors_1.CNJValidationError.invalidCourt(court, segment.number); } // Validação específica para tribunais militares estaduais if (segment.number === 9) { return parseMilitaryCourt(courtNumber); } // Validação de limites por segmento if (!isCourtValid(segment, courtNumber)) { throw errors_1.CNJValidationError.invalidCourt(court, segment.number); } const { courtType, courtNumber: courtNum } = getCourtTypeAndNumber(segment, courtNumber); return { originCourtType: courtType, originCourtNumber: courtNum, }; } /** * Processa tribunais militares estaduais */ function parseMilitaryCourt(courtCode) { let courtName; switch (courtCode) { case district_1.MilitaryCourtCodes.MG: courtName = 'Minas Gerais - MG'; break; case district_1.MilitaryCourtCodes.RS: courtName = 'Rio Grande do Sul - RS'; break; case district_1.MilitaryCourtCodes.SP: courtName = 'São Paulo - SP'; break; default: throw errors_1.CNJValidationError.invalidCourt(courtCode.toString(), 9); } return { originCourtType: court_1.CourtType.MARTIAL_COURT, originCourtNumber: courtName, }; } /** * Determina tipo e número do tribunal baseado no segmento */ function getCourtTypeAndNumber(segment, courtNumber) { switch (segment.number) { case 4: case 5: return { courtType: court_1.CourtType.REGION, courtNumber: courtNumber.toString(), }; case 6: case 8: return { courtType: court_1.CourtType.ESTATE, courtNumber: courtNumber.toString(), }; case 7: return { courtType: court_1.CourtType.JUDICIAL_CIRCUIT, courtNumber: courtNumber.toString(), }; default: throw errors_1.CNJValidationError.invalidCourt(courtNumber.toString(), segment.number); } } /** * Valida se o número do tribunal é válido para o segmento */ function isCourtValid(segment, courtNumber) { const maxCourt = court_1.MAX_COURT_BY_SEGMENT[segment.number]; if (maxCourt === 0) { return true; // Sem limite } return courtNumber >= 1 && courtNumber <= maxCourt; } /** * Obtém limite máximo de tribunal para um segmento */ function getMaxCourtBySegment(segmentNumber) { return court_1.MAX_COURT_BY_SEGMENT[segmentNumber] || 0; } //# sourceMappingURL=court-analyzer.js.map