{"version":3,"sources":["../src/promise-safe/promise-safe.ts","../src/fetch-safe/fetch-safe.ts"],"names":[],"mappings":";;;AAGO,IAAM,QAAW,GAAA;AAAA,EACtB,MAAM,KAAQ,OAAkD,EAAA;AAC9D,IAAI,IAAA;AACF,MAAM,MAAA,MAAA,GAAS,MAAM,OAAQ,EAAA;AAE7B,MAAA,OAAO,EAAE,KAAA,EAAO,KAAO,EAAA,IAAA,EAAM,MAAO,EAAA;AAAA,aAC7B,CAAG,EAAA;AACV,MAAO,OAAA;AAAA,QACL,KAAO,EAAA,IAAA;AAAA,QACP,IAAA,EAAM,IAAI,UAAW,CAAA,CAAA,YAAa,QAAQ,CAAE,CAAA,OAAA,GAAU,KAAK,CAAG,EAAA;AAAA,UAC5D,WAAa,EAAA,CAAA,YAAa,KAAQ,GAAA,CAAA,CAAE,SAAS,IAAO,GAAA;AAAA,SACrD;AAAA,OACH;AAAA;AACF;AAEJ,CAAA;;;ACVO,IAAM,gBAAmB,GAAA;AAAA,EAC9B,MAAM,IAA6B,EAAA;AACjC,IAAA,IAAI,6BAAM,KAAO,EAAA;AACf,MAAO,OAAA;AAAA,QACL,aAAA,EAAe,WAAW,IAAK,CAAA;AAAA,OACjC;AAAA;AAEF,IAAA,OAAO,EAAC;AAAA;AAEZ;AAEO,IAAM,KAAQ,GAAA;AAAA,EACnB,MAAM,IAAK,CAAA,GAAA,EAAa,IAAiD,EAAA;AACvE,IAAM,MAAA,GAAA,GAAM,MAAM,QAAS,CAAA,IAAA,CAAK,MAAM,KAAM,CAAA,GAAA,EAAK,IAAI,CAAC,CAAA;AAEtD,IAAA,IAAI,IAAI,KAAO,EAAA;AACb,MAAO,OAAA;AAAA,QACL,KAAO,EAAA,IAAA;AAAA,QACP,IAAM,EAAA,IAAI,UAAW,CAAA,GAAA,CAAI,KAAK,OAAS,EAAA;AAAA,UACrC,IAAM,EAAA;AAAA,SACP;AAAA,OACH;AAAA;AAGF,IAAI,IAAA,CAAC,GAAI,CAAA,IAAA,CAAK,EAAI,EAAA;AAChB,MAAM,MAAA,OAAA,GAAU,MAAM,QAAS,CAAA,IAAA,CAAK,MAAM,GAAI,CAAA,IAAA,CAAK,MAAM,CAAA;AAEzD,MAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,QAAO,OAAA,OAAA;AAAA;AAGT,MAAO,OAAA;AAAA,QACL,KAAO,EAAA,IAAA;AAAA,QACP,IAAM,EAAA,IAAI,UAAW,CAAA,OAAA,CAAQ,IAAM,EAAA;AAAA,UACjC,IAAA,EAAM,IAAI,IAAK,CAAA;AAAA,SAChB;AAAA,OACH;AAAA;AAGF,IAAA,OAAO,EAAE,KAAA,EAAO,KAAO,EAAA,IAAA,EAAM,IAAI,IAAK,EAAA;AAAA,GACxC;AAAA,EAEA,MAAM,QACJ,CAAA,GAAA,EACA,IACuB,EAAA;AACvB,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAErC,IAAA,IAAI,IAAI,KAAO,EAAA;AACb,MAAO,OAAA,GAAA;AAAA;AAGT,IAAA,OAAO,SAAS,IAAK,CAAA,MAAM,GAAI,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA,GAC5C;AAAA,EAEA,MAAM,QAAS,CAAA,GAAA,EAAa,IAA+C,EAAA;AACzE,IAAA,MAAM,GAAM,GAAA,MAAM,IAAK,CAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAErC,IAAA,IAAI,IAAI,KAAO,EAAA;AACb,MAAO,OAAA,GAAA;AAAA;AAGT,IAAA,OAAO,SAAS,IAAK,CAAA,MAAM,GAAI,CAAA,IAAA,CAAK,MAAM,CAAA;AAAA;AAE9C","file":"chunk-2VOCE3TZ.mjs","sourcesContent":["import { CodexError } from \"../errors/errors\";\nimport type { SafeValue } from \"../values/values\";\n\nexport const Promises = {\n  async safe<T>(promise: () => Promise<T>): Promise<SafeValue<T>> {\n    try {\n      const result = await promise();\n\n      return { error: false, data: result };\n    } catch (e) {\n      return {\n        error: true,\n        data: new CodexError(e instanceof Error ? e.message : \"\" + e, {\n          sourceStack: e instanceof Error ? e.stack || null : null,\n        }),\n      };\n    }\n  },\n};\n","import { CodexError } from \"../errors/errors\";\nimport { Promises } from \"../promise-safe/promise-safe\";\nimport { type SafeValue } from \"../values/values\";\n\nexport type FetchAuth = {\n  basic?: string;\n};\n\nexport const FetchAuthBuilder = {\n  build(auth: FetchAuth | undefined) {\n    if (auth?.basic) {\n      return {\n        Authorization: \"Basic \" + auth.basic,\n      };\n    }\n    return {};\n  },\n};\n\nexport const Fetch = {\n  async safe(url: string, init: RequestInit): Promise<SafeValue<Response>> {\n    const res = await Promises.safe(() => fetch(url, init));\n\n    if (res.error) {\n      return {\n        error: true,\n        data: new CodexError(res.data.message, {\n          code: 502,\n        }),\n      };\n    }\n\n    if (!res.data.ok) {\n      const message = await Promises.safe(() => res.data.text());\n\n      if (message.error) {\n        return message;\n      }\n\n      return {\n        error: true,\n        data: new CodexError(message.data, {\n          code: res.data.status,\n        }),\n      };\n    }\n\n    return { error: false, data: res.data };\n  },\n\n  async safeJson<T extends Object>(\n    url: string,\n    init: RequestInit\n  ): Promise<SafeValue<T>> {\n    const res = await this.safe(url, init);\n\n    if (res.error) {\n      return res;\n    }\n\n    return Promises.safe(() => res.data.json());\n  },\n\n  async safeText(url: string, init: RequestInit): Promise<SafeValue<string>> {\n    const res = await this.safe(url, init);\n\n    if (res.error) {\n      return res;\n    }\n\n    return Promises.safe(() => res.data.text());\n  },\n};\n"]}