import { defu } from 'defu' export const useApiFetch = (request: string, options: Parameters[1] = {}) => { const config = useRuntimeConfig() const nuxtApp = useNuxtApp() const tokenCookie = useCookie('auth_token', { path: '/' }) const tokenState = useState('auth_token_state') const tokenValue = tokenState.value ?? tokenCookie.value const defaults: Parameters[1] = { baseURL: config.public.api as string, headers: tokenValue ? { Authorization: `Bearer ${tokenValue}` } : {}, } const params = defu(options, defaults) try { if (params?.body && typeof FormData !== 'undefined' && params.body instanceof FormData) { if (params.headers && 'Content-Type' in params.headers) { delete params.headers['Content-Type'] } } } catch (e) {} return $fetch(request, params).catch((err: any) => { const status = err?.statusCode || err?.status || err?.response?.status if (status === 401 || status === 403) { console.error(`[API] Authentication error (${status})`) } throw err }) }