UNPKG

@javiertinc/essentials

Version:

Una librería con variedad de funciones útiles que considero esenciales en la mayoría de los desarrollos web.

75 lines (74 loc) 3.71 kB
import _cnsl from "./cnsl.js"; import _data from "./data.js"; export default class obsv { constructor(config) { this.config = config; this.cnsl = new _cnsl(this.config); this.storeName = this.config.data.encrypt ? _data.usid('obsv' + this.config.project.name) : 'obsv' + this.config.project.name; } /** * Obtiene todos los observadores registrados. * @returns Un array de objetos donde cada objeto contiene el nombre del recurso y un array de observadores. **/ getAll() { this.config.debug.obsv && this.cnsl.log('jtEssentials.obsv.getAll() • Obteniendo observadores'); let store = localStorage.getItem(this.storeName); if (!store) { this.config.debug.obsv && this.cnsl.warn('jtEssentials.obsv.getAll() • No se encontraron observadores'); return []; } return _data.parse(store, this.config.data.encrypt, this.config.data.key) || []; } /** * Obtiene los observadores de un recurso específico. * @param resourceName - El nombre del recurso del cual se desean obtener los observadores. * @returns Un array de strings con los nombres de los observadores registrados para el recurso. **/ get(resourceName) { this.config.debug.obsv && this.cnsl.log('jtEssentials.obsv.get() • Obteniendo observador', resourceName); let store = this.getAll(); let resource = store.find((item) => Object.keys(item)[0] === resourceName); if (!resource) { this.config.debug.obsv && this.cnsl.warn('jtEssentials.obsv.get() • No se encontró el observador', resourceName); return []; } return resource[resourceName]; } /** * Agrega un nuevo observador a un recurso específico. * @param resourceName - El nombre del recurso al cual se desea agregar el observador. * @param from - Desde dónde se está agregando el observador (puede ser un nombre de componente, función, etc.). **/ add(resourceName, from) { this.config.debug.obsv && this.cnsl.log('jtEssentials.obsv.add() • Agregando observador', resourceName, from); let store = this.getAll(); let resource = store.find((item) => Object.keys(item)[0] === resourceName); if (resource) { resource[resourceName].push(from); } else { store.push({ [resourceName]: [from] }); } localStorage.setItem(this.storeName, _data.stringify(store, this.config.data.encrypt, this.config.data.key)); } /** * Elimina un observador de un recurso específico. * @param resourceName - El nombre del recurso del cual se desea eliminar el observador. * @param from - Desde dónde se está eliminando el observador (puede ser un nombre de componente, función, etc.). **/ remove(resourceName, from) { this.config.debug.obsv && this.cnsl.log('jtEssentials.obsv.remove() • Eliminando observador', resourceName, from); let store = this.getAll(); let resource = store.find((item) => Object.keys(item)[0] === resourceName); if (resource) { resource[resourceName] = resource[resourceName].filter((item) => item !== from); if (resource[resourceName].length === 0) { store = store.filter((item) => Object.keys(item)[0] !== resourceName); } localStorage.setItem(this.storeName, _data.stringify(store, this.config.data.encrypt, this.config.data.key)); } else { this.config.debug.obsv && this.cnsl.warn('jtEssentials.obsv.remove() • No se encontró el observador', resourceName, from); } } }