diff --git a/README.md b/README.md index baa0d7d4..4b549768 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ - Ensure you have the latest LTS version of Node.js installed - Run `corepack enable` - Install dependencies using `pnpm install` +- Build the module and prepare the playground `pnpm dev:prepare` - Start playground with `pnpm dev` ## License diff --git a/docs/content/1.getting-started/2.configuration.md b/docs/content/1.getting-started/2.configuration.md index 076be71a..12286901 100644 --- a/docs/content/1.getting-started/2.configuration.md +++ b/docs/content/1.getting-started/2.configuration.md @@ -16,6 +16,7 @@ export default defineNuxtConfig({ authHeader: 'Authorization', tokenStorage: 'cookie', proxyCookies: true, + queryDeduplication: true, clients: {} } }) diff --git a/src/module.ts b/src/module.ts index 78f4c4ce..46cd076d 100644 --- a/src/module.ts +++ b/src/module.ts @@ -38,7 +38,8 @@ export default defineNuxtModule({ secure: process.env.NODE_ENV === 'production', sameSite: 'lax' }, - clientAwareness: false + clientAwareness: false, + queryDeduplication: true }, async setup (options, nuxt) { if (!options.clients || !Object.keys(options.clients).length) { @@ -102,6 +103,7 @@ export default defineNuxtModule({ ' export const NuxtApollo: {', ' clients: Record', ' clientAwareness: boolean', + ' queryDeduplication: boolean', ' proxyCookies: boolean', ' cookieAttributes: ClientConfig[\'cookieAttributes\']', ' }', @@ -115,8 +117,9 @@ export default defineNuxtModule({ 'export const NuxtApollo = {', ` proxyCookies: ${options.proxyCookies},`, ` clientAwareness: ${options.clientAwareness},`, + ` queryDeduplication: ${options.queryDeduplication},`, ` cookieAttributes: ${serializeConfig(options.cookieAttributes)},`, - ` clients: ${serializeConfig(clients)}`, + ` clients: ${serializeConfig(clients)}` '}' ].join('\n') }) diff --git a/src/runtime/plugin.ts b/src/runtime/plugin.ts index 9263dbc1..dfe4e1d2 100644 --- a/src/runtime/plugin.ts +++ b/src/runtime/plugin.ts @@ -124,7 +124,8 @@ export default defineNuxtPlugin((nuxtApp) => { ? { ssrMode: true } : { ssrForceFetchDelay: 100 }), connectToDevTools: clientConfig.connectToDevTools || false, - defaultOptions: clientConfig?.defaultOptions + defaultOptions: clientConfig?.defaultOptions, + queryDeduplication: NuxtApollo.queryDeduplication }) if (!clients?.default && !NuxtApollo?.clients?.default && key === Object.keys(NuxtApollo.clients)[0]) { diff --git a/src/types.d.ts b/src/types.d.ts index f9d41f72..5859039f 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -164,4 +164,12 @@ export interface NuxtApolloConfig { * @default false */ clientAwareness?: boolean + + /** + * If false, Apollo Client sends every created query to the server, + * even if a completely identical query is already in flight. + * @type {boolean} + * @default true + **/ + queryDeduplication?: boolean; }