import type { $Fetch } from "nitropack"; /** * Base API client composable. * Wraps $fetch with the configured API base URL from runtime config. * Provides typed GET, POST, PUT, DELETE helpers. */ export function useApi() { const config = useRuntimeConfig(); const apiBase = config.public.apiBase; /** * Typed $fetch wrapper bound to API base URL. */ const client: $Fetch = $fetch.create({ baseURL: apiBase, headers: { "Content-Type": "application/json", }, }); async function get(url: string, params?: Record): Promise { return client(url, { method: "GET", params: params as Record | undefined, }); } async function post(url: string, body?: unknown): Promise { return client(url, { method: "POST", body, }); } async function put(url: string, body?: unknown): Promise { return client(url, { method: "PUT", body, }); } async function del(url: string): Promise { return client(url, { method: "DELETE", }); } return { apiBase, client, get, post, put, del, }; }