kevisual-query-login/dist/query-login.d.ts
2025-03-21 21:34:26 +08:00

201 lines
4.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<T = any> {
name: string;
cacheData: CacheLogin;
cache: T;
/**
* @update 获取缓存
*/
get(key: string): Promise<any>;
/**
* @update 设置缓存
*/
set(key: string, value: CacheLogin): Promise<CacheLogin>;
/**
* @update 删除缓存
*/
del(): Promise<void>;
/**
* 设置当前用户
*/
setLoginUser(user: CacheLoginUser): Promise<void>;
/**
* 获取当前用户
*/
getCurrentUser(): Promise<CacheLoginUser>;
/**
* 获取当前用户列表
*/
getCurrentUserList(): Promise<CacheLoginUser[]>;
/**
* 获取缓存的refreshToken
*/
getRefreshToken(): Promise<string>;
/**
* 获取缓存的accessToken
*/
getAccessToken(): Promise<string>;
/**
* 初始化
*/
init(): Promise<void>;
/**
* 清除当前用户
*/
clearCurrentUser(): Promise<void>;
/**
* 清除所有用户
*/
clearAll(): Promise<void>;
}
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<void>;
post<T = any>(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<void>;
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<any>;
/**
* 获取用户信息
* @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 };