import { $fetch } from 'ofetch'

/**
 * Appel HTTP vers un service EXTERNE (hors API Lesstime) : pas de cookie de
 * session, pas d'enveloppe Hydra, timeout court. Utilisé par l'autocomplétion
 * d'adresse branchée sur la Base Adresse Nationale (api-adresse.data.gouv.fr).
 * Ne jamais passer par `useApi()` pour ces domaines tiers.
 */
export interface HttpExternalOptions {
    /** Paramètres de query string (encodés par ofetch). */
    query?: Record<string, string | number | undefined>
    /** Timeout en millisecondes avant abandon (défaut 5000). */
    timeoutMs?: number
}

export async function httpExternal<T>(
    url: string,
    opts: HttpExternalOptions = {},
): Promise<T> {
    return $fetch<T>(url, {
        query: opts.query,
        credentials: 'omit',
        retry: 0,
        timeout: opts.timeoutMs ?? 5000,
    })
}
