UNPKG

@pubby.club/sdk

Version:
64 lines (63 loc) 2.03 kB
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 {};