@microsoft/teams.common
Version:
<p> <a href="https://www.npmjs.com/package/@microsoft/teams.common" target="_blank"> <img src="https://img.shields.io/npm/v/@microsoft/teams.common" /> </a> <a href="https://www.npmjs.com/package/@microsoft/teams.common?activeTab=code"
54 lines (51 loc) • 1.52 kB
text/typescript
import { AxiosInterceptorOptions, InternalAxiosRequestConfig, AxiosResponse } from 'axios';
import { ILogger } from '../logging/logger.mjs';
type Interceptor = {
options?: AxiosInterceptorOptions;
request?: RequestInterceptor;
response?: ResponseInterceptor;
error?: ErrorInterceptor;
};
type ErrorContext<T = any> = {
/**
* The error
*/
readonly error: T;
/**
* The clients logger instance
*/
readonly log: ILogger;
};
/**
* A method called to intercept a request that failed
*/
type ErrorInterceptor<T = any> = (ctx: ErrorContext<T>) => any;
type RequestContext<D = any> = {
/**
* The outgoing request config
*/
readonly config: InternalAxiosRequestConfig<D>;
/**
* The clients logger instance
*/
readonly log: ILogger;
};
/**
* A method called to intercept a successful request
*/
type RequestInterceptor<D = any> = (ctx: RequestContext<D>) => InternalAxiosRequestConfig | Promise<InternalAxiosRequestConfig>;
type ResponseContext<T = any, D = any> = {
/**
* The response
*/
readonly res: AxiosResponse<T, D>;
/**
* The clients logger instance
*/
readonly log: ILogger;
};
/**
* A method called to intercept a successful response
*/
type ResponseInterceptor<T = any, D = any> = (ctx: ResponseContext<T, D>) => AxiosResponse | Promise<AxiosResponse>;
export type { ErrorContext, ErrorInterceptor, Interceptor, RequestContext, RequestInterceptor, ResponseContext, ResponseInterceptor };