UNPKG

@pubby/sdk

Version:
91 lines (90 loc) 3.07 kB
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 {};