lognal
Un visor de registros que se ve y se comporta como una terminal, para la web y para Flutter. Dibuja la salida en un canvas en lugar de crear un elemento por línea, así que un flujo rápido de mensajes y un historial de decenas de miles de entradas cuestan el mismo fotograma, y la aplicación no tiene que construir su propio panel de consola.
Sobre este proyecto
lognal es un visor de registros para aplicaciones que necesitan mostrar su salida en su propia pantalla: un panel de consola en una página web, una vista de depuración en una aplicación de Flutter o una ventana para leer un archivo de registro. Guarda las entradas como datos simples y dibuja en el canvas solo las filas visibles, de modo que lo que cuesta un fotograma depende de lo que hay en pantalla y no de la longitud del historial. El núcleo que hay debajo —el almacén, el filtro, la composición del texto y la disposición— está escrito dos veces, en TypeScript y en Dart, archivo por archivo, así que una línea se parte en el mismo punto, ocupa el mismo ancho y responde igual a una búsqueda en un navegador y en una aplicación.
Refleja lo que el entorno de ejecución ya imprime —console.log, console.table y console.group en un navegador, print y debugPrint en Flutter— sin que la salida original deje de funcionar. Lee archivos de registro detectando su codificación, convierte los códigos de escape ANSI en color y puede seguir un archivo que no deja de crecer. Los objetos, listas, mapas y errores se capturan en el momento en que se registran y se abren y cierran en su sitio. La barra de herramientas sigue las entradas nuevas, filtra por texto y por nivel, y la búsqueda resalta cada coincidencia en lugar de ocultar el resto; una línea de entrada opcional pasa los comandos a una función y muestra las respuestas. El coreano y otros caracteres anchos se mantienen en la cuadrícula, las palabras en hangul no se parten al saltar de línea y la línea de entrada espera a que el método de entrada termine de componer. Los controles son botones de verdad con nombres accesibles, y una lista oculta replica las entradas visibles para los lectores de pantalla.
El paquete de npm no tiene dependencias en tiempo de ejecución: React es una dependencia de pares opcional, necesaria solo para el componente de lognal/react, y la hoja de estilos es una sola importación. El paquete de Flutter depende únicamente del SDK de Flutter y se apoya en la capa de widgets, sin Material ni Cupertino, así que encaja en cualquier aplicación sin traer consigo un segundo sistema de diseño. Trae seis paletas, auto sigue el ajuste claro u oscuro del sistema y un tema propio es un bloque de propiedades personalizadas de CSS o una llamada a buildTheme. El paquete de JavaScript es ESM con declaraciones de TypeScript, y cada paquete tiene su propia versión y su propio registro de cambios.
Características
Sitio de documentación
Tipos de TypeScript
Varios idiomas
Verificado con pruebas
Multiplataforma
Accesible de fábrica
Modo oscuro
Admite tree shaking
Sin dependencias
