{"version":3,"sources":["../../../src/utils/axios/index.ts"],"sourcesContent":["import axios, {\n  AxiosError,\n  AxiosResponse,\n  InternalAxiosRequestConfig,\n} from 'axios';\nimport ora from 'ora';\nimport chalk from 'chalk';\nimport {Spec, Spins} from '../../types.ts';\n\naxios.defaults.paramsSerializer = {\n  indexes: null,\n};\n\nconst spins: Spins[] = [];\n\n/** configration for api request like header authorization  */\nconst configAxiosRequest = (\n  config: InternalAxiosRequestConfig<unknown>\n): InternalAxiosRequestConfig<unknown> => {\n  const spinner = ora('axios get');\n  spinner.text = '├ axios get :' + config.url;\n  spinner.start();\n  spins.push({id: config.url, spinner: spinner});\n  return config;\n};\n\n/** this situation happen when request does not even send to network or internet */\nconst onAxiosRequestError = (error: AxiosError): Promise<AxiosError> => {\n  const spinner = spins.find(\n    spinObj => spinObj.id === error?.config?.url\n  )?.spinner;\n  spinner?.fail();\n  return Promise.reject(error);\n};\n\n/** handle Response of api response  */\nconst onAxiosResponse = (response: AxiosResponse<Spec>): AxiosResponse => {\n  const spinner = spins.find(\n    spinObj => spinObj.id === response.config.url\n  )?.spinner;\n  spinner?.succeed();\n  return response;\n};\n\n/** handle api response errors */\nconst onAxiosResponseError = (error: AxiosError): Promise<AxiosError> => {\n  try {\n    const spinner = spins.find(\n      spinObj => spinObj.id === error?.config?.url\n    )?.spinner;\n    spinner?.fail();\n    if (error.response) {\n      console.warn(\n        chalk.redBright(\n          ' └ Error axios get with code :' + error.response.status\n        )\n      );\n      /** this situation happen when request return a response with error object that contain a status code */\n      // responseHandler(error.response.status)(error);\n    } else if (error.request) {\n      /** this situation happen when request does not return means that request fail duo to network error or sth like that */\n      console.warn(chalk.redBright(' └ check your network Connection'));\n    } else {\n      console.error(chalk.redBright(' └ Error axios get ', error.message));\n    }\n    throw new Error(error.message);\n  } catch (error) {\n    console.error(chalk.redBright(' └ Error axios get:', error));\n    return Promise.reject(error);\n  }\n};\n\n/** handle axios response for errors and etc.. */\naxios.interceptors.response.use(onAxiosResponse, onAxiosResponseError);\n/** set axios request's header configration like autorization */\naxios.interceptors.request.use(configAxiosRequest, onAxiosRequestError);\n\nexport default axios;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAIO;AACP,iBAAgB;AAChB,mBAAkB;AAGlB,aAAAA,QAAM,SAAS,mBAAmB;AAAA,EAChC,SAAS;AACX;AAEA,IAAM,QAAiB,CAAC;AAGxB,IAAM,qBAAqB,CACzB,WACwC;AACxC,QAAM,cAAU,WAAAC,SAAI,WAAW;AAC/B,UAAQ,OAAO,uBAAkB,OAAO;AACxC,UAAQ,MAAM;AACd,QAAM,KAAK,EAAC,IAAI,OAAO,KAAK,QAAgB,CAAC;AAC7C,SAAO;AACT;AAGA,IAAM,sBAAsB,CAAC,UAA2C;AA3BxE;AA4BE,QAAM,WAAU,WAAM;AAAA,IACpB,aAAQ;AA7BZ,UAAAC;AA6Be,qBAAQ,SAAOA,MAAA,+BAAO,WAAP,gBAAAA,IAAe;AAAA;AAAA,EAC3C,MAFgB,mBAEb;AACH,qCAAS;AACT,SAAO,QAAQ,OAAO,KAAK;AAC7B;AAGA,IAAM,kBAAkB,CAAC,aAAiD;AApC1E;AAqCE,QAAM,WAAU,WAAM;AAAA,IACpB,aAAW,QAAQ,OAAO,SAAS,OAAO;AAAA,EAC5C,MAFgB,mBAEb;AACH,qCAAS;AACT,SAAO;AACT;AAGA,IAAM,uBAAuB,CAAC,UAA2C;AA7CzE;AA8CE,MAAI;AACF,UAAM,WAAU,WAAM;AAAA,MACpB,aAAQ;AAhDd,YAAAA;AAgDiB,uBAAQ,SAAOA,MAAA,+BAAO,WAAP,gBAAAA,IAAe;AAAA;AAAA,IAC3C,MAFgB,mBAEb;AACH,uCAAS;AACT,QAAI,MAAM,UAAU;AAClB,cAAQ;AAAA,QACN,aAAAC,QAAM;AAAA,UACJ,wCAAmC,MAAM,SAAS;AAAA,QACpD;AAAA,MACF;AAAA,IAGF,WAAW,MAAM,SAAS;AAExB,cAAQ,KAAK,aAAAA,QAAM,UAAU,uCAAkC,CAAC;AAAA,IAClE,OAAO;AACL,cAAQ,MAAM,aAAAA,QAAM,UAAU,4BAAuB,MAAM,OAAO,CAAC;AAAA,IACrE;AACA,UAAM,IAAI,MAAM,MAAM,OAAO;AAAA,EAC/B,SAASC,QAAO;AACd,YAAQ,MAAM,aAAAD,QAAM,UAAU,4BAAuBC,MAAK,CAAC;AAC3D,WAAO,QAAQ,OAAOA,MAAK;AAAA,EAC7B;AACF;AAGA,aAAAJ,QAAM,aAAa,SAAS,IAAI,iBAAiB,oBAAoB;AAErE,aAAAA,QAAM,aAAa,QAAQ,IAAI,oBAAoB,mBAAmB;AAEtE,IAAO,gBAAQ,aAAAA;","names":["axios","ora","_a","chalk","error"]}