@javiertinc/essentials
Version:
Una librería con variedad de funciones útiles que considero esenciales en la mayoría de los desarrollos web.
72 lines (71 loc) • 2.3 kB
JavaScript
import _data from './data.js';
import _text from './text.js';
let defaultLog = {
project: { name: 'jt@essentials::log' },
quantity: 100,
logs: []
};
let storageName = _data.usid(defaultLog.project.name);
let storageKey = _data.usid(defaultLog.project.name + '::encrypted');
let sss = (logElement) => {
sessionStorage.setItem(storageName, _data.stringify(logElement, storageKey));
};
const Log = {
/**
* Establece la configuración inicial para este proyecto.
* @param config Objeto con las configuraciones del log.
*/
setup(config) {
let logElement = this.get();
logElement.project = config.project;
logElement.quantity = config.quantity;
sss(logElement);
},
/**
* Obtiene los registros almacenados en la sesión.
* @returns Los registros almacenados.
**/
get() {
let logElement = _data.parse(sessionStorage.getItem(storageName) || '', storageKey) || defaultLog;
(logElement.logs.length > logElement.quantity) && logElement.logs.shift();
return logElement;
},
/**
* Agrega un nuevo registro a los registros almacenados en la sesión.
* @param log - El registro a agregar.
**/
push(log) {
let logElement = this.get();
logElement.logs.push(log);
sss(logElement);
},
/**
* Limpia los logs, sin eliminar la configuración del setup.
**/
clear() {
let logElement = this.get();
logElement.logs = [];
sss(logElement);
},
/**
* Elimina por completo los logs.
*/
remove() {
sessionStorage.removeItem(storageName);
},
/**
* Exporta los registros almacenados en la sesión a un archivo JSON.
* El archivo se descargará automáticamente con un nombre basado en el nombre del proyecto y la fecha actual.
**/
export() {
let logElement = this.get();
let blob = new Blob([JSON.stringify(logElement)], { type: 'application/json' });
let url = URL.createObjectURL(blob);
let a = document.createElement('a');
a.href = url;
a.download = _text.kebabCase(logElement.project.name) + '-' + Date.now() + '.jtlog.json';
a.click();
URL.revokeObjectURL(url);
}
};
export default Log;