// Токен доступа живёт в sessionStorage: пропадает при закрытии вкладки и не доступен другим вкладкам (design D-9). // Любой доступ к хранилищу обёрнут в try/catch: в приватном режиме или при заблокированных данных сайта оно может // бросать исключение — тогда токен хранится только в памяти страницы, а приложение продолжает работать. const KEY = 'armka.token'; let memoryToken: string | null = null; // Приоритет у sessionStorage (общий для вкладки); токен в памяти — только запасной вариант, когда хранилище недоступно export function getToken(): string | null { try { return sessionStorage.getItem(KEY) ?? memoryToken; } catch { return memoryToken; } } export function setToken(token: string): void { memoryToken = token; try { sessionStorage.setItem(KEY, token); } catch { // хранилище недоступно: остаётся токен в памяти } } export function clearToken(): void { memoryToken = null; try { sessionStorage.removeItem(KEY); } catch { // хранилище недоступно: токен в памяти уже сброшен } }