Класс для работы с localStorage

class LocalStorageManager {
    /**
     * Добавление данных по ключу (автоматическая конвертация объектов в JSON).
     * @param key
     * @param value
     * @returns {boolean}
     */
    add(key, value) {
        try {
            const data = typeof value === 'object'
                ? JSON.stringify(value)
                : value;
            localStorage.setItem(key, data);
            return true;
        } catch (e) {
            console.error('Ошибка сохранения:', e);
            return false;
        }
    }

    /**
     * Удаление данных по ключу.
     * @param key
     * @returns {boolean}
     */
    remove(key) {
        try {
            localStorage.removeItem(key);
            return true;
        } catch (e) {
            console.error('Ошибка удаления:', e);
            return false;
        }
    }

    /**
     * Получение данных по ключу (автоматическое преобразование JSON в объект).
     * @param key
     * @returns {string|any|null}
     */
    get(key) {
        try {
            let data = localStorage.getItem(key);
            if (data === null) {
                return null;
            }

            // Пытаемся распарсить JSON
            try {
                return JSON.parse(data);
            } catch {
                return data; // Возвращаем как строку если не JSON
            }
        } catch (e) {
            console.error('Ошибка чтения:', e);
            return null;
        }
    }

    /**
     * Печать всех ключей и значений из localStorage.
     */
    print() {
        console.log('Текущее содержимое localStorage:');
        for (let i = 0; i < localStorage.length; i++) {
            const key = localStorage.key(i);
            const value = this.get(key);
            console.log(`► ${key}:`, value);
        }
    }

    test() {
        console.log('LocalStorageManager is OK!');
    }
}