@pubby.club/sdk
Version:
Pubby Development Kit
64 lines (63 loc) • 2.03 kB
TypeScript
import { AxiosRequestConfig } from "axios";
/** Representa um par de tokens */
export interface Token {
accessToken: string;
refreshToken: string;
}
/** 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(): Token;
save(token: Token): Token;
}
/** Interface de função para requisição de grantTypes customizados */
export declare type OAuthGrant = (request: AxiosRequestConfig, options?: OAuthClientOptions) => AxiosRequestConfig;
export declare function ClientCredentialsGrant(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>;
constructor(options: OAuthClientOptions);
get accessToken(): string;
get refreshToken(): string;
get tokenPayload(): TokenPayload;
get isTokenExpired(): boolean;
/**
* Obtém um novo token de acesso utilizando uma granType customizado
* @param grantType Função de grantType
*/
requestToken(grantType: OAuthGrant): Promise<Token>;
/**
* Faz login e salva os tokens
* @param scopes Escopos do token
*/
login(scopes: string[]): Promise<Token>;
/**
* Atualiza os tokens e salva
*/
refreshAccessToken(): Promise<Token>;
/** Obtém o token de acesso e atualiza caso precise */
getToken(): string | Promise<any>;
}
export {};