import {AWSError} from './error'; /** * Represents AWS token object, which contains {token}, and optional * {expireTime}. * Creating a `Token` object allows you to pass around your * token to configuration and service objects. * * Note that this class typically does not need to be constructed manually, * as the {AWS.Config} and {AWS.Service} classes both accept simple * options hashes with the two keys. The token from this object will be used * automatically in operations which require them. * * ## Expiring and Refreshing Token * * Occasionally token can expire in the middle of a long-running * application. In this case, the SDK will automatically attempt to * refresh the token from the storage location if the Token * class implements the {refresh} method. * * If you are implementing a token storage location, you * will want to create a subclass of the `Token` class and * override the {refresh} method. This method allows token to be * retrieved from the backing store, be it a file system, database, or * some network storage. The method should reset the token attributes * on the object. */ export class Token { /** * Creates a Token object with a given set of token information as an options hash. * * @param {object} options - An option hash containing a set of token information. */ constructor(options: TokenOptions); /** * Gets the existing token, refreshing it if it's are not yet loaded or have expired. * Users should call this method before using refresh(), as this will not attempt to reload * tokeb when they are already loaded into the object. * * @param {get} callback - When called with no error, the token information has been loaded into the object. */ get(callback: (err?: AWSError) => void): void; /** * Gets the existing token, refreshing ot if necessary, and returns * a promise that will be fulfilled immediately (if no refresh is necessary) * or when the refresh has completed. */ getPromise(): Promise; /** * Returns whether the token object should call refresh() */ needsRefresh(): boolean; /** * Refreshes the token. * Users should call get() before attempting to forcibly refresh token. * * @param {function} callback - When called with no error, the token information has been loaded into the object. */ refresh(callback: (err?: AWSError) => void): void; /** * Invokes a token refresh and returns a promise that will be fulfilled * when the refresh has completed or rejected when the refresh has failed. * Users should call get() before attempting to forcibly refresh token. */ refreshPromise(): Promise; /** * The literal token string. */ token: string; /** * Whether the token has expired and require a refresh. * Used in conjunction with expireTime. */ expired: boolean; /** * Time when token should be considered expired. * Used in conjunction with expired. */ expireTime: Date; static expiryWindow: number; } export interface TokenOptions { /** * The literal token string. */ token: string /** * The time at which the token expires. */ expireTime?: Date }