diff --git a/.changeset/svelte-query-persister-options.md b/.changeset/svelte-query-persister-options.md new file mode 100644 index 00000000000..b0a95409d86 --- /dev/null +++ b/.changeset/svelte-query-persister-options.md @@ -0,0 +1,5 @@ +--- +'@tanstack/svelte-query': patch +--- + +Fix createQuery types to allow overriding query persisters per query. diff --git a/packages/svelte-query/src/types.ts b/packages/svelte-query/src/types.ts index 9a64d10dc3f..0faf4e3f0d1 100644 --- a/packages/svelte-query/src/types.ts +++ b/packages/svelte-query/src/types.ts @@ -16,6 +16,7 @@ import type { QueryKey, QueryObserverOptions, QueryObserverResult, + QueryPersister, } from '@tanstack/query-core' export type Accessor = () => T @@ -41,7 +42,12 @@ export type CreateQueryOptions< TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, -> = CreateBaseQueryOptions +> = OmitKeyof< + CreateBaseQueryOptions, + 'persister' +> & { + persister?: QueryPersister +} /** Result from createQuery */ export type CreateQueryResult< diff --git a/packages/svelte-query/tests/createQuery/createQuery.test-d.ts b/packages/svelte-query/tests/createQuery/createQuery.test-d.ts index 8b6590b3347..7826845b70e 100644 --- a/packages/svelte-query/tests/createQuery/createQuery.test-d.ts +++ b/packages/svelte-query/tests/createQuery/createQuery.test-d.ts @@ -1,8 +1,29 @@ import { describe, expectTypeOf, it } from 'vitest' import { queryKey } from '@tanstack/query-test-utils' import { createQuery, queryOptions } from '../../src/index.js' +import type { + Query, + QueryFunctionContext, + QueryKey, +} from '@tanstack/query-core' describe('createQuery', () => { + it('should allow a per-query persister', () => { + const persister = undefined as unknown as ( + queryFn: (context: QueryFunctionContext) => T | Promise, + context: QueryFunctionContext, + query: Query, + ) => Promise + + const { data } = createQuery(() => ({ + queryKey: ['todos'], + queryFn: () => Promise.resolve(['todo']), + persister, + })) + + expectTypeOf(data).toEqualTypeOf | undefined>() + }) + describe('initialData', () => { describe('Config object overload', () => { it('TData should always be defined when initialData is provided as an object', () => {