@mindmakr/gs-websdk
Version:
Web SDK for Guru SaaS System - Complete JavaScript/TypeScript SDK for building applications with dynamic schema management
120 lines (119 loc) • 3.03 kB
TypeScript
/**
* Core SDK Client - Main entry point for the Guru SaaS Web SDK
*/
import { SDKConfig, RequestConfig, AuthTokens, User } from '../types';
export declare class GuruSaaSClient {
private axiosInstance;
private config;
private tokens;
private refreshPromise;
private user;
constructor(config?: SDKConfig);
/**
* Get current configuration
*/
getConfig(): Required<SDKConfig>;
/**
* Update configuration
*/
updateConfig(newConfig: Partial<SDKConfig>): void;
/**
* Check if user is authenticated
*/
isAuthenticated(): boolean;
/**
* Get current user
*/
getCurrentUser(): User | null;
/**
* Get current auth tokens
*/
getTokens(): AuthTokens | null;
/**
* Set auth tokens manually
*/
setTokens(tokens: AuthTokens): void;
/**
* Clear authentication data
*/
clearAuth(): void;
/**
* Make an authenticated request to any service
*/
request<T = any>(method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH', url: string, data?: any, config?: RequestConfig): Promise<T>;
/**
* GET request helper
*/
get<T = any>(url: string, config?: RequestConfig): Promise<T>;
/**
* POST request helper
*/
post<T = any>(url: string, data?: any, config?: RequestConfig): Promise<T>;
/**
* PUT request helper
*/
put<T = any>(url: string, data?: any, config?: RequestConfig): Promise<T>;
/**
* DELETE request helper
*/
delete<T = any>(url: string, config?: RequestConfig): Promise<T>;
/**
* PATCH request helper
*/
patch<T = any>(url: string, data?: any, config?: RequestConfig): Promise<T>;
/**
* Login with email and password
*/
login(email: string, password: string): Promise<{
user: User;
tokens: AuthTokens;
}>;
/**
* Request OTP for email/password
*/
requestOTP(email: string, password: string): Promise<{
otp_token: string;
masked_email: string;
}>;
/**
* Verify OTP and complete login
*/
verifyOTP(otpToken: string, otpCode: string, options?: {
rememberDevice?: boolean;
deviceName?: string;
}): Promise<{
user: User;
tokens: AuthTokens;
}>;
/**
* Register new user
*/
register(userData: {
email: string;
password: string;
tenant_id: string;
name?: string;
}): Promise<User>;
/**
* Refresh access token
*/
refreshToken(): Promise<AuthTokens>;
/**
* Logout current user
*/
logout(): Promise<void>;
/**
* Get current user info
*/
me(): Promise<User>;
private performTokenRefresh;
private handleRequest;
private handleResponse;
private handleResponseError;
private resolveUrl;
private getAuthHeaders;
private storeTokensInStorage;
private restoreTokensFromStorage;
private clearTokensFromStorage;
private log;
}