itd-api / MultiTokenStorage
Interface: MultiTokenStorage
Defined in: core/multi-storage.ts:31
Хранилище сессий нескольких аккаунтов.
Отличается от TokenStorage тем, что каждый метод получает имя аккаунта: так адаптер сам решает, как строить ключ, и Redis, БД или связка ключей получают то, что им нужно. Имя приходит ровно тем, под которым аккаунт заведён в ItdAccounts: библиотека его не нормализует и не экранирует — префиксы, экранирование и ограничения на длину ключа остаются за адаптером.
Все методы могут быть как синхронными, так и асинхронными.
Example
Своё хранилище поверх Redis
const storage = createMultiTokenStorage({
get: async (account) => JSON.parse((await redis.get(`itd:session:${account}`)) ?? 'null'),
set: async (account, session) => {
await redis.set(`itd:session:${account}`, JSON.stringify(session));
await redis.sadd('itd:accounts', account);
},
clear: async (account) => {
await redis.del(`itd:session:${account}`);
await redis.srem('itd:accounts', account);
},
accounts: () => redis.smembers('itd:accounts'),
});Methods
accounts()
accounts(): readonly string[] | Promise<readonly string[]>;Defined in: core/multi-storage.ts:49
Имена сохранённых записей — по ним ItdAccounts.restore() находит кандидатов после перезапуска процесса.
Список ведёт сам адаптер: у файлового и памятного он виден из самой записи, а хранилищу «ключ — значение» придётся держать множество имён рядом с сессиями. Перед восстановлением контейнер читает каждую запись и пропускает оставшийся после выхода одинокий deviceId: без токена или refresh-сессии авторизоваться невозможно. Пустой список означает лишь то, что кандидатов нет, — сами записи при этом могут быть доступны по имени.
Returns
readonly string[] | Promise<readonly string[]>
clear()
clear(account): void | Promise<void>;Defined in: core/multi-storage.ts:37
Удалить сессию аккаунта. Вызывается при выходе и при неудачном обновлении токена.
Parameters
account
string
Returns
void | Promise<void>
get()
get(account):
| ItdSession
| Promise<ItdSession | null>
| null;Defined in: core/multi-storage.ts:33
Прочитать сессию аккаунта. null, если её нет.
Parameters
account
string
Returns
| ItdSession | Promise<ItdSession | null> | null
set()
set(account, session): void | Promise<void>;Defined in: core/multi-storage.ts:35
Сохранить сессию аккаунта целиком.
Parameters
account
string
session
Returns
void | Promise<void>