import { Promises } from "../promise-safe/promise-safe"; import { type SafeValue } from "../values/values"; export const Fetch = { async safe(url: string, init: RequestInit): Promise> { const res = await Promises.safe(() => fetch(url, init)); if (res.error) { return { error: true, data: { message: res.data.message, code: 502, }, }; } if (!res.data.ok) { const message = await Promises.safe(() => res.data.text()); if (message.error) { return message; } return { error: true, data: { message: message.data, code: res.data.status, }, }; } return { error: false, data: res.data }; }, async safeJson( url: string, init: RequestInit ): Promise> { const res = await this.safe(url, init); if (res.error) { return res; } return Promises.safe(() => res.data.json()); }, };