Skip to content

ReplicatedStudios/sr-console

Repository files navigation

Rapida, simple y colorida. Una herramienta para mejorar tus console.log()


sr-console npm version GitHub last commit GitHub issues

INICIALIZACION

Comando de instalacion (Node.js & NPM)

npm i sr-console

Activa la libreria. Esto va al inicio de tu archivo index.js o index.ts

import "sr-console"; // MODULE (EJ5 / ESNEXT)
require('sr-console'); // COMMONJS

// TODO SE GUARDA EN LAS VARIABLES GLOBALES
console.send("data");
LOG.send("data");

CONFIGURACION (.env)

Importante: Si estas usando un archivo .env deberas situarlo en la raiz del proyecto
Consulta la documentacion de la configuracion .env en el repositorio

FUNCIONES BASICAS

La libreria cuenta con casi todas las funciones que existen en la clase Console original. Aqui un ejemplo de todas las funciones con los colores que muestran y los valores que returnan

// COMMONJS
require("sr-console");
// MODULE (EJ5 / EJNEXT)
import "sr-console";

// NOTA: ES VALIDO SI USAS console.any() SIEMPRE Y CUANDO ESTE ACTIVADO EN EL .env EL SOBREESCRIBIR console
LOG.time();
LOG.warn("Iniciando demostracion de SR-CONSOLE");
LOG.warn("La implementacion puede estar a medias");
LOG.log("Cargando servidor ficticio");
LOG.log("Revisando informacion");
LOG.success("Toda la informacion fue validada");
LOG.group("Cargando registros")
LOG.debug("Se han detectado", 393, "registros");
LOG.debug("Importando registros");
LOG.debug("Indexandolos al nucleo del servidor");
LOG.group("Revision de registros")
LOG.err("Se detectaron 43 registros no validos o dañados");
LOG.info("Se intento reparar 43 registros");
LOG.warn("Existen", 4, "registros que se encuentran en un estado critico e irreparable")
LOG.unGroup("Se han cargado con exito", 350, "registros");

LOG.warn("Iniciando servidor");
LOG.log("Iniciando sesion");
LOG.send("Enviando Token NIGGA-XXXXXX-XXXXX");
LOG.success("Se ha iniciado session exitosamente")

LOG.info("Estan pendientes los",43, "registros sin cargar");
LOG.info("el servidor se encuentra usando 60gb de ram")
LOG.info("no se pudo procesar el modelo del procesador, se utilizo el modo seguro");
setTimeout(() => {
    LOG.timeEnd();
    LOG.fatalBack(new Error("FATAL ERROR OCURRED ON SYSTEM REGISTRY"));
    LOG.log("recuperado");
    LOG.warn("oh no");
    LOG.err("no me siento bien");
    throw new Error("Finalizado");
}, 2000);

RESULTADO



CHANGELOG

  • RELEASE: 1.1.7
    • [FIX] SrPrint.send("S") se comportaba como un console.send en lugar de console.success
    • [FIX] setSocketIO() detectaba como invalido un socket valido
    • [FIX] DMAX ya muestra los milisegundos
    • [FIX] Espaciados se aplicaban donde no con cierta configuracion
    • [FIX] Arreglo en la documentacion para SocketIO
    • [ENH] El archivo log con colores ahora es por sesion (raw sigue siendo permanente)
    • [ENH] Formato especial a [(Function: name)]
    • [FIX-ENH-NEW] Nueva variable SRCONSOLE_EXPERIMENTALS agregada al .env. Esto resuelve el problema en el que si ocurre un error no capturado el codigo seguia ejecutandose, no estaba intencionado, ya que era parte de una funcion nueva pero que no dio ese comportamiento en las pruebas internas con otros proyectos. se utilizara en futuras funciones que se vayan documentando


VERSION 1.2.0 - Nuevas instancias

De una forma breve, la razon por la que diseñe SR-CONSOLE para hacer mas agradable los logs de mis bots de discord, sin embargo (aparte de que ya no hago bots de discord) algo que frecuentaba mucho yo al codear (y que varios modulos de npm frecuentan) es meter a los Promises.catch() el console.err a secas o tambien acaparan las variables console a lo brusco

Por ese motivo SR-CONSOLE no se podia instanciar 2 veces, todo recaia en sus metodos estaticos de su clase principal y no en otras variables en this, al meter la funcion a secas pierde la nocion de que instancia viene, y al intentar utilizar elementos de esa instancia solo obtiene que this es undefined

ERRORES POR VENIR
La actualizacion 1.2.0 permitira reinstancias de SR-CONSOLE y posiblemente MUCHOS errores se vendran si utilizas console.func a secas para capturar los mensajes de error. DEJA DE HACER ESO, en su lugar usa err => console.err(err);

Si alguna libreria que utilizas recae en esta mala praxis (generalmente para crear PRINTERS), abrir un issue en el REPOSITORIO para solucionarlo con el otro autor.

PARA CREADORES DE MODULOS
puedes utilizar new console.SrPrint("MY-MODULE"); como sustituto eficaz al printer que utilizas, su documentacion esta indicada en PRINT.send para enviar errores o advertencias

PLUGINS

[PLUGIN] SRPRINT

const PRINT = new LOG.SrPrint("SYSTEM");
PRINT.send("L", "My cool output"); // Salida: [00:00:00][SYSTEM]: My cool output
PRINT.subPrinter("MY-SUBPRINT"); // Crea un SRPRINT con base al primero ->[00:00:00][SYSTEM/MY-SUBPRINT]: My cool output

WORK IN PROGRESS

  • Permitir Objetos Circulares
  • Colores de 8-bits (256)
  • Combinacion de colores basicos y de 8-bits para consolas como la CMD.exe
  • Decoradores para typescript
  • Dar formato automatico a Objects y Arrays
  • Proteger todas las variables del .env de ser mostradas en consola
  • Enviar comandos usando childProcess por medio de websockets
  • Crear copia de console.table() mas userFriendly


INTEGRACIONES

SrConsole puede integrarse o ser integrado con otras librerias utiles para expandir la utilidad de esta herramienta.

SrConsole x SocketIO

Puedes implementar tu servidor SOCKET.IO

const SocketIO = require('socket.io');
const io = SockeIO();
LOG.setSocketIO(io);

/* Detectar la salida de la consola */
socket.on('srconsole:in', data => {}); // INPUTS (no util por ahora)
socket.on('srconsole:out', data => {}); // OUTPUTS
socket.on('srconsole:err', data => {}); // OUTPUTS DE ERROR

SrConsole x DotEnv

Al usar sr-console ya no necesitas importar la libreria dotenv, ya lo hace por ti.
sin embargo cuenta con algunas restricciones.

  • No puedes cambiar la configuracion de dotenv
  • No estan las utilidades para convertir elementos del .env a un Object()