import ITokenProvider from './ITokenProvider'; import Token from './Token'; /** * A token provider that wraps another provider with automatic caching. * Tokens are cached and reused until they are close to expiring. */ export default class CachedTokenProvider implements ITokenProvider { private readonly baseProvider; private readonly refreshThresholdMs; private cache; private refreshPromise; /** * Creates a new CachedTokenProvider. * @param baseProvider - The underlying token provider to cache * @param options - Optional configuration * @param options.refreshThresholdMs - Refresh tokens this many ms before expiry (default: 5 minutes) */ constructor(baseProvider: ITokenProvider, options?: { refreshThresholdMs?: number; }); getToken(): Promise; getName(): string; /** * Clears the cached token, forcing a refresh on the next getToken() call. */ clearCache(): void; /** * Determines if the token should be refreshed. * @param token - The token to check * @returns true if the token should be refreshed */ private shouldRefresh; /** * Fetches a new token from the base provider and caches it. */ private refreshToken; }