You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.0 KiB
107 lines
3.0 KiB
/**
|
|
* Copyright 2018 Google LLC
|
|
*
|
|
* Distributed under MIT license.
|
|
* See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
|
|
*/
|
|
import { GaxiosOptions, GaxiosPromise } from 'gaxios';
|
|
export interface Transporter {
|
|
request<T>(opts: GaxiosOptions): GaxiosPromise<T>;
|
|
}
|
|
export declare type GetTokenCallback = (err: Error | null, token?: TokenData) => void;
|
|
export interface Credentials {
|
|
privateKey: string;
|
|
clientEmail?: string;
|
|
}
|
|
export interface TokenData {
|
|
refresh_token?: string;
|
|
expires_in?: number;
|
|
access_token?: string;
|
|
token_type?: string;
|
|
id_token?: string;
|
|
}
|
|
export interface TokenOptions {
|
|
keyFile?: string;
|
|
key?: string;
|
|
email?: string;
|
|
iss?: string;
|
|
sub?: string;
|
|
scope?: string | string[];
|
|
additionalClaims?: {};
|
|
eagerRefreshThresholdMillis?: number;
|
|
transporter?: Transporter;
|
|
}
|
|
export interface GetTokenOptions {
|
|
forceRefresh?: boolean;
|
|
}
|
|
export declare class GoogleToken {
|
|
get accessToken(): string | undefined;
|
|
get idToken(): string | undefined;
|
|
get tokenType(): string | undefined;
|
|
get refreshToken(): string | undefined;
|
|
expiresAt?: number;
|
|
key?: string;
|
|
keyFile?: string;
|
|
iss?: string;
|
|
sub?: string;
|
|
scope?: string;
|
|
rawToken?: TokenData;
|
|
tokenExpires?: number;
|
|
email?: string;
|
|
additionalClaims?: {};
|
|
eagerRefreshThresholdMillis?: number;
|
|
transporter: Transporter;
|
|
private inFlightRequest?;
|
|
/**
|
|
* Create a GoogleToken.
|
|
*
|
|
* @param options Configuration object.
|
|
*/
|
|
constructor(options?: TokenOptions);
|
|
/**
|
|
* Returns whether the token has expired.
|
|
*
|
|
* @return true if the token has expired, false otherwise.
|
|
*/
|
|
hasExpired(): boolean;
|
|
/**
|
|
* Returns whether the token will expire within eagerRefreshThresholdMillis
|
|
*
|
|
* @return true if the token will be expired within eagerRefreshThresholdMillis, false otherwise.
|
|
*/
|
|
isTokenExpiring(): boolean;
|
|
/**
|
|
* Returns a cached token or retrieves a new one from Google.
|
|
*
|
|
* @param callback The callback function.
|
|
*/
|
|
getToken(opts?: GetTokenOptions): Promise<TokenData>;
|
|
getToken(callback: GetTokenCallback, opts?: GetTokenOptions): void;
|
|
/**
|
|
* Given a keyFile, extract the key and client email if available
|
|
* @param keyFile Path to a json, pem, or p12 file that contains the key.
|
|
* @returns an object with privateKey and clientEmail properties
|
|
*/
|
|
getCredentials(keyFile: string): Promise<Credentials>;
|
|
private getTokenAsync;
|
|
private getTokenAsyncInner;
|
|
private ensureEmail;
|
|
/**
|
|
* Revoke the token if one is set.
|
|
*
|
|
* @param callback The callback function.
|
|
*/
|
|
revokeToken(): Promise<void>;
|
|
revokeToken(callback: (err?: Error) => void): void;
|
|
private revokeTokenAsync;
|
|
/**
|
|
* Configure the GoogleToken for re-use.
|
|
* @param {object} options Configuration object.
|
|
*/
|
|
private configure;
|
|
/**
|
|
* Request the token from Google.
|
|
*/
|
|
private requestToken;
|
|
}
|