/** * @interface TokenParamsInterface * @param userClaimsName The name of the user claims field in Access Token * @param accessTokenName The AccessToken storage name * @param refreshTokenName The RefreshToken storage name */ export interface TokenParamsInterface { /** * The name of the user claims field in Access Token * @defaultValue `user_claims` */ userClaimsName?: string; /** * The AccessToken storage name * @defaultValue `_auth_t` */ accessTokenName?: string; /** * The RefreshToken storage name * @defaultValue `_refresh_t` */ refreshTokenName?: string; /** * Function that return new AccessToken as Promise\ * @returns {Promise} Promise\ of the new Access Token */ fetchRefreshToken?: () => Promise; } /** * @abstract * @class * Abstract Class for Token interactions */ declare abstract class Token { /** * The name of the user claims field in Access Token * @defaultValue `user_claims` */ private readonly userClaimsName; /** * The AccessToken storage name * @defaultValue `_auth_t` */ private readonly accessTokenName; /** * The RefreshToken storage name * @defaultValue `_refresh_t` */ private readonly refreshTokenName; /** * Function that return new AccessToken as Promise\ * @returns {Promise} Promise\ of the new Access Token */ readonly fetchRefreshToken: () => Promise; /** * {@inheritdoc TokenParamsInterface} */ constructor(props: TokenParamsInterface); /** * Set the Access Token from storage * @param token - AccessToken as string * @virtual */ abstract setAccessToken(token: string): void; /** * Get the Access Token from storage * @returns {string|undefined} The stored Access Token */ abstract getAccessToken(): string | undefined; /** * Remove the Access Token from storage */ abstract unsetAccessToken(): void; /** * Set the Refresh Token from storage * @param refreshToken - RefreshToken as string */ abstract setRefreshToken(refreshToken: string): void; /** * Get the Refresh Token from storage * @returns {string|undefined} The stored Refresh Token */ abstract getRefreshToken(): string | undefined; /** * Remove the Refresh Token from storage */ abstract unsetRefreshToken(): void; /** * Get the Access Token storage name * @returns {string} The Access Token storage name */ protected getAccessTokenName(): string; /** * Get the Refresh Token storage name * @returns {string} The Refresh Token storage name */ protected getRefreshTokenName(): string; /** * Get the Access Token expiration * @returns {Date|undefined} The AccessToken expiration as Date or undefined if no AccessToken */ getAccessTokenExp(): Date | undefined; /** * Get the Refresh Token expiration * @returns {Date|undefined} The RefreshToken expiration as Date or undefined if no RefreshToken */ getRefreshTokenExp(): Date | undefined; /** * Get user claims * @returns {any} The user claims stored in the AccessToken */ getUserClaims(): any; /** * Check if Access Token is expired * @returns {boolean} true if the AccessToken is expired */ isAccessTokenExpired(): boolean; /** * Check if Refresh Token is expired * @returns {boolean} true if the RefreshToken is expired */ isRefreshTokenExpired(): boolean; /** * Check if the user is authenticated * @returns {boolean} true if the user is authenticated */ isAuthenticated(): boolean; /** * Check if Access Token is expired but Refresh Token still valid * @returns {boolean} true Access Token expired and Refresh Token not */ hasToRefreshAccessToken(): boolean; /** * Decode JWT token and return payload * @param token JWT token as string * @returns {any} JWT token payload object */ protected decodeToken(token: string): any; /** * Get JWT token expiration as Date from `exp` field in token payload * @param token JWT token as string * @returns {Date|undefined} The JWT token expiration as Date or undefined if no token */ protected getTokenExp(token: string): Date | undefined; /** * @param date1 First date * @param date2 Second date * @returns The diff in minutes between date1 and date2 */ private dateTimeDiffInMinutes; } export default Token;