virgil-sdk
Version:
Virgil Security Services SDK
30 lines (29 loc) • 1.47 kB
TypeScript
import { IAccessToken, IAccessTokenProvider, ITokenContext } from './interfaces';
import { GetJwtCallback, Jwt } from '../Jwt';
/**
* Implementation of {@link IAccessTokenProvider} that caches the JWT
* in memory while it's fresh (i.e. not expired) and uses the user-provided
* callback function to get the JWT when requested by the clients.
*/
export declare class CachingJwtProvider implements IAccessTokenProvider {
private cachedJwt?;
private readonly getJwt;
private jwtPromise?;
/**
* Creates a new instance of `CachingJwtProvider`.
* @param {GetJwtCallback} renewJwtFn - The function that will be called
* whenever the fresh JWT is needed. If the `renewJwtFn` returns the JWT
* as a string, it will be converted to {@link Jwt} instance automatically.
* @param {Jwt|string} [initialToken] - Optional initial JWT.
*/
constructor(renewJwtFn: GetJwtCallback, initialToken?: Jwt | string);
/**
* Returns a `Promise` resolved with the cached token if it's fresh, or the
* token obtained by the call to the `renewJwtCallback` otherwise. The token
* obtained from the `renewJwtCallback` is then cached. If the `renewJwtCallback`
* returns the JWT as a string, it is converted to {@link Jwt} instance before returning.
* @param {ITokenContext} context
* @returns {Promise<IAccessToken>}
*/
getToken(context: ITokenContext): Promise<IAccessToken>;
}