UNPKG

denwa-web-shared

Version:

A shared library for Next.js App Router projects containing reusable components, hooks, schemas, and utilities.

54 lines (53 loc) • 2.5 kB
import { SessionUser } from './session-schema'; export interface SessionConfig { /** URL refresh-эндпоинта, например '/api-auth/v1/refresh' или '/api-rest/auth/v1/refresh' */ refreshUrl: string; /** Домен куки (для шаринга сессии между поддоменами, например '.project.ru') */ cookieDomain?: string; /** Не ставить Secure (для dev по http) */ isNotSecure?: boolean; sessionCookieName?: string; sessionTempCookieName?: string; accessTokenCookieName?: string; refreshTokenCookieName?: string; } export type InternalSessionConfig = Required<Omit<SessionConfig, 'cookieDomain' | 'isNotSecure'>> & { cookieDomain?: string; isNotSecure?: boolean; }; /** * Конфигурация сессии. Вызывается один раз при инициализации приложения: * configureSession({ refreshUrl: '/api-rest/auth/v1/refresh' }) */ export declare const configureSession: (config: Partial<SessionConfig>) => void; export interface CookieOptions { maxAgeSeconds?: number; domain?: string; isNotSecure?: boolean; } export declare const getCookieValue: (name: string) => string | null; export declare const setCookieValue: (name: string, value: string, options?: CookieOptions) => void; export declare const deleteCookieValue: (name: string, options?: CookieOptions) => void; /** * Удаляет все cookies сессии и токенов и оповещает слушателей о логауте. */ export declare const clearSessionCookies: (options?: CookieOptions) => void; /** * Полная сессия из куки с указанием имени куки (session или session-temp). */ export declare const getFullSessionFromCookie: () => { cookieName: string; data: SessionUser; } | null; /** * Пользователь сессии из куки (без токенов-фолбэков). */ export declare const getSessionFromCookie: () => SessionUser | null; /** * Обновление пары токенов. Single-flight: параллельные вызовы разделяют один запрос. */ export declare const refreshSessionTokens: () => Promise<string | null>; /** * Возвращает валидный access-токен: актуальный — сразу, протухший — через refresh. */ export declare const getValidAccessToken: () => Promise<string | null>;