import { Query } from '@kevisual/query'; import { DataOpts, Result } from '@kevisual/query/query'; type CacheLoginUser = { user?: any; id?: string; accessToken?: string; refreshToken?: string; }; type CacheLogin = { loginUsers: CacheLoginUser[]; } & CacheLoginUser; interface CacheStore { name: string; cacheData: CacheLogin; cache: T; /** * @update 获取缓存 */ get(key: string): Promise; /** * @update 设置缓存 */ set(key: string, value: CacheLogin): Promise; /** * @update 删除缓存 */ del(): Promise; /** * 设置当前用户 */ setLoginUser(user: CacheLoginUser): Promise; /** * 获取当前用户 */ getCurrentUser(): Promise; /** * 获取当前用户列表 */ getCurrentUserList(): Promise; /** * 获取缓存的refreshToken */ getRefreshToken(): Promise; /** * 获取缓存的accessToken */ getAccessToken(): Promise; /** * 初始化 */ init(): Promise; /** * 清除当前用户 */ clearCurrentUser(): Promise; /** * 清除所有用户 */ clearAll(): Promise; } type QueryLoginOpts = { query?: Query; isBrowser?: boolean; onLoad?: () => void; storage?: Storage; }; type QueryLoginData = { username?: string; password: string; email?: string; }; type QueryLoginResult = { accessToken: string; refreshToken: string; }; declare class QueryLogin { query: Query; cache: CacheStore; isBrowser: boolean; load?: boolean; storage: Storage; onLoad?: () => void; constructor(opts?: QueryLoginOpts); setQuery(query: Query): void; init(): Promise; post(data: any, opts?: DataOpts): Promise<{ code: number; data?: T; message?: string; success: boolean; noMsg?: boolean; showError: (fn?: () => void) => void; }>; /** * 登录, * @param data * @returns */ login(data: QueryLoginData): Promise<{ code: number; data?: QueryLoginResult; message?: string; success: boolean; noMsg?: boolean; showError: (fn?: () => void) => void; }>; /** * 登陆成功,需要获取用户信息进行缓存 * @param param0 */ beforeSetLoginUser({ accessToken, refreshToken, check401 }: { accessToken?: string; refreshToken?: string; check401?: boolean; }): Promise; queryRefreshToken(refreshToken?: string): Promise<{ code: number; data?: any; message?: string; success: boolean; noMsg?: boolean; showError: (fn?: () => void) => void; } | { code: number; message: string; data: any; }>; /** * 检查401错误,并刷新token, 如果refreshToken存在,则刷新token, 否则返回401 * @param response * @param ctx * @param refetch * @returns */ afterCheck401ToRefreshToken(response: Result, ctx?: { req?: any; res?: any; fetch?: any; }, refetch?: boolean): Promise; /** * 获取用户信息 * @param token * @returns */ getMe(token?: string, check401?: boolean): Promise<{ code: number; data?: any; message?: string; success: boolean; noMsg?: boolean; showError: (fn?: () => void) => void; }>; /** * 请求更新,切换用户, 使用switchUser * @param username * @returns */ private postSwitchUser; /** * 切换用户 * @param username * @returns */ switchUser(username: string): Promise<{ code: number; data?: any; message?: string; success: boolean; noMsg?: boolean; showError: (fn?: () => void) => void; } | { code: number; data: { accessToken: string; refreshToken: string; }; success: boolean; message: string; }>; logout(): Promise<{ code: number; data?: Result; message?: string; success: boolean; noMsg?: boolean; showError: (fn?: () => void) => void; }>; hasUser(username: string): Promise<{ code: number; data?: Result; message?: string; success: boolean; noMsg?: boolean; showError: (fn?: () => void) => void; }>; } export { QueryLogin, type QueryLoginData, type QueryLoginResult };