lognal
Um visualizador de registos com o aspeto e o comportamento de um terminal, para a web e para Flutter. Desenha a saída num canvas em vez de criar um elemento por linha, pelo que um fluxo rápido de mensagens e um histórico de dezenas de milhares de entradas custam o mesmo fotograma, e a aplicação não tem de construir o seu próprio painel de consola.
Sobre este projeto
O lognal é um visualizador de registos para aplicações que precisam de mostrar a sua saída no próprio ecrã: um painel de consola numa página web, uma vista de depuração numa aplicação Flutter ou uma janela para ler um ficheiro de registo. Guarda as entradas como dados simples e desenha no canvas apenas as linhas visíveis, pelo que o custo de um fotograma depende do que está no ecrã e não do tamanho do histórico. O núcleo que está por baixo — o armazenamento, o filtro, a composição do texto e o layout — está escrito duas vezes, em TypeScript e em Dart, ficheiro a ficheiro, e por isso uma linha quebra no mesmo ponto, ocupa a mesma largura e responde da mesma forma a uma pesquisa num navegador e numa aplicação.
Reproduz o que o ambiente de execução já imprime — console.log, console.table e console.group num navegador, print e debugPrint em Flutter — sem que a saída original deixe de funcionar. Lê ficheiros de registo e deteta a sua codificação, converte os códigos de escape ANSI em cor e consegue acompanhar um ficheiro que não para de crescer. Objetos, listas, mapas e erros são capturados no momento em que são registados e abrem e fecham no próprio lugar. A barra de ferramentas acompanha as novas entradas, filtra por texto e por nível, e a pesquisa realça cada correspondência em vez de esconder o resto; uma linha de entrada opcional passa os comandos a uma função e mostra as respostas. O coreano e outros caracteres largos mantêm-se na grelha, as palavras em hangul não se partem na mudança de linha e a linha de entrada espera que o método de introdução termine a composição. Os controlos são botões verdadeiros com nomes acessíveis, e uma lista oculta replica as entradas visíveis para os leitores de ecrã.
O pacote npm não tem dependências em tempo de execução: o React é uma dependência de par opcional, necessária apenas para o componente de lognal/react, e a folha de estilos é uma única importação. O pacote Flutter depende só do SDK do Flutter e assenta na camada de widgets, sem Material nem Cupertino, pelo que cabe em qualquer aplicação sem trazer um segundo sistema de design. Inclui seis paletas, auto segue a definição clara ou escura do sistema, e um tema próprio é um bloco de propriedades personalizadas de CSS ou uma chamada a buildTheme. O pacote JavaScript é ESM com declarações TypeScript, e cada pacote tem a sua própria versão e o seu próprio registo de alterações.
Funcionalidades
Site de documentação
Tipos de TypeScript
Vários idiomas
Verificado por testes
Multiplataforma
Acessível de origem
Modo escuro
Permite tree shaking
Sem dependências
