Saltar al contenido principal

Vali-Storages

Librería TypeScript para manejo de almacenamiento del navegador con encriptación AES-GCM, expiración TTL, namespacing, sincronización cross-tab y una API completamente tipada.

npm version license


¿Por qué Vali-Storages?

El localStorage y sessionStorage nativos no tienen tipos, no están encriptados y no tienen expiración integrada. Vali-Storages los envuelve con una API async limpia que agrega:

  • Seguridad — encriptación AES-GCM 128/192/256 bits via Web Crypto API
  • Confiabilidad — expiración TTL automática con soporte de ventana deslizante
  • Aislamiento — namespacing basado en prefijos para prevenir colisiones de claves
  • Reactividad — sincronización cross-tab con una API de callbacks
  • Seguridad de tipos — factory createTypedStorage<Schema>() completamente tipada

Características clave

CaracterísticaDescripción
🔐 Encriptación AES-GCMAES-128 / 192 / 256 via Web Crypto API
Expiración TTLSegundos, minutos, horas o días
🔄 Sliding expirationEl TTL se reinicia en cada lectura exitosa
🏷 NamespacingAísla claves entre instancias con prefix
📡 Sync cross-tabReacciona a cambios desde otras pestañas
🧩 Operaciones batchsetItems / getItems / getAll
🛡 Manejo de erroresthrow, silent o manejador personalizado
🔒 API tipadacreateTypedStorage<Schema>()
🖥 Guard SSRError claro cuando se usa fuera del navegador

Ejemplo rápido

import { ValiStorages, AES, TimeUnit } from 'vali-storages';

const storage = new ValiStorages({
isEncrypt: true,
predefinedKey: 'mi-clave-secreta',
keySize: AES.AES_256,
timeExpiration: 2,
timeUnit: TimeUnit.HOURS,
prefix: 'miapp',
});

await storage.setItem('usuario', { nombre: 'Felipe', rol: 'admin' });
const usuario = await storage.getItem<{ nombre: string; rol: string }>('usuario');

Próximos pasos