contentful-sdk-core
Version: 
Core modules for the Contentful JS SDKs
100 lines (99 loc) • 3.8 kB
TypeScript
import { AxiosHeaderValue, AxiosRequestHeaders, InternalAxiosRequestConfig } from 'axios';
import type { AxiosInstance as OriginalAxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
export type DefaultOptions = AxiosRequestConfig & {
    logHandler: (level: string, data?: Error | string) => void;
    responseLogger?: (response: AxiosResponse<any> | Error) => unknown;
    requestLogger?: (request: AxiosRequestConfig | Error) => unknown;
    retryOnError?: boolean;
};
export type AxiosInstance = OriginalAxiosInstance & {
    httpClientParams: CreateHttpClientParams;
    cloneWithNewParams: (params: Partial<CreateHttpClientParams>) => AxiosInstance;
    defaults: DefaultOptions;
};
export type CreateHttpClientParams = {
    /** Access Token or an async function that returns Access Token */
    accessToken: string | (() => Promise<string>);
    /** Space ID */
    space?: string;
    /**
     * Requests will be made over http instead of the default https
     * @default false
     */
    insecure?: boolean;
    /**
     * API host
     */
    host?: string;
    /** HTTP agent for node */
    httpAgent?: AxiosRequestConfig['httpAgent'];
    /** HTTPS agent for node */
    httpsAgent?: AxiosRequestConfig['httpsAgent'];
    /** Axios adapter to handle requests */
    adapter?: AxiosRequestConfig['adapter'];
    /** Axios proxy config */
    proxy?: AxiosRequestConfig['proxy'];
    /** Gets called on every request triggered by the SDK, takes the axios request config as an argument */
    requestLogger?: DefaultOptions['requestLogger'];
    /** Gets called on every response, takes axios response object as an argument */
    responseLogger?: DefaultOptions['responseLogger'];
    /** Request interceptor */
    onBeforeRequest?: (value: InternalAxiosRequestConfig) => InternalAxiosRequestConfig | Promise<InternalAxiosRequestConfig>;
    /** Error handler */
    onError?: (error: any) => any;
    /** A log handler function to process given log messages & errors. Receives the log level (error, warning & info) and the actual log data (Error object or string). (Default can be found here: https://github.com/contentful/contentful-sdk-core/blob/master/lib/create-http-client.js) */
    logHandler?: DefaultOptions['logHandler'];
    /** Optional additional headers */
    headers?: AxiosRequestHeaders | Record<string, AxiosHeaderValue>;
    defaultHostname?: string;
    /**
     * If we should retry on errors and 429 rate limit exceptions
     * @default true
     */
    retryOnError?: boolean;
    /**
     * Optional number of retries before failure
     * @default 5
     */
    retryLimit?: number;
    /**
     * Optional number of milliseconds before the request times out.
     * @default 30000
     */
    timeout?: number;
    basePath?: string;
    baseURL?: string;
    /**
     * Optional maximum content length in bytes
     * @default 1073741824 i.e 1GB
     */
    maxContentLength?: number;
    /**
     * Optional maximum body length in bytes
     * @default 1073741824 i.e 1GB
     */
    maxBodyLength?: number;
    /**
     * Optional maximum number of requests per second (rate-limit)
     * @desc should represent the max of your current plan's rate limit
     * @default 0 = no throttling
     * @param 1-30 (fixed number of limit), 'auto' (calculated limit based on current tier), '0%' - '100%' (calculated % limit based on tier)
     */
    throttle?: 'auto' | string | number;
    /**
     * Optional how often the current request has been retried
     * @default 0
     */
    attempt?: number;
};
export type ContentfulErrorData = {
    status?: number;
    statusText?: string;
    requestId?: string;
    message: string;
    details: Record<string, any>;
    request?: Record<string, any>;
    sys?: {
        id?: string;
    };
};