@pubby/sdk
Version:
Pubby Development Kit
91 lines (90 loc) • 3.07 kB
TypeScript
import { AxiosRequestConfig } from "axios";
export declare const ClientCredentialsGrant: (scopes?: string[]) => OAuthGrant;
/** Representa um par de tokens */
export interface Token {
accessToken: string;
refreshToken: string;
expires: number;
}
/** Configurações do cliente */
export interface OAuthClientOptions {
tokenUrl: string;
clientId: string;
clientSecret: string;
storage?: OAuthStorage;
}
/** Interface para estratégia de armazenamento de tokens */
export interface OAuthStorage {
get(): Promise<Token>;
save(token: Token): Promise<Token>;
clear(): Promise<void>;
}
/** Interface de função para requisição de grantTypes customizados */
export declare type OAuthGrant = (request: AxiosRequestConfig, options?: OAuthClientOptions) => AxiosRequestConfig;
/**
* Obtém um token utilizando login e senha
* @param username nome de usuário
* @param password senha
* @param scopes escopos do token
*/
export declare function PasswordGrant(username: string, password: string, scopes?: string[]): OAuthGrant;
/**
* Obtém um novo token de acesso utilizando um token de atualização
* @param refreshToken token de atualização
*/
export declare function RefreshTokenGrant(refreshToken: string): OAuthGrant;
/**
* Obtém um novo ticket para conexão com o Socket.io
* @param accessToken token de acesso
*/
export declare function TicketGrant(accessToken: string): OAuthGrant;
interface TokenPayload {
sub: string;
exp: number;
}
/**
* Cria um cliente OAuth para gerenciar tokens
*/
export declare class OAuthClient {
readonly options: Required<OAuthClientOptions>;
tokenRequest: Promise<any> | null;
offset: number;
delay: number;
constructor(options: OAuthClientOptions);
/**
* Get current token from storage
* @returns Access and refresh token
*/
getToken(): Promise<Token>;
getTokenPayload(): Promise<TokenPayload | null>;
isTokenExpired(): Promise<boolean>;
isAuthenticated(): Promise<boolean>;
updateOffset(): Promise<number>;
fetchOrRefreshAccessToken(): Promise<string | null>;
/**
* Obtém um novo token de acesso utilizando uma granType customizado
* @param grantType Função de grantType
*/
requestToken(grantType: OAuthGrant): Promise<Token>;
/**
* Obtém um novo token de acesso utilizando uma granType customizado e salva no storage
* @param grantType Função de grantType
*/
requestTokenAndSave(grant: OAuthGrant): Promise<Token>;
/**
* Faz login e salva os tokens
* @param username Nome de usuário
* @param password Senha
* @param scopes Escopos do token
*/
login(username: string, password: string, scopes?: string[]): Promise<Token>;
/**
* Revoga os tokens atuais e desconecta o usuário do socket
*/
revoke(): Promise<void>;
/**
* Atualiza os tokens e salva
*/
refreshAccessToken(): Promise<Token>;
}
export {};