solver-sdk
Version:
SDK для интеграции с Code Solver Backend API
114 lines • 4.54 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.SessionManager = exports.MemorySessionTokenStore = void 0;
/**
* Класс для хранения токенов сессий в памяти
*/
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();
}
}
exports.MemorySessionTokenStore = MemorySessionTokenStore;
/**
* Класс для управления токенами сессий WebSocket
*/
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();
}
}
exports.SessionManager = SessionManager;
//# sourceMappingURL=session-manager.js.map
;