/** * @license * @preserve * * Copyright 2023 KeeeX SAS * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * */ import { type Awaitable } from "@keeex/utils/types/types.js"; import { type AxiosInstance, type AxiosRequestConfig, type AxiosResponse } from "axios"; import { type ProxySettings } from "./proxy.js"; interface RequestSettingsBase { maxConcurrentRequests?: number; postCallCb?: (res: AxiosResponse) => Awaitable; preCallCb?: (config: AxiosRequestConfig) => Awaitable; proxy?: ProxySettings; unauthorizedCb?: () => Awaitable; } /** @public */ export interface RequestSettingsAuto extends RequestSettingsBase { baseUrl: string; headers?: Record; } /** @public */ export interface RequestSettingsAxios extends RequestSettingsBase { axios: AxiosInstance; baseUrl?: string; } export type RequestSettings = RequestSettingsAuto | RequestSettingsAxios; /** Return an axios instance with concurrency manager */ declare const createAxios: (settings: RequestSettings) => AxiosInstance; export default createAxios;