search/app/plugins/typesense-client.ts

25 lines
912 B
TypeScript

/**
* Construye el cliente de Typesense (Configuration + 14 sub-APIs) UNA sola
* vez por carga de página, en vez de reconstruirlo en cada componente que
* llama `useTypesenseApi()` (SearchPanel.vue, entrelineas.vue,
* usePublicationFetch.ts). Se expone vía `nuxtApp.$typesenseApi` (tipado
* automáticamente por Nuxt gracias al `provide` de retorno); el acceso lo
* da el composable `useTypesenseClient()`.
*
* Sin sufijo `.client`: debe correr también en SSR porque los composables
* lo consumen de forma síncrona en `setup()` (que sí se ejecuta en SSR,
* aunque los fetches reales solo disparen en cliente) — con `.client` el
* valor provisto queda `undefined` en el render de servidor y todo revienta.
*/
export default defineNuxtPlugin({
name: 'typesense-client',
setup() {
const api = useTypesenseApi()
return {
provide: {
typesenseApi: api
}
}
}
})