JavaScript
Обёртка над localStorage с TTL
Хранилище со сроком жизни записей и защитой от переполнения квоты и битого JSON.
Код
const storage = {
set(key, value, ttlSeconds) {
const payload = {
value,
expires: ttlSeconds ? Date.now() + ttlSeconds * 1000 : null,
};
try {
localStorage.setItem(key, JSON.stringify(payload));
return true;
} catch (error) {
console.warn('Хранилище недоступно или переполнено:', error.name);
return false;
}
},
get(key, fallback = null) {
try {
const raw = localStorage.getItem(key);
if (!raw) return fallback;
const { value, expires } = JSON.parse(raw);
if (expires && Date.now() > expires) {
localStorage.removeItem(key);
return fallback;
}
return value;
} catch {
return fallback;
}
},
remove: (key) => localStorage.removeItem(key),
};
storage.set('theme', 'dark');
storage.set('token', 'abc123', 3600); // истечёт через час
console.log(storage.get('theme', 'light'));