{"version":3,"file":"axios.cjs","names":[],"sources":["../../src/clients/axios.ts"],"sourcesContent":["import type { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios'\nimport axios from 'axios'\n\ndeclare const AXIOS_BASE: string\ndeclare const AXIOS_HEADERS: string\n\n/**\n * Subset of AxiosRequestConfig\n */\nexport type RequestConfig<TData = unknown> = {\n  baseURL?: string\n  url?: string\n  method?: 'GET' | 'PUT' | 'PATCH' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD'\n  params?: unknown\n  data?: TData | FormData\n  responseType?: 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream'\n  signal?: AbortSignal\n  validateStatus?: (status: number) => boolean\n  headers?: AxiosRequestConfig['headers']\n  paramsSerializer?: AxiosRequestConfig['paramsSerializer']\n}\n\n/**\n * Subset of AxiosResponse\n */\nexport type ResponseConfig<TData = unknown> = {\n  data: TData\n  status: number\n  statusText: string\n  headers: AxiosResponse['headers']\n}\n\nexport type ResponseErrorConfig<TError = unknown> = AxiosError<TError>\n\nexport type Client = <TResponseData, _TError = unknown, TRequestData = unknown>(config: RequestConfig<TRequestData>) => Promise<ResponseConfig<TResponseData>>\n\nlet _config: Partial<RequestConfig> = {\n  baseURL: typeof AXIOS_BASE !== 'undefined' ? AXIOS_BASE : undefined,\n  headers: typeof AXIOS_HEADERS !== 'undefined' ? JSON.parse(AXIOS_HEADERS) : undefined,\n}\n\nexport const getConfig = () => _config\n\nexport const setConfig = (config: RequestConfig) => {\n  _config = config\n  return getConfig()\n}\n\nexport const mergeConfig = <T extends RequestConfig>(...configs: Array<Partial<T>>): Partial<T> => {\n  return configs.reduce<Partial<T>>((merged, config) => {\n    return {\n      ...merged,\n      ...config,\n      headers: {\n        ...merged.headers,\n        ...config.headers,\n      },\n    }\n  }, {})\n}\n\nexport const axiosInstance = axios.create(getConfig())\n\nexport const client = async <TResponseData, TError = unknown, TRequestData = unknown>(\n  config: RequestConfig<TRequestData>,\n): Promise<ResponseConfig<TResponseData>> => {\n  return axiosInstance.request<TResponseData, ResponseConfig<TResponseData>>(mergeConfig(getConfig(), config)).catch((e: AxiosError<TError>) => {\n    throw e\n  })\n}\n\nclient.getConfig = getConfig\nclient.setConfig = setConfig\n\nexport default client\n"],"mappings":";;;;;;;;AAoCA,IAAI,UAAkC;CACpC,SAAS,OAAO,eAAe,cAAc,aAAa,KAAA;CAC1D,SAAS,OAAO,kBAAkB,cAAc,KAAK,MAAM,cAAc,GAAG,KAAA;CAC7E;AAED,MAAa,kBAAkB;AAE/B,MAAa,aAAa,WAA0B;AAClD,WAAU;AACV,QAAO,WAAW;;AAGpB,MAAa,eAAwC,GAAG,YAA2C;AACjG,QAAO,QAAQ,QAAoB,QAAQ,WAAW;AACpD,SAAO;GACL,GAAG;GACH,GAAG;GACH,SAAS;IACP,GAAG,OAAO;IACV,GAAG,OAAO;IACX;GACF;IACA,EAAE,CAAC;;AAGR,MAAa,gBAAgB,MAAA,QAAM,OAAO,WAAW,CAAC;AAEtD,MAAa,SAAS,OACpB,WAC2C;AAC3C,QAAO,cAAc,QAAsD,YAAY,WAAW,EAAE,OAAO,CAAC,CAAC,OAAO,MAA0B;AAC5I,QAAM;GACN;;AAGJ,OAAO,YAAY;AACnB,OAAO,YAAY"}