diff --git a/.changeset/fix-query-options-declaration-emit.md b/.changeset/fix-query-options-declaration-emit.md new file mode 100644 index 00000000000..fc700263aa9 --- /dev/null +++ b/.changeset/fix-query-options-declaration-emit.md @@ -0,0 +1,11 @@ +--- +'@tanstack/query-core': patch +'@tanstack/angular-query-experimental': patch +'@tanstack/preact-query': patch +'@tanstack/react-query': patch +'@tanstack/solid-query': patch +'@tanstack/svelte-query': patch +'@tanstack/vue-query': patch +--- + +Fix `queryOptions` and `infiniteQueryOptions` return types so exported inferred options can be emitted in declaration files without leaking internal data tag symbols. diff --git a/packages/angular-query-experimental/src/__tests__/infinite-query-options.test-d.ts b/packages/angular-query-experimental/src/__tests__/infinite-query-options.test-d.ts index d50b8c6b814..2ee3a263ad8 100644 --- a/packages/angular-query-experimental/src/__tests__/infinite-query-options.test-d.ts +++ b/packages/angular-query-experimental/src/__tests__/infinite-query-options.test-d.ts @@ -10,6 +10,15 @@ import type { InitialDataFunction, } from '@tanstack/query-core' +// Regression test for exported infiniteQueryOptions inference under declaration emit. +// TypeScript should be able to name the return type without expanding the +// internal data tag symbols into the consumer's .d.ts output. +export const exportedInfiniteQueryOptions = infiniteQueryOptions({ + queryKey: ['invalid'], + getNextPageParam: () => 1, + initialPageParam: 1, +}) + describe('infiniteQueryOptions', () => { it('should not allow excess properties', () => { const key = queryKey() diff --git a/packages/angular-query-experimental/src/__tests__/query-options.test-d.ts b/packages/angular-query-experimental/src/__tests__/query-options.test-d.ts index 8642cf07d72..7078e68daa8 100644 --- a/packages/angular-query-experimental/src/__tests__/query-options.test-d.ts +++ b/packages/angular-query-experimental/src/__tests__/query-options.test-d.ts @@ -3,6 +3,13 @@ import { queryKey } from '@tanstack/query-test-utils' import { QueryClient, dataTagSymbol, injectQuery, queryOptions } from '..' import type { Signal } from '@angular/core' +// Regression test for exported queryOptions inference under declaration emit. +// TypeScript should be able to name the return type without expanding the +// internal data tag symbols into the consumer's .d.ts output. +export const exportedQueryOptions = queryOptions({ + queryKey: ['invalid'], +}) + describe('queryOptions', () => { it('should not allow excess properties', () => { expectTypeOf(queryOptions).parameter(0).not.toHaveProperty('stallTime') diff --git a/packages/angular-query-experimental/src/infinite-query-options.ts b/packages/angular-query-experimental/src/infinite-query-options.ts index fc18c0e94dc..a93f05bd228 100644 --- a/packages/angular-query-experimental/src/infinite-query-options.ts +++ b/packages/angular-query-experimental/src/infinite-query-options.ts @@ -1,5 +1,5 @@ import type { - DataTag, + QueryKeyWithDataTag, DefaultError, InfiniteData, InitialDataFunction, @@ -105,9 +105,8 @@ export function infiniteQueryOptions< TData, TQueryKey, TPageParam -> & { - queryKey: DataTag, TError> -} +> & + QueryKeyWithDataTag, TError> /** * Allows to share and re-use infinite query options in a type-safe way. @@ -136,9 +135,8 @@ export function infiniteQueryOptions< TData, TQueryKey, TPageParam -> & { - queryKey: DataTag, TError> -} +> & + QueryKeyWithDataTag, TError> /** * Allows to share and re-use infinite query options in a type-safe way. @@ -167,9 +165,8 @@ export function infiniteQueryOptions< TData, TQueryKey, TPageParam -> & { - queryKey: DataTag, TError> -} +> & + QueryKeyWithDataTag, TError> /** * Allows to share and re-use infinite query options in a type-safe way. diff --git a/packages/angular-query-experimental/src/query-options.ts b/packages/angular-query-experimental/src/query-options.ts index 069472b9032..1dacf0c2220 100644 --- a/packages/angular-query-experimental/src/query-options.ts +++ b/packages/angular-query-experimental/src/query-options.ts @@ -1,5 +1,5 @@ import type { - DataTag, + QueryKeyWithDataTag, DefaultError, InitialDataFunction, NonUndefinedGuard, @@ -80,9 +80,8 @@ export function queryOptions< TQueryKey extends QueryKey = QueryKey, >( options: DefinedInitialDataOptions, -): DefinedInitialDataOptions & { - queryKey: DataTag -} +): DefinedInitialDataOptions & + QueryKeyWithDataTag /** * Allows to share and re-use query options in a type-safe way. @@ -112,9 +111,8 @@ export function queryOptions< TQueryKey extends QueryKey = QueryKey, >( options: UnusedSkipTokenOptions, -): UnusedSkipTokenOptions & { - queryKey: DataTag -} +): UnusedSkipTokenOptions & + QueryKeyWithDataTag /** * Allows to share and re-use query options in a type-safe way. @@ -144,9 +142,8 @@ export function queryOptions< TQueryKey extends QueryKey = QueryKey, >( options: UndefinedInitialDataOptions, -): UndefinedInitialDataOptions & { - queryKey: DataTag -} +): UndefinedInitialDataOptions & + QueryKeyWithDataTag /** * Allows to share and re-use query options in a type-safe way. diff --git a/packages/preact-query/src/__tests__/infiniteQueryOptions.test-d.tsx b/packages/preact-query/src/__tests__/infiniteQueryOptions.test-d.tsx index 6c1cd389249..094482e8e23 100644 --- a/packages/preact-query/src/__tests__/infiniteQueryOptions.test-d.tsx +++ b/packages/preact-query/src/__tests__/infiniteQueryOptions.test-d.tsx @@ -12,6 +12,15 @@ import { useInfiniteQuery } from '../useInfiniteQuery' import { useQuery } from '../useQuery' import { useSuspenseInfiniteQuery } from '../useSuspenseInfiniteQuery' +// Regression test for exported infiniteQueryOptions inference under declaration emit. +// TypeScript should be able to name the return type without expanding the +// internal data tag symbols into the consumer's .d.ts output. +export const exportedInfiniteQueryOptions = infiniteQueryOptions({ + queryKey: ['invalid'], + getNextPageParam: () => 1, + initialPageParam: 1, +}) + describe('infiniteQueryOptions', () => { it('should not allow excess properties', () => { assertType( diff --git a/packages/preact-query/src/__tests__/queryOptions.test-d.tsx b/packages/preact-query/src/__tests__/queryOptions.test-d.tsx index 6f0d34c6bac..d0b1b7c166b 100644 --- a/packages/preact-query/src/__tests__/queryOptions.test-d.tsx +++ b/packages/preact-query/src/__tests__/queryOptions.test-d.tsx @@ -18,6 +18,13 @@ import { useQueries } from '../useQueries' import { useQuery } from '../useQuery' import { useSuspenseQuery } from '../useSuspenseQuery' +// Regression test for exported queryOptions inference under declaration emit. +// TypeScript should be able to name the return type without expanding the +// internal data tag symbols into the consumer's .d.ts output. +export const exportedQueryOptions = queryOptions({ + queryKey: ['invalid'], +}) + describe('queryOptions', () => { it('should not allow excess properties', () => { assertType( diff --git a/packages/preact-query/src/infiniteQueryOptions.ts b/packages/preact-query/src/infiniteQueryOptions.ts index 6e1e0be3bc7..3a112d9c66c 100644 --- a/packages/preact-query/src/infiniteQueryOptions.ts +++ b/packages/preact-query/src/infiniteQueryOptions.ts @@ -1,5 +1,5 @@ import type { - DataTag, + QueryKeyWithDataTag, DefaultError, InfiniteData, InitialDataFunction, @@ -93,9 +93,8 @@ export function infiniteQueryOptions< TData, TQueryKey, TPageParam -> & { - queryKey: DataTag, TError> -} +> & + QueryKeyWithDataTag, TError> export function infiniteQueryOptions< TQueryFnData, @@ -117,9 +116,8 @@ export function infiniteQueryOptions< TData, TQueryKey, TPageParam -> & { - queryKey: DataTag, TError> -} +> & + QueryKeyWithDataTag, TError> export function infiniteQueryOptions< TQueryFnData, @@ -141,9 +139,8 @@ export function infiniteQueryOptions< TData, TQueryKey, TPageParam -> & { - queryKey: DataTag, TError> -} +> & + QueryKeyWithDataTag, TError> export function infiniteQueryOptions(options: unknown) { return options diff --git a/packages/preact-query/src/queryOptions.ts b/packages/preact-query/src/queryOptions.ts index bdf19e97584..26b5a1246ba 100644 --- a/packages/preact-query/src/queryOptions.ts +++ b/packages/preact-query/src/queryOptions.ts @@ -1,5 +1,5 @@ import type { - DataTag, + QueryKeyWithDataTag, DefaultError, InitialDataFunction, NonUndefinedGuard, @@ -57,9 +57,8 @@ export function queryOptions< TQueryKey extends QueryKey = QueryKey, >( options: DefinedInitialDataOptions, -): DefinedInitialDataOptions & { - queryKey: DataTag -} +): DefinedInitialDataOptions & + QueryKeyWithDataTag export function queryOptions< TQueryFnData = unknown, @@ -68,9 +67,8 @@ export function queryOptions< TQueryKey extends QueryKey = QueryKey, >( options: UnusedSkipTokenOptions, -): UnusedSkipTokenOptions & { - queryKey: DataTag -} +): UnusedSkipTokenOptions & + QueryKeyWithDataTag export function queryOptions< TQueryFnData = unknown, @@ -79,9 +77,8 @@ export function queryOptions< TQueryKey extends QueryKey = QueryKey, >( options: UndefinedInitialDataOptions, -): UndefinedInitialDataOptions & { - queryKey: DataTag -} +): UndefinedInitialDataOptions & + QueryKeyWithDataTag export function queryOptions(options: unknown) { return options diff --git a/packages/query-core/src/types.ts b/packages/query-core/src/types.ts index b2e80f2a144..b49c27294fb 100644 --- a/packages/query-core/src/types.ts +++ b/packages/query-core/src/types.ts @@ -79,6 +79,14 @@ export type DataTag< [dataTagErrorSymbol]: TError } +export type QueryKeyWithDataTag< + TQueryKey extends QueryKey = QueryKey, + TQueryFnData = unknown, + TError = DefaultError, +> = { + queryKey: DataTag +} + export type InferDataFromTag = TTaggedQueryKey extends DataTag ? TaggedValue diff --git a/packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx b/packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx index 2a224818d64..7a90e5f1bbe 100644 --- a/packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx +++ b/packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx @@ -11,6 +11,15 @@ import type { InitialDataFunction, } from '@tanstack/query-core' +// Regression test for exported infiniteQueryOptions inference under declaration emit. +// TypeScript should be able to name the return type without expanding the +// internal data tag symbols into the consumer's .d.ts output. +export const exportedInfiniteQueryOptions = infiniteQueryOptions({ + queryKey: ['invalid'], + getNextPageParam: () => 1, + initialPageParam: 1, +}) + describe('infiniteQueryOptions', () => { it('should not allow excess properties', () => { assertType( diff --git a/packages/react-query/src/__tests__/queryOptions.test-d.tsx b/packages/react-query/src/__tests__/queryOptions.test-d.tsx index 14f92a8da3e..d210e2cfdae 100644 --- a/packages/react-query/src/__tests__/queryOptions.test-d.tsx +++ b/packages/react-query/src/__tests__/queryOptions.test-d.tsx @@ -18,6 +18,13 @@ import type { QueryPersister, } from '@tanstack/query-core' +// Regression test for exported queryOptions inference under declaration emit. +// TypeScript should be able to name the return type without expanding the +// internal data tag symbols into the consumer's .d.ts output. +export const exportedQueryOptions = queryOptions({ + queryKey: ['invalid'], +}) + describe('queryOptions', () => { it('should not allow excess properties', () => { assertType( diff --git a/packages/react-query/src/infiniteQueryOptions.ts b/packages/react-query/src/infiniteQueryOptions.ts index 5e8c371a59f..3f0fb732da3 100644 --- a/packages/react-query/src/infiniteQueryOptions.ts +++ b/packages/react-query/src/infiniteQueryOptions.ts @@ -1,5 +1,5 @@ import type { - DataTag, + QueryKeyWithDataTag, DefaultError, InfiniteData, InitialDataFunction, @@ -92,9 +92,8 @@ export function infiniteQueryOptions< TData, TQueryKey, TPageParam -> & { - queryKey: DataTag, TError> -} +> & + QueryKeyWithDataTag, TError> export function infiniteQueryOptions< TQueryFnData, @@ -116,9 +115,8 @@ export function infiniteQueryOptions< TData, TQueryKey, TPageParam -> & { - queryKey: DataTag, TError> -} +> & + QueryKeyWithDataTag, TError> export function infiniteQueryOptions< TQueryFnData, @@ -140,9 +138,8 @@ export function infiniteQueryOptions< TData, TQueryKey, TPageParam -> & { - queryKey: DataTag, TError> -} +> & + QueryKeyWithDataTag, TError> export function infiniteQueryOptions(options: unknown) { return options diff --git a/packages/react-query/src/queryOptions.ts b/packages/react-query/src/queryOptions.ts index 644ac26788b..76830ed1ed8 100644 --- a/packages/react-query/src/queryOptions.ts +++ b/packages/react-query/src/queryOptions.ts @@ -1,5 +1,5 @@ import type { - DataTag, + QueryKeyWithDataTag, DefaultError, InitialDataFunction, NonUndefinedGuard, @@ -56,9 +56,8 @@ export function queryOptions< TQueryKey extends QueryKey = QueryKey, >( options: DefinedInitialDataOptions, -): DefinedInitialDataOptions & { - queryKey: DataTag -} +): DefinedInitialDataOptions & + QueryKeyWithDataTag export function queryOptions< TQueryFnData = unknown, @@ -67,9 +66,8 @@ export function queryOptions< TQueryKey extends QueryKey = QueryKey, >( options: UnusedSkipTokenOptions, -): UnusedSkipTokenOptions & { - queryKey: DataTag -} +): UnusedSkipTokenOptions & + QueryKeyWithDataTag export function queryOptions< TQueryFnData = unknown, @@ -78,9 +76,8 @@ export function queryOptions< TQueryKey extends QueryKey = QueryKey, >( options: UndefinedInitialDataOptions, -): UndefinedInitialDataOptions & { - queryKey: DataTag -} +): UndefinedInitialDataOptions & + QueryKeyWithDataTag export function queryOptions(options: unknown) { return options diff --git a/packages/solid-query/src/__tests__/infiniteQueryOptions.test-d.tsx b/packages/solid-query/src/__tests__/infiniteQueryOptions.test-d.tsx index 5d212f7edf3..8dfa164847f 100644 --- a/packages/solid-query/src/__tests__/infiniteQueryOptions.test-d.tsx +++ b/packages/solid-query/src/__tests__/infiniteQueryOptions.test-d.tsx @@ -9,6 +9,15 @@ import type { UndefinedInitialDataInfiniteOptions, } from '../infiniteQueryOptions' +// Regression test for exported infiniteQueryOptions inference under declaration emit. +// TypeScript should be able to name the return type without expanding the +// internal data tag symbols into the consumer's .d.ts output. +export const exportedInfiniteQueryOptions = infiniteQueryOptions({ + queryKey: ['invalid'], + getNextPageParam: () => 1, + initialPageParam: 1, +}) + describe('infiniteQueryOptions', () => { it('should infer defined types', () => { const options = infiniteQueryOptions({ diff --git a/packages/solid-query/src/__tests__/queryOptions.test-d.tsx b/packages/solid-query/src/__tests__/queryOptions.test-d.tsx index 299536290e6..adb88b35f36 100644 --- a/packages/solid-query/src/__tests__/queryOptions.test-d.tsx +++ b/packages/solid-query/src/__tests__/queryOptions.test-d.tsx @@ -9,6 +9,13 @@ import { queryKey } from '@tanstack/query-test-utils' import { useQuery } from '../useQuery' import { queryOptions } from '../queryOptions' +// Regression test for exported queryOptions inference under declaration emit. +// TypeScript should be able to name the return type without expanding the +// internal data tag symbols into the consumer's .d.ts output. +export const exportedQueryOptions = queryOptions({ + queryKey: ['invalid'], +}) + describe('queryOptions', () => { it('should not allow excess properties', () => { assertType( diff --git a/packages/solid-query/src/infiniteQueryOptions.ts b/packages/solid-query/src/infiniteQueryOptions.ts index 6f4885d999f..bcdcf354dae 100644 --- a/packages/solid-query/src/infiniteQueryOptions.ts +++ b/packages/solid-query/src/infiniteQueryOptions.ts @@ -1,5 +1,5 @@ import type { - DataTag, + QueryKeyWithDataTag, DefaultError, InfiniteData, NonUndefinedGuard, @@ -58,9 +58,8 @@ export function infiniteQueryOptions< TQueryKey, TPageParam > -> & { - queryKey: DataTag> -} +> & + QueryKeyWithDataTag, TError> export function infiniteQueryOptions< TQueryFnData, TError = DefaultError, @@ -85,9 +84,8 @@ export function infiniteQueryOptions< TQueryKey, TPageParam > -> & { - queryKey: DataTag> -} +> & + QueryKeyWithDataTag, TError> export function infiniteQueryOptions(options: unknown) { return options diff --git a/packages/solid-query/src/queryOptions.ts b/packages/solid-query/src/queryOptions.ts index fea9db1e1f3..55e16871eab 100644 --- a/packages/solid-query/src/queryOptions.ts +++ b/packages/solid-query/src/queryOptions.ts @@ -1,4 +1,8 @@ -import type { DataTag, DefaultError, QueryKey } from '@tanstack/query-core' +import type { + DefaultError, + QueryKey, + QueryKeyWithDataTag, +} from '@tanstack/query-core' import type { QueryOptions } from './types' import type { Accessor } from 'solid-js' @@ -35,9 +39,8 @@ export function queryOptions< >, ): ReturnType< UndefinedInitialDataOptions -> & { - queryKey: DataTag -} +> & + QueryKeyWithDataTag export function queryOptions< TQueryFnData = unknown, @@ -50,9 +53,8 @@ export function queryOptions< >, ): ReturnType< DefinedInitialDataOptions -> & { - queryKey: DataTag -} +> & + QueryKeyWithDataTag export function queryOptions(options: unknown) { return options diff --git a/packages/svelte-query/src/queryOptions.ts b/packages/svelte-query/src/queryOptions.ts index e1a44be6317..400458047d4 100644 --- a/packages/svelte-query/src/queryOptions.ts +++ b/packages/svelte-query/src/queryOptions.ts @@ -1,5 +1,5 @@ import type { - DataTag, + QueryKeyWithDataTag, DefaultError, InitialDataFunction, NonUndefinedGuard, @@ -34,9 +34,8 @@ export function queryOptions< TQueryKey extends QueryKey = QueryKey, >( options: DefinedInitialDataOptions, -): DefinedInitialDataOptions & { - queryKey: DataTag -} +): DefinedInitialDataOptions & + QueryKeyWithDataTag export function queryOptions< TQueryFnData = unknown, @@ -45,9 +44,8 @@ export function queryOptions< TQueryKey extends QueryKey = QueryKey, >( options: UndefinedInitialDataOptions, -): UndefinedInitialDataOptions & { - queryKey: DataTag -} +): UndefinedInitialDataOptions & + QueryKeyWithDataTag export function queryOptions(options: unknown) { return options diff --git a/packages/svelte-query/tests/queryOptions.test-d.ts b/packages/svelte-query/tests/queryOptions.test-d.ts index 033f841f79f..1bfa59af716 100644 --- a/packages/svelte-query/tests/queryOptions.test-d.ts +++ b/packages/svelte-query/tests/queryOptions.test-d.ts @@ -9,6 +9,13 @@ import { queryKey } from '@tanstack/query-test-utils' import { createQueries, queryOptions } from '../src/index.js' import type { QueryObserverResult } from '@tanstack/query-core' +// Regression test for exported queryOptions inference under declaration emit. +// TypeScript should be able to name the return type without expanding the +// internal data tag symbols into the consumer's .d.ts output. +export const exportedQueryOptions = queryOptions({ + queryKey: ['invalid'], +}) + describe('queryOptions', () => { it('should not allow excess properties', () => { const key = queryKey() diff --git a/packages/vue-query/src/__tests__/infiniteQueryOptions.test-d.ts b/packages/vue-query/src/__tests__/infiniteQueryOptions.test-d.ts index 2b15cb7bfed..49b5897b388 100644 --- a/packages/vue-query/src/__tests__/infiniteQueryOptions.test-d.ts +++ b/packages/vue-query/src/__tests__/infiniteQueryOptions.test-d.ts @@ -7,6 +7,15 @@ import { QueryClient } from '../queryClient' import { useInfiniteQuery } from '../useInfiniteQuery' import type { InfiniteData } from '@tanstack/query-core' +// Regression test for exported infiniteQueryOptions inference under declaration emit. +// TypeScript should be able to name the return type without expanding the +// internal data tag symbols into the consumer's .d.ts output. +export const exportedInfiniteQueryOptions = infiniteQueryOptions({ + queryKey: ['invalid'], + getNextPageParam: () => 1, + initialPageParam: 1, +}) + describe('infiniteQueryOptions', () => { it('should not allow excess properties', () => { const key = queryKey() diff --git a/packages/vue-query/src/__tests__/queryOptions.test-d.ts b/packages/vue-query/src/__tests__/queryOptions.test-d.ts index a3e8c6d0d41..2a9361452e7 100644 --- a/packages/vue-query/src/__tests__/queryOptions.test-d.ts +++ b/packages/vue-query/src/__tests__/queryOptions.test-d.ts @@ -6,6 +6,17 @@ import { QueryClient } from '../queryClient' import { queryOptions } from '../queryOptions' import { useQuery } from '../useQuery' +// Regression test for exported queryOptions inference under declaration emit. +// TypeScript should be able to name the return type without expanding the +// internal data tag symbols into the consumer's .d.ts output. +export const exportedQueryOptions = queryOptions({ + queryKey: ['invalid'], +}) + +export const exportedQueryOptionsGetter = queryOptions(() => ({ + queryKey: ['invalid'], +})) + describe('queryOptions', () => { it('should not allow excess properties', () => { const key = queryKey() diff --git a/packages/vue-query/src/infiniteQueryOptions.ts b/packages/vue-query/src/infiniteQueryOptions.ts index adab774aa10..75810d1adb6 100644 --- a/packages/vue-query/src/infiniteQueryOptions.ts +++ b/packages/vue-query/src/infiniteQueryOptions.ts @@ -1,5 +1,5 @@ import type { - DataTag, + QueryKeyWithDataTag, DefaultError, InfiniteData, NonUndefinedGuard, @@ -61,9 +61,8 @@ export function infiniteQueryOptions< TData, TQueryKey, TPageParam -> & { - queryKey: DataTag, TError> -} +> & + QueryKeyWithDataTag, TError> export function infiniteQueryOptions< TQueryFnData, @@ -85,9 +84,8 @@ export function infiniteQueryOptions< TData, TQueryKey, TPageParam -> & { - queryKey: DataTag, TError> -} +> & + QueryKeyWithDataTag, TError> export function infiniteQueryOptions(options: unknown) { return options diff --git a/packages/vue-query/src/queryOptions.ts b/packages/vue-query/src/queryOptions.ts index 37e7f22b4f5..1b57899f03c 100644 --- a/packages/vue-query/src/queryOptions.ts +++ b/packages/vue-query/src/queryOptions.ts @@ -1,6 +1,6 @@ import type { DeepUnwrapRef, MaybeRefOrGetter, ShallowOption } from './types' import type { - DataTag, + QueryKeyWithDataTag, DefaultError, InitialDataFunction, NonUndefinedGuard, @@ -65,6 +65,22 @@ export type DefinedInitialQueryOptions< | (() => NonUndefinedGuard) } +export type UndefinedInitialQueryOptionsWithDataTag< + TQueryFnData = unknown, + TError = DefaultError, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +> = UndefinedInitialQueryOptions & + QueryKeyWithDataTag + +export type DefinedInitialQueryOptionsWithDataTag< + TQueryFnData = unknown, + TError = DefaultError, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +> = DefinedInitialQueryOptions & + QueryKeyWithDataTag + export function queryOptions< TQueryFnData = unknown, TError = DefaultError, @@ -72,9 +88,7 @@ export function queryOptions< TQueryKey extends QueryKey = QueryKey, >( options: DefinedInitialQueryOptions, -): DefinedInitialQueryOptions & { - queryKey: DataTag -} +): DefinedInitialQueryOptionsWithDataTag export function queryOptions< TQueryFnData = unknown, @@ -88,9 +102,12 @@ export function queryOptions< TData, TQueryKey >, -): () => DefinedInitialQueryOptions & { - queryKey: DataTag -} +): () => DefinedInitialQueryOptionsWithDataTag< + TQueryFnData, + TError, + TData, + TQueryKey +> export function queryOptions< TQueryFnData = unknown, @@ -99,9 +116,12 @@ export function queryOptions< TQueryKey extends QueryKey = QueryKey, >( options: UndefinedInitialQueryOptions, -): UndefinedInitialQueryOptions & { - queryKey: DataTag -} +): UndefinedInitialQueryOptionsWithDataTag< + TQueryFnData, + TError, + TData, + TQueryKey +> export function queryOptions< TQueryFnData = unknown, @@ -115,14 +135,12 @@ export function queryOptions< TData, TQueryKey >, -): () => UndefinedInitialQueryOptions< +): () => UndefinedInitialQueryOptionsWithDataTag< TQueryFnData, TError, TData, TQueryKey -> & { - queryKey: DataTag -} +> export function queryOptions(options: unknown) { return options