{"version":3,"file":"custom-fetch.module.mjs","sources":["../node_modules/@ungap/global-this/esm/index.js","../custom-fetch.js"],"sourcesContent":["(function (Object) {\n  typeof globalThis !== 'object' && (\n    this ?\n      get() :\n      (Object.defineProperty(Object.prototype, '_T_', {\n        configurable: true,\n        get: get\n      }), _T_)\n  );\n  function get() {\n    var global = this || self;\n    global.globalThis = global;\n    delete Object.prototype._T_;\n  }\n}(Object));\nexport default globalThis;\n","import '@ungap/global-this';\n\nexport default function customFetch(\n  endpoint,\n  {\n    body,\n    ...customConfig\n  } = {},\n  {\n    fetch = globalThis.fetch,\n    AbortController = globalThis.AbortController,\n    timeout\n  } = {},\n) {\n  const headers = { 'Content-Type': 'application/json' };\n  let signal = undefined;\n  if (timeout) {\n    ({ signal } = createTimeoutSignal(AbortController, timeout));\n  }\n  const config = {\n    method: body ? 'POST' : 'GET',\n    ...customConfig,\n    headers: {\n      ...headers,\n      ...customConfig.headers,\n    }\n  }\n  if (body && config.headers === 'application/json') {\n    config.body = JSON.stringify(body);\n  } else {\n    config.body = body;\n  }\n  if (signal) {\n    config.signal = signal;\n  }\n\n  return fetch(endpoint, config).then(async (response) => {\n    timeoutSignal.clear(signal);\n    if (response.ok) {\n      return await response.json()\n    } else {\n      const errorMessage = await response.text()\n      return Promise.reject(new Error(errorMessage))\n    }\n  });\n}\n\nfunction createTimeoutSignal(AbortController, timeout) {\n  const controller = new AbortController();\n  const timeoutId = globalThis.setTimeout(() => {\n    controller.abort();\n  }, timeout);\n  return {\n    signal: controller.signal,\n    clear: () => {\n      globalThis.clearTimeout(timeoutId);\n    }\n  };\n}\n"],"names":["Object","get","global","this","self","globalThis","prototype","_T_","defineProperty","configurable","customFetch","endpoint","body","customConfig","fetch","AbortController","timeout","signal","undefined","controller","timeoutId","setTimeout","abort","clear","clearTimeout","createTimeoutSignal","config","method","headers","JSON","stringify","then","response","timeoutSignal","ok","json","text","errorMessage","Promise","reject","Error"],"mappings":"iNAAC,SAAUA,GAST,SAASC,IACP,IAAIC,EAASC,MAAQC,KACrBF,EAAOG,WAAaH,SACbF,EAAOM,UAAUC,IAXJ,iBAAfF,aACLF,KACEF,KACCD,EAAOQ,eAAeR,EAAOM,UAAW,MAAO,CAC9CG,cAAc,EACdR,IAAKA,IACHM,MAPV,CAcEP,gCCZsBU,EACtBC,wBAII,KAFFC,IAAAA,KACGC,uJAMD,SAHFC,MAAAA,aAAQT,WAAWS,YACnBC,gBAAAA,aAAkBV,WAAWU,kBAC7BC,IAAAA,QAIEC,OAASC,EACb,GAAIF,EAAS,OA+Bf,SAA6BD,EAAiBC,GAC5C,IAAMG,EAAa,IAAIJ,EACjBK,EAAYf,WAAWgB,WAAW,WACtCF,EAAWG,SACVN,GACH,MAAO,CACLC,OAAQE,EAAWF,OACnBM,MAAO,WACLlB,WAAWmB,aAAaJ,KAtCZK,CAAoBV,EAAiBC,GAAhDC,IAAAA,OAEL,IAAMS,KACJC,OAAQf,EAAO,OAAS,OACrBC,GACHe,aARc,CAAE,eAAgB,oBAU3Bf,EAAae,WAYpB,OAREF,EAAOd,KADLA,GAA2B,qBAAnBc,EAAOE,QACHC,KAAKC,UAAUlB,GAEfA,EAEZK,IACFS,EAAOT,OAASA,GAGXH,EAAMH,EAAUe,GAAQK,cAAYC,OAEzC,OADAC,cAAcV,MAAMN,GAChBe,EAASE,mBACEF,EAASG,wBAEKH,EAASI,sBAA9BC,GACN,OAAOC,QAAQC,OAAO,IAAIC,MAAMH,MAN7B"}