mirror of
https://github.com/dawidd6/action-send-mail.git
synced 2026-09-17 09:06:48 +07:00
node_modules: update (#322)
Co-authored-by: dawidd6 <9713907+dawidd6@users.noreply.github.com>
This commit is contained in:
+191
@@ -0,0 +1,191 @@
|
||||
import { Stream } from 'node:stream';
|
||||
import crypto from 'node:crypto';
|
||||
import * as shared from '../shared/index.js';
|
||||
import type { OutgoingHttpHeaders } from 'node:http';
|
||||
/**
|
||||
* Receives the result of a provisionCallback run: an error, or the new access token and
|
||||
* an optional expire time in milliseconds
|
||||
*/
|
||||
export type XOAuth2ProvisionResultCallback = (err: Error | null, accessToken?: string, expires?: number) => void;
|
||||
/**
|
||||
* Custom access token provider. `renew` is true when the existing token failed and a new
|
||||
* one is needed
|
||||
*/
|
||||
export type XOAuth2ProvisionCallback = (user: string, renew: boolean, callback: XOAuth2ProvisionResultCallback) => void;
|
||||
/**
|
||||
* Receives an access token, or the error that prevented generating one
|
||||
*/
|
||||
export type XOAuth2TokenCallback = (err: Error | null, accessToken?: string) => void;
|
||||
/**
|
||||
* A private key accepted by crypto.createSign().sign()
|
||||
*/
|
||||
export type XOAuth2PrivateKey = crypto.KeyLike | crypto.SignKeyObjectInput | crypto.SignPrivateKeyInput;
|
||||
/**
|
||||
* Client information for token generation
|
||||
*/
|
||||
export interface XOAuth2Options {
|
||||
/** User e-mail address */
|
||||
user?: string | undefined;
|
||||
/** Client ID value */
|
||||
clientId?: string | undefined;
|
||||
/** Client secret value */
|
||||
clientSecret?: string | undefined;
|
||||
/** Refresh token for an user */
|
||||
refreshToken?: string | undefined;
|
||||
/** Endpoint for token generation, defaults to 'https://accounts.google.com/o/oauth2/token' */
|
||||
accessUrl?: string | undefined;
|
||||
/** An existing valid accessToken */
|
||||
accessToken?: string | undefined;
|
||||
/** Private key for JSW */
|
||||
privateKey?: XOAuth2PrivateKey | undefined;
|
||||
/** Optional Access Token expire time in ms */
|
||||
expires?: number | undefined;
|
||||
/** Optional TTL for Access Token in seconds */
|
||||
timeout?: number | undefined;
|
||||
/** Function to run when a new access token is required */
|
||||
provisionCallback?: XOAuth2ProvisionCallback | undefined;
|
||||
/** Optional TLS options forwarded to the HTTPS token request. Defaults to strict cert validation; supply { rejectUnauthorized: false } only for self-hosted OAuth providers on private CAs. */
|
||||
tls?: {
|
||||
[key: string]: any;
|
||||
} | undefined;
|
||||
/** Service account client id (the JWT issuer), switches to the JWT bearer flow */
|
||||
serviceClient?: string | undefined;
|
||||
/** Lifetime of the service account JWT in seconds, defaults to 5 minutes, capped at an hour */
|
||||
serviceRequestTimeout?: number | undefined;
|
||||
/** OAuth2 scope for the service account flow, defaults to 'https://mail.google.com/' */
|
||||
scope?: string | undefined;
|
||||
/** Logger component name, defaults to 'OAuth2' */
|
||||
component?: string | undefined;
|
||||
/** Extra headers for the token request */
|
||||
customHeaders?: OutgoingHttpHeaders | undefined;
|
||||
/** Extra form fields for the token request */
|
||||
customParams?: {
|
||||
[key: string]: any;
|
||||
} | undefined;
|
||||
}
|
||||
/**
|
||||
* The object emitted with the 'token' event once a new access token has been generated
|
||||
*/
|
||||
export interface XOAuth2Token {
|
||||
/** User e-mail address */
|
||||
user?: string | undefined;
|
||||
/** The new access token */
|
||||
accessToken: string;
|
||||
/** Expire time as a timestamp in milliseconds, 0 when unknown */
|
||||
expires: number;
|
||||
}
|
||||
/**
|
||||
* A getToken request waiting for an in-flight renewal to complete
|
||||
*/
|
||||
export interface XOAuth2QueuedRequest {
|
||||
renew: boolean;
|
||||
callback: XOAuth2TokenCallback;
|
||||
}
|
||||
/**
|
||||
* XOAUTH2 access_token generator for Gmail.
|
||||
* Create client ID for web applications in Google API console to use it.
|
||||
* See Offline Access for receiving the needed refreshToken for an user
|
||||
* https://developers.google.com/accounts/docs/OAuth2WebServer#offline
|
||||
*
|
||||
* Usage for generating access tokens with a custom method using provisionCallback:
|
||||
* provisionCallback(user, renew, callback)
|
||||
* * user is the username to get the token for
|
||||
* * renew is a boolean that if true indicates that existing token failed and needs to be renewed
|
||||
* * callback is the callback to run with (error, accessToken [, expires])
|
||||
* * accessToken is a string
|
||||
* * expires is an optional expire time in milliseconds
|
||||
* If provisionCallback is used, then Nodemailer does not try to attempt generating the token by itself
|
||||
*
|
||||
* @constructor
|
||||
* @param options Client information for token generation
|
||||
* @param options.user User e-mail address
|
||||
* @param options.clientId Client ID value
|
||||
* @param options.clientSecret Client secret value
|
||||
* @param options.refreshToken Refresh token for an user
|
||||
* @param options.accessUrl Endpoint for token generation, defaults to 'https://accounts.google.com/o/oauth2/token'
|
||||
* @param options.accessToken An existing valid accessToken
|
||||
* @param options.privateKey Private key for JSW
|
||||
* @param options.expires Optional Access Token expire time in ms
|
||||
* @param options.timeout Optional TTL for Access Token in seconds
|
||||
* @param options.provisionCallback Function to run when a new access token is required
|
||||
* @param options.tls Optional TLS options forwarded to the HTTPS token request. Defaults to strict cert validation; supply { rejectUnauthorized: false } only for self-hosted OAuth providers on private CAs.
|
||||
*/
|
||||
declare class XOAuth2 extends Stream {
|
||||
options: XOAuth2Options;
|
||||
logger: shared.Logger;
|
||||
provisionCallback: XOAuth2ProvisionCallback | false;
|
||||
accessToken: string | false;
|
||||
expires: number;
|
||||
renewing: boolean;
|
||||
renewalQueue: XOAuth2QueuedRequest[];
|
||||
constructor(options?: XOAuth2Options, logger?: shared.ExternalLogger | boolean);
|
||||
/**
|
||||
* Returns or generates (if previous has expired) a XOAuth2 token
|
||||
*
|
||||
* @param renew If false then use cached access token (if available)
|
||||
* @param callback Callback function with error object and token string
|
||||
*/
|
||||
getToken(renew: boolean, callback: XOAuth2TokenCallback): void;
|
||||
/**
|
||||
* Updates token values
|
||||
*
|
||||
* @param accessToken New access token
|
||||
* @param timeout Access token lifetime in seconds
|
||||
*
|
||||
* Emits 'token': { user: User email-address, accessToken: the new accessToken, timeout: TTL in seconds}
|
||||
*/
|
||||
updateToken(accessToken: string, timeout?: number | string): void;
|
||||
/**
|
||||
* Generates a new XOAuth2 token with the credentials provided at initialization
|
||||
*
|
||||
* @param callback Callback function with error object and token string
|
||||
*/
|
||||
generateToken(callback: XOAuth2TokenCallback): void;
|
||||
/**
|
||||
* Converts an access_token and user id into a base64 encoded XOAuth2 token
|
||||
*
|
||||
* @param [accessToken] Access token string
|
||||
* @return Base64 encoded token for IMAP or SMTP login
|
||||
*/
|
||||
buildXOAuth2Token(accessToken?: string): string;
|
||||
/**
|
||||
* Custom POST request handler.
|
||||
* This is only needed to keep paths short in Windows, usually this module
|
||||
* is a dependency of a dependency and if it tries to require something
|
||||
* like the request module the paths get way too long to handle for Windows.
|
||||
* As we do only a simple POST request we do not actually require complicated
|
||||
* logic support (no redirects, no nothing) anyway.
|
||||
*
|
||||
* @param url Url to POST to
|
||||
* @param payload Payload to POST
|
||||
* @param params Client options, the customHeaders and tls values are used for the request
|
||||
* @param callback Callback function with (err, buff)
|
||||
*/
|
||||
postRequest(url: string, payload: {
|
||||
[key: string]: any;
|
||||
} | string | Buffer, params: XOAuth2Options, callback: (err: Error | null, buff?: Buffer) => void): void;
|
||||
/**
|
||||
* Encodes a buffer or a string into Base64url format
|
||||
*
|
||||
* @param data The data to convert
|
||||
* @return The encoded string
|
||||
*/
|
||||
toBase64URL(data: Buffer | string): string;
|
||||
/**
|
||||
* Creates a JSON Web Token signed with RS256 (SHA256 + RSA)
|
||||
*
|
||||
* @param payload The payload to include in the generated token
|
||||
* @return The generated and signed token
|
||||
*/
|
||||
jwtSignRS256(payload: {
|
||||
[key: string]: any;
|
||||
}): string;
|
||||
}
|
||||
/**
|
||||
* Type aliases in the layout of @types/nodemailer, so `XOAuth2.Options` style references keep working
|
||||
*/
|
||||
declare namespace XOAuth2 {
|
||||
type Options = XOAuth2Options;
|
||||
type Token = XOAuth2Token;
|
||||
}
|
||||
export default XOAuth2;
|
||||
Reference in New Issue
Block a user