UNPKG

performance-monitor-logger

Version:

## Instalação

258 lines 9.68 kB
/** * 📊 SISTEMA DE LOGS DE PERFORMANCE * * Sistema completo de monitoramento de performance para aplicações Angular * com feedback visual através de emojis e relatórios automáticos. * * Características: * - 📈 Monitoramento em Tempo Real * - 🟢🟡🔴 Classificação Visual por Performance * - ⏰ Relatórios Automáticos após Inatividade * - 📊 Análise Detalhada com Recomendações * - 🛠️ API Pública para Controle Manual * * @author Pedro Henrique dos Santos Leuchs * @version 1.0.23 * @since 2025-07-11 */ export interface PerformanceStats { count: number; totalTime: number; minTime: number; maxTime: number; customThresholds?: { ok?: number; lento?: number; critico?: number; }; } export interface DynamicThresholds { ok: number; lento: number; critico: number; } export interface InstrumentOptions { include?: Array<string | RegExp>; exclude?: Array<string | RegExp>; nameTransform?: (name: string, path?: string[]) => string; preserveToString?: boolean; maxDepth?: number; } export interface HookSetServiceOptions extends InstrumentOptions { includeObjects?: Array<string | RegExp>; excludeObjects?: Array<string | RegExp>; maxWalkDepth?: number; labelFromPath?: (path: string[]) => string; } export declare class LogsPerformatico { private monitoramentoAtivo; private performanceTimers; private performanceSummary; private serviceName; private httpRequests; private functionContextStack; private eventContextStack; private timerStack; private lastTimerActivityAt; private firstTimerInEventAt; private currentEventBeginAt; private instrumentedFns; constructor(serviceName?: string); /** * Registra requisição HTTP associando à função monitorada ativa (se houver) * @param payload Dados da requisição */ registerHttpRequest(authReq: any, tempo: number, error?: boolean): void; private extrairNomeDeSQL; /** * 🚀 Mensagem de boas-vindas do sistema */ showWelcomeMessage(): void; /** * ⏱️ Inicia cronômetro para uma operação * @param operationName Nome da operação a ser monitorada */ startTimer(operationName: string): void; /** * 🏁 Finaliza cronômetro e exibe resultado com emoji * @param operationName Nome da operação * @param customMessage Mensagem customizada opcional (ex: para erros) * @param customThresholds Thresholds customizados para esta operação específica */ endTimer(operationName: string, customMessage?: string, customThresholds?: { ok?: number; lento?: number; critico?: number; }): void; /** * 🎨 Determina status de performance baseado no tempo * @param elapsedTime Tempo decorrido em milissegundos * @param customThresholds Thresholds customizados para esta operação específica * @param operationName Nome da operação (para calcular thresholds dinâmicos) * @returns Objeto com emoji, status e cor */ private getPerformanceStatus; /** * 📈 Atualiza estatísticas de performance para o sumário * @param operationName Nome da operação * @param elapsedTime Tempo decorrido em milissegundos * @param customThresholds Thresholds customizados para armazenar (opcional) */ private updatePerformanceSummary; /** * 📊 Exibe relatório resumido de todas as operações (compactado) */ showPerformanceSummary(showFullDetails?: boolean): void; /** * 📑 Exibe relatório detalhado de requisições HTTP agrupadas por função */ showHttpRequestsReport(): void; /** * 🔍 Gera análise detalhada de performance */ generateDetailedAnalysis(): void; /** * 📋 Categoriza operações por performance * @returns Objeto com arrays de operações categorizadas */ private categorizeOperations; /** * 💡 Exibe recomendações baseadas na análise * @param criticalOperations Array de operações críticas * @param slowOperations Array de operações lentas */ private showRecommendations; /** * 📊 Exibe score de performance * @param fastOperationsCount Número de operações rápidas */ private showPerformanceScore; /** * 📊 Método público para exibir relatório de performance * Pode ser chamado no console do navegador para análise */ getPerformanceReport(): void; /** * 🏷️ Controla contexto de evento atual (ex.: AppInit, Click) */ beginEventContext(label: string): void; endEventContext(): void; runInEventContext<T>(label: string, fn: () => Promise<T> | T): Promise<T>; /** * 🧹 Método público para limpar dados de performance * Útil para resetar estatísticas e começar nova análise */ resetPerformanceData(): void; /** * ⏰ Configura o delay para relatório por inatividade * @param seconds Número de segundos de inatividade para mostrar relatório */ setInactivityDelay(seconds: number): void; /** * 🔇 Desabilita relatório automático por inatividade */ disableInactivityReport(): void; /** * ⚙️ Configura o threshold para relatório automático * @param threshold Número de operações para mostrar relatório automaticamente */ setAutoReportThreshold(threshold: number): void; /** * 🔇 Desabilita relatório automático */ disableAutoReport(): void; /** * 📈 Obtém estatísticas resumidas sem exibir no console * @returns Objeto com estatísticas de performance */ getStatistics(): { totalOperations: number; averageTime: number; fastOperations: number; slowOperations: number; criticalOperations: number; performanceScore: number; }; /** * 🎯 Obtém dados de uma operação específica * @param operationName Nome da operação * @returns Estatísticas da operação ou null se não encontrada */ getOperationStats(operationName: string): (PerformanceStats & { httpCalls: string[]; }) | null; /** * 📋 Lista todas as operações monitoradas * @returns Array com nomes das operações */ getMonitoredOperations(): string[]; /** * 🔄 Verifica se há timers ativos * @returns true se há timers em execução */ hasActiveTimers(): boolean; /** * 🗑️ Limpa apenas os timers ativos (não as estatísticas) */ clearActiveTimers(): void; /** * 🔌 Instrumenta todas as funções públicas de um objeto/instância sem alterar assinatura * @param obj Objeto ou instância a instrumentar * @param options Filtros e ajustes de nome */ instrumentObject(obj: any, options?: InstrumentOptions): void; /** * 🌐 Instrumenta funções em um namespace (ex.: window) com filtros e profundidade * @param root Objeto raiz (ex.: window) * @param options include/exclude, nameTransform, preserveToString, maxDepth */ instrumentNamespace(root: any, options?: InstrumentOptions): void; /** * 🪝 Envolve a função setService(target.setService) para instrumentar o serviço passado * @param target Objeto que possui setService(service) * @param label Rótulo usado no nome das operações (ex.: "packTela") * @param options Opções de instrumentação (nameTransform, exclude, etc.) */ hookSetService(target: any, label?: string, options?: InstrumentOptions): void; /** * 🪝 Hook de setService para vários alvos em uma única chamada * @param targets Mapa de label -> objeto que contém setService * @param options Opções de instrumentação */ hookSetServiceBulk(targets: Record<string, any>, options?: InstrumentOptions): void; /** * 🌐 Varre um namespace e aplica hook em qualquer função setService encontrada * @param root Objeto raiz (ex.: window, module scope wrapper, etc.) * @param options Filtros e regras de nomeação */ hookSetServiceNamespace(root: any, options?: HookSetServiceOptions): void; /** * Cria wrapper que inicia/encerra timer preservando contexto e toString() */ private createWrapper; /** * 🔎 Tenta inferir o nome do arquivo (pack) a partir do stacktrace * Preferência por nomes que começam com "pack" */ private guessFileLabelFromStack; /** * 💾 Exporta dados de performance para JSON * @returns String JSON com todos os dados */ exportData(): string; /** * 🎯 Calcula thresholds dinâmicos baseados na quantidade de execuções * @param executionCount Número de execuções da operação * @returns Objeto com thresholds calculados dinamicamente */ private calculateDynamicThresholds; injectMonitorButton(): void; showEventReport(includeHttp?: boolean): void; } /** * 🏭 Factory function para criar instância do LogsPerformatico * @param serviceName Nome do serviço (para logs personalizados) * @returns Nova instância de LogsPerformatico */ export declare function createPerformanceLogger(serviceName?: string): LogsPerformatico; //# sourceMappingURL=log-performatico.d.ts.map