@pisell/pisellos
Version:
一个可扩展的前端模块化SDK框架,支持插件系统
88 lines (87 loc) • 2.77 kB
TypeScript
/**
* 注册登录解决方案配置
* 根据不同渠道配置不同的接口地址和参数
*/
/**
* API 配置接口
*/
export interface ApiConfig {
url: string;
method: 'GET' | 'POST' | 'PUT' | 'DELETE';
transformParams?: (params: any) => any;
transformResponse?: (response: any) => any;
options?: Record<string, any>;
}
/**
* 渠道配置接口
*/
export interface ChannelConfig {
sendEmailVerificationCode: ApiConfig;
sendEmailLoginCode: ApiConfig;
sendSmsRegisterCode: ApiConfig;
sendEmailRegisterLink: ApiConfig;
verifyEmailRegistrationLink: ApiConfig;
emailPasswordLogin: ApiConfig;
emailCodeRegister: ApiConfig;
phoneCodeRegister: ApiConfig;
resendEmailRegisterLink: ApiConfig;
checkEmailLinkCode: ApiConfig;
sendSmsLoginCode: ApiConfig;
phoneCodeLogin: ApiConfig;
guestLogin: ApiConfig;
checkEmailExists: ApiConfig;
checkEmailCode: ApiConfig;
checkMobileCode: ApiConfig;
phonePasswordLogin: ApiConfig;
sendPasswordResetEmail: ApiConfig;
sendPasswordResetSms: ApiConfig;
sendResetPasswordLink: ApiConfig;
checkResetPasswordCode: ApiConfig;
resetPasswordByCode: ApiConfig;
resetPasswordByEmail: ApiConfig;
resetPasswordByPhone: ApiConfig;
verifyCode: ApiConfig;
register: ApiConfig;
login: ApiConfig;
oauthLogin: ApiConfig;
validateToken: ApiConfig;
logout: ApiConfig;
getCountries: ApiConfig;
facebookLogin: ApiConfig;
appleLogin: ApiConfig;
}
/**
* 渠道配置映射
*/
export declare const channelConfigMap: Record<string, ChannelConfig>;
/**
* 获取渠道配置
*/
export declare function getChannelConfig(channel: string): ChannelConfig;
/**
* API 调用器类
* 负责根据配置执行 API 调用
*/
export declare class ApiCaller {
private request;
private config;
constructor(request: {
get: <T = any>(url: string, data?: any, options?: any) => Promise<T>;
post: <T = any>(url: string, data?: any, options?: any) => Promise<T>;
put: <T = any>(url: string, data?: any, options?: any) => Promise<T>;
delete: <T = any>(url: string, options?: any) => Promise<T>;
}, config: ChannelConfig);
/**
* 执行 API 调用
*/
call<T = any>(apiName: keyof ChannelConfig, params?: any, additionalOptions?: any): Promise<T>;
}
/**
* 创建 API 调用器
*/
export declare function createApiCaller(request: {
get: <T = any>(url: string, data?: any, options?: any) => Promise<T>;
post: <T = any>(url: string, data?: any, options?: any) => Promise<T>;
put: <T = any>(url: string, data?: any, options?: any) => Promise<T>;
delete: <T = any>(url: string, options?: any) => Promise<T>;
}, channel: string): ApiCaller;