@cloudbase/js-sdk
Version:
cloudbase javascript sdk
270 lines (269 loc) • 12.9 kB
TypeScript
import type { ICloudbase, ICloudbaseConfig } from '@cloudbase/types';
import type { ICloudbaseCache } from '@cloudbase/types/cache';
import type { ICloudbaseRequest } from '@cloudbase/types/request';
import type { ICloudbaseAuthConfig, IUser, ILoginState } from '@cloudbase/types/auth';
import type { AuthOptions, Credentials } from '@cloudbase/oauth';
import { CloudbaseOAuth, AuthError, authModels } from '@cloudbase/oauth';
import { AuthV1Compat, WeixinAuthProvider, CustomAuthProvider, AnonymousAuthProvider } from './v1-compat';
import { AuthOtpResponse, AuthResponse, CommonRes, DeleteMeReq, GetClaimsRes, GetUserIdentitiesRes, GetUserRes, LinkIdentityReq, LinkIdentityRes, OAuthResponse, OnAuthStateChangeCallback, ReauthenticateRes, ResendParams, ResendRes, ResetPasswordForEmailRes, ResetPasswordForOldReq, SetSessionReq, SignInAnonymouslyCredentials, SignInRes, SignInWithIdTokenReq, SignInWithOAuthCredentials, SignInWithPasswordCredentials, SignInWithPasswordlessCredentials, SignUpRes, UnlinkIdentityReq, UpdateUserWithVerificationRes, UserAttributes, UserResponse, VerifyOAuthReq, VerifyOAuthRes, VerifyOtpParams, GetAccessTokenRes } from './type';
export type { AuthResponse, AuthTokenResponsePassword, AuthOtpResponse, UserResponse, OAuthResponse, SignInRes, GetUserRes, CommonRes, SignInWithOtpRes, SignInOAuthRes, GetClaimsRes, ResetPasswordForEmailRes, GetUserIdentitiesRes, LinkIdentityRes, ReauthenticateRes, ResendRes, UpdateUserWithVerificationRes, OnAuthStateChangeCallback, SignInWithPasswordCredentials, SignInWithPasswordlessCredentials, SignUpWithPasswordCredentials, SignInWithOAuthCredentials, SignInAnonymouslyCredentials, VerifyOtpParams, ResendParams, UserAttributes, SignInWithPasswordReq, SignInWithIdTokenReq, SignInWithOAuthReq, VerifyOAuthReq, VerifyOtpReq, LinkIdentityReq, UnlinkIdentityReq, UpdateUserReq, SignInWithOtpReq, ResetPasswordForOldReq, ResendReq, SetSessionReq, DeleteMeReq, SignUpRes, GetAccessTokenRes, AuthResult, } from './type';
interface UserInfo {
uid?: string;
gender?: string;
picture?: string;
email?: string;
email_verified?: boolean;
phone_number?: string;
username?: string;
name?: string;
birthdate?: string;
zoneinfo?: string;
locale?: string;
sub?: string;
created_from?: string;
}
interface IUserOptions {
cache: ICloudbaseCache;
oauthInstance: CloudbaseOAuth;
}
export declare class User implements IUser {
uid?: string;
gender?: string;
picture?: string;
email?: string;
emailVerified?: boolean;
phoneNumber?: string;
username?: string;
name?: string;
providers?: {
id?: string;
providerUserId?: string;
name?: string;
}[];
birthdate?: string;
zoneinfo?: string;
locale?: string;
sub?: string;
createdFrom?: string;
open_id?: string;
private cache;
private oauthInstance;
constructor(options: IUserOptions);
checkLocalInfo(): Promise<void>;
checkLocalInfoAsync(): Promise<void>;
update(userInfo: authModels.UserProfile): Promise<void>;
updateUserBasicInfo(params: authModels.ModifyUserBasicInfoRequest): Promise<void>;
updatePassword(newPassword: string, oldPassword: string): Promise<void>;
updateUsername(username: string): Promise<void>;
refresh(params?: {
version?: string;
query?: any;
}): Promise<authModels.UserInfo>;
getLocalUserInfo(key?: string): string | boolean | Record<string, any>;
setLocalUserInfo(userInfo: any): void;
private getLocalUserInfoAsync;
private setUserInfo;
}
interface ILoginStateOptions extends IUserOptions {
envId: string;
}
export declare class LoginState implements ILoginState {
user: User;
oauthLoginState: any;
private oauthInstance;
private cache;
constructor(options: ILoginStateOptions);
checkLocalState(): void;
checkLocalStateAsync(): Promise<void>;
}
interface IAuthConfig extends ICloudbaseAuthConfig {
cache: ICloudbaseCache;
request?: ICloudbaseRequest;
runtime?: string;
}
declare class Auth extends AuthV1Compat {
readonly config: IAuthConfig;
oauthInstance: CloudbaseOAuth;
readonly cache: ICloudbaseCache;
private listeners;
private hasListenerSetUp;
constructor(config: IAuthConfig);
signInAnonymously(params: SignInAnonymouslyCredentials): Promise<AuthResponse>;
signUp(params: authModels.SignUpRequest & {
phone?: string;
}): Promise<SignUpRes>;
signOut(params?: authModels.SignoutRequest): Promise<authModels.SignoutResponse & {
data: Object;
error: AuthError;
}>;
onAuthStateChange(callback: OnAuthStateChangeCallback): {
data: {
subscription: {
id: string;
callback: OnAuthStateChangeCallback;
unsubscribe: () => void;
};
};
};
signInWithPassword(params: SignInWithPasswordCredentials): Promise<AuthResponse>;
signInWithIdToken(params: SignInWithIdTokenReq): Promise<SignInRes>;
signInWithOtp(params: SignInWithPasswordlessCredentials): Promise<AuthOtpResponse>;
verifyOAuth(params?: VerifyOAuthReq): Promise<VerifyOAuthRes>;
signInWithOAuth(params: SignInWithOAuthCredentials): Promise<OAuthResponse>;
getClaims(): Promise<GetClaimsRes>;
resetPasswordForEmail(emailOrPhone: string, options?: {
redirectTo?: string;
}): Promise<ResetPasswordForEmailRes>;
resetPasswordForOld(params: ResetPasswordForOldReq): Promise<SignInRes>;
verifyOtp(params: VerifyOtpParams): Promise<AuthResponse>;
getSession(): Promise<SignInRes>;
refreshSession(refresh_token?: string): Promise<SignInRes>;
getUser(isRefresh?: boolean): Promise<GetUserRes>;
refreshUser(): Promise<CommonRes>;
updateUser(params: UserAttributes): Promise<UserResponse | UpdateUserWithVerificationRes>;
getUserIdentities(): Promise<GetUserIdentitiesRes>;
linkIdentity(params: LinkIdentityReq): Promise<LinkIdentityRes>;
unlinkIdentity(params: UnlinkIdentityReq): Promise<CommonRes>;
reauthenticate(): Promise<ReauthenticateRes>;
resend(params: ResendParams): Promise<ResendRes>;
setSession(params: SetSessionReq): Promise<SignInRes>;
exchangeCodeForSession(): Promise<void>;
deleteUser(params: DeleteMeReq): Promise<CommonRes>;
toDefaultLoginPage(params?: authModels.ToDefaultLoginPage): Promise<CommonRes>;
signInWithCustomTicket(getTickFn?: authModels.GetCustomSignTicketFn): Promise<SignInRes>;
signInWithOpenId({ useWxCloud }?: {
useWxCloud?: boolean;
}): Promise<SignInRes>;
signInWithPhoneAuth({ phoneCode, useWxCloud }: {
phoneCode?: string;
useWxCloud?: boolean;
}): Promise<SignInRes>;
bindPhoneNumber(params: authModels.BindPhoneRequest): Promise<void>;
unbindProvider(params: authModels.UnbindProviderRequest): Promise<void>;
bindEmail(params: authModels.BindEmailRequest): Promise<void>;
verify(params: authModels.VerifyRequest): Promise<authModels.VerifyResponse>;
getVerification(params: authModels.GetVerificationRequest, options?: {
withCaptcha: boolean;
}): Promise<authModels.GetVerificationResponse>;
get currentUser(): User;
getCurrentUser(isRefresh?: boolean): Promise<(authModels.UserInfo & Partial<User>) | null>;
signInAnonymouslyInWx({ useWxCloud, }?: {
useWxCloud?: boolean;
}): Promise<LoginState>;
bindOpenId(): Promise<void>;
signInWithUnionId(): Promise<LoginState>;
signInWithSms({ verificationInfo, verificationCode, phoneNum, bindInfo, }: {
verificationInfo?: {
verification_id: string;
is_user: boolean;
};
verificationCode?: string;
phoneNum?: string;
bindInfo?: any;
}): Promise<LoginState>;
signInWithEmail({ verificationInfo, verificationCode, bindInfo, email, }: {
verificationInfo?: {
verification_id: string;
is_user: boolean;
};
verificationCode?: string;
bindInfo?: any;
email?: string;
}): Promise<LoginState>;
setCustomSignFunc(getTickFn: authModels.GetCustomSignTicketFn): void;
signIn(params: authModels.SignInRequest): Promise<LoginState>;
setPassword(params: authModels.SetPasswordRequest): Promise<void>;
isUsernameRegistered(username: string): Promise<boolean>;
hasLoginState(): LoginState | null;
getLoginState(): Promise<LoginState | null>;
getUserInfo(): Promise<(authModels.UserInfo & Partial<User>) | null>;
getWedaUserInfo(): Promise<any>;
updateUserBasicInfo(params: authModels.ModifyUserBasicInfoRequest): Promise<void>;
getAuthHeader(): {};
bindWithProvider(params: authModels.BindWithProviderRequest): Promise<void>;
queryUser(queryObj: authModels.QueryUserProfileRequest): Promise<authModels.QueryUserProfileResponse>;
getAccessToken(): Promise<GetAccessTokenRes>;
grantProviderToken(params: authModels.GrantProviderTokenRequest): Promise<authModels.GrantProviderTokenResponse>;
patchProviderToken(params: authModels.PatchProviderTokenRequest): Promise<authModels.PatchProviderTokenResponse>;
signInWithProvider(params: authModels.SignInWithProviderRequest): Promise<LoginState>;
signInWithWechat(params?: any): Promise<LoginState>;
grantToken(params: authModels.GrantTokenRequest): Promise<LoginState>;
genProviderRedirectUri(params: authModels.GenProviderRedirectUriRequest): Promise<authModels.GenProviderRedirectUriResponse>;
resetPassword(params: authModels.ResetPasswordRequest): Promise<void>;
deviceAuthorize(params: authModels.DeviceAuthorizeRequest): Promise<authModels.DeviceAuthorizeResponse>;
sudo(params: authModels.SudoRequest): Promise<authModels.SudoResponse>;
deleteMe(params: authModels.WithSudoRequest): Promise<authModels.UserProfile>;
getProviders(): Promise<authModels.ProvidersResponse>;
loginScope(): Promise<string>;
loginGroups(): Promise<string[]>;
onLoginStateChanged(callback: Function): Promise<void>;
refreshTokenForce(params: {
version?: string;
}): Promise<Credentials>;
getCredentials(): Promise<Credentials>;
setCredentials(credentials: Credentials): Promise<void>;
getProviderSubType(): Promise<authModels.ProviderSubType>;
createCaptchaData(params: {
state: string;
redirect_uri?: string;
}): Promise<{
token: string;
data: string;
}>;
verifyCaptchaData(params: {
token: string;
key: string;
}): Promise<{
captcha_token: string;
expires_in: number;
}>;
getMiniProgramQrCode(params: authModels.GetMiniProgramQrCodeRequest): Promise<authModels.GetMiniProgramQrCodeResponse>;
getMiniProgramQrCodeStatus(params: authModels.GetMiniProgramQrCodeStatusRequest): Promise<authModels.GetMiniProgramQrCodeStatusResponse>;
modifyPassword(params: authModels.ModifyUserBasicInfoRequest): Promise<void>;
modifyPasswordWithoutLogin(params: authModels.ModifyPasswordWithoutLoginRequest): Promise<void>;
getUserBehaviorLog(params: authModels.GetUserBehaviorLog): Promise<authModels.GetUserBehaviorLogRes>;
signInWithUsername({ verificationInfo, verificationCode, username: rawUsername, bindInfo, loginType, }: {
verificationInfo?: authModels.GetVerificationResponse;
verificationCode?: string;
username?: string;
bindInfo?: any;
loginType?: string;
}): Promise<LoginState>;
createLoginState(params?: {
version?: string;
query?: any;
}, options?: {
asyncRefreshUser?: boolean;
userInfo?: any;
}): Promise<LoginState>;
setAccessKey(): Promise<void>;
protected formatPhone(phone: string): string;
private notifyListeners;
private setupListeners;
private convertToUser;
private validateParams;
private validateAtLeastOne;
private init;
}
type TInitAuthOptions = Pick<ICloudbaseAuthConfig, 'region' | 'persistence' | 'i18n' | 'accessKey' | 'useWxCloud' | 'auth'> & Partial<AuthOptions> & {
detectSessionInUrl?: boolean;
};
export declare function generateAuthInstance(config: TInitAuthOptions & {
sdkVersion?: string;
}, options?: {
clientId: ICloudbaseConfig['clientId'];
env: ICloudbaseConfig['env'];
apiOrigin?: string;
getApiOrigin?: () => string;
cache?: ICloudbaseCache;
platform?: ICloudbase['platform'];
app?: ICloudbase;
debug?: ICloudbaseAuthConfig['debug'];
detectSessionInUrl?: ICloudbaseAuthConfig['detectSessionInUrl'];
}): {
authInstance: Auth;
oauthInstance: CloudbaseOAuth;
};
export { UserInfo, Auth, WeixinAuthProvider, CustomAuthProvider, AnonymousAuthProvider };
export { AuthErrorCategory, AuthErrorCode, AuthError } from '@cloudbase/oauth';
export declare function registerAuth(app: Pick<ICloudbase, 'registerComponent'>): void;