diff --git a/packages/vue-query-nuxt/src/module.ts b/packages/vue-query-nuxt/src/module.ts index 2b70e03d..e04283ed 100644 --- a/packages/vue-query-nuxt/src/module.ts +++ b/packages/vue-query-nuxt/src/module.ts @@ -56,7 +56,7 @@ export default defineNuxtModule({ else { logger.info("No vue-query.config.ts file found.") } - return "export function pluginHook() { return { pluginReturn: null, vueQueryPluginOptions: null}}" + return "export function pluginHook() { return {} }" } }) diff --git a/packages/vue-query-nuxt/src/runtime/plugin.ts b/packages/vue-query-nuxt/src/runtime/plugin.ts index a6562c9a..7bd4a5d6 100644 --- a/packages/vue-query-nuxt/src/runtime/plugin.ts +++ b/packages/vue-query-nuxt/src/runtime/plugin.ts @@ -10,17 +10,18 @@ export default defineNuxtPlugin((nuxt) => { const queryClient = new QueryClient(queryClientOptions) // The plugin hook is replaced by the user provided vue-query.config.ts and allow advanced modifications - const { pluginReturn, vueQueryPluginOptions: hookOptions } = pluginHook({ queryClient, nuxt }) + const { pluginReturn, vueQueryPluginOptions: hookOptions, hydrateOptions, dehydrateOptions } = pluginHook({ queryClient, nuxt }) nuxt.vueApp.use(VueQueryPlugin, { queryClient, ...vueQueryPluginOptions, ...hookOptions }) if (import.meta.server) { nuxt.hooks.hook("app:rendered", () => { - vueQueryState.value = dehydrate(queryClient) + vueQueryState.value = dehydrate(queryClient, dehydrateOptions) }) } - if (import.meta.client) hydrate(queryClient, vueQueryState.value) + if (import.meta.client) hydrate(queryClient, vueQueryState.value, hydrateOptions) - return pluginReturn + if (pluginReturn !== undefined) return pluginReturn + return; }) diff --git a/packages/vue-query-nuxt/src/runtime/types.ts b/packages/vue-query-nuxt/src/runtime/types.ts index 66369801..5d137f7c 100644 --- a/packages/vue-query-nuxt/src/runtime/types.ts +++ b/packages/vue-query-nuxt/src/runtime/types.ts @@ -1,11 +1,7 @@ -import type { NuxtApp } from "nuxt/app" -import type { QueryClient, VueQueryPluginOptions } from "@tanstack/vue-query" +import type { NuxtApp, Plugin } from "nuxt/app" +import type { DehydrateOptions, HydrateOptions, QueryClient, VueQueryPluginOptions } from "@tanstack/vue-query" -export type NuxtPluginReturn = -| void -| Promise -| Promise<{ provide?: Record | undefined }> -| { provide?: Record | undefined } +export type NuxtPluginReturn = ReturnType // NuxtApp & _NuxtApp are different so we use any export interface PluginHookParameters { @@ -13,4 +9,9 @@ export interface PluginHookParameters { queryClient: QueryClient } -export interface PluginHookReturn { pluginReturn: NuxtPluginReturn; vueQueryPluginOptions?: VueQueryPluginOptions } +export interface PluginHookReturn { + pluginReturn?: NuxtPluginReturn, + vueQueryPluginOptions?: VueQueryPluginOptions, + hydrateOptions?: HydrateOptions, + dehydrateOptions?: DehydrateOptions +} diff --git a/packages/vue-query-nuxt/src/runtime/virtual:pluginHook.ts b/packages/vue-query-nuxt/src/runtime/virtual:pluginHook.ts index dc2ee619..2ce92681 100644 --- a/packages/vue-query-nuxt/src/runtime/virtual:pluginHook.ts +++ b/packages/vue-query-nuxt/src/runtime/virtual:pluginHook.ts @@ -6,5 +6,5 @@ import type { PluginHookParameters, PluginHookReturn } from "./types" // eslint-disable-next-line unused-imports/no-unused-vars export function pluginHook(pluginHookParameters: PluginHookParameters): PluginHookReturn { - return { pluginReturn: {}, vueQueryPluginOptions: {} } + return {} }