UNPKG

solver-sdk

Version:

SDK для интеграции с Code Solver Backend API

109 lines 4.31 kB
/** * Класс для хранения токенов сессий в памяти */ export class MemorySessionTokenStore { constructor() { /** Хранилище токенов */ this.tokens = new Map(); } /** * Получить токен сессии для указанного пространства имен * @param {WebSocketNamespace} namespace Пространство имен * @returns {string | null} Токен сессии или null, если не найден */ getToken(namespace) { return this.tokens.get(namespace) || null; } /** * Сохранить токен сессии для указанного пространства имен * @param {WebSocketNamespace} namespace Пространство имен * @param {string} token Токен сессии */ saveToken(namespace, token) { this.tokens.set(namespace, token); } /** * Удалить токен сессии для указанного пространства имен * @param {WebSocketNamespace} namespace Пространство имен */ removeToken(namespace) { this.tokens.delete(namespace); } /** * Проверить наличие токена для указанного пространства имен * @param {WebSocketNamespace} namespace Пространство имен * @returns {boolean} true, если токен есть */ hasToken(namespace) { return this.tokens.has(namespace); } /** * Очистить все токены */ clear() { this.tokens.clear(); } } /** * Класс для управления токенами сессий WebSocket */ export class SessionManager { /** * Создает новый менеджер сессий * @param {SessionManagerOptions} options Опции менеджера сессий */ constructor(options = {}) { /** Хранилище токенов сессий */ this.sessionTokens = new Map(); this.enableSessionPersistence = options.enableSessionPersistence !== false; this.logger = options.logger || { debug: () => { }, info: () => { }, warn: () => { }, error: () => { }, withPrefix: () => this.logger }; } /** * Сохраняет токен сессии для пространства имен * @param {string} namespace Пространство имен * @param {string} token Токен сессии */ saveSessionToken(namespace, token) { if (!this.enableSessionPersistence) { this.logger.debug(`Сохранение сессий отключено, игнорируем токен для ${namespace}`); return; } this.logger.debug(`Сохранение токена сессии для ${namespace}`); this.sessionTokens.set(namespace, token); } /** * Получает токен сессии для пространства имен * @param {string} namespace Пространство имен * @returns {string | undefined} Токен сессии или undefined, если не найден */ getSessionToken(namespace) { if (!this.enableSessionPersistence) { return undefined; } const token = this.sessionTokens.get(namespace); this.logger.debug(`Получение токена сессии для ${namespace}: ${token ? 'найден' : 'не найден'}`); return token; } /** * Удаляет токен сессии для пространства имен * @param {string} namespace Пространство имен */ clearSessionToken(namespace) { this.logger.debug(`Удаление токена сессии для ${namespace}`); this.sessionTokens.delete(namespace); } /** * Удаляет все токены сессий */ clearAllSessionTokens() { this.logger.debug('Удаление всех токенов сессий'); this.sessionTokens.clear(); } } //# sourceMappingURL=session-manager.js.map