From 0bc736a9b498b953555563f8f4478d2cf259ff89 Mon Sep 17 00:00:00 2001 From: Wonsuk Choi Date: Thu, 3 Sep 2026 13:37:06 +0900 Subject: [PATCH] fix({react,preact,angular}-query): remove erroneous '| undefined' from 'DefinedInitialDataInfiniteOptions' --- ...defined-initial-data-infinite-undefined.md | 7 +++++++ .../functions/infiniteQueryOptions.md | 6 +++--- .../DefinedInitialDataInfiniteOptions.md | 3 +-- .../functions/infiniteQueryOptions.md | 6 +++--- .../DefinedInitialDataInfiniteOptions.md | 3 +-- .../functions/infiniteQueryOptions.md | 6 +++--- .../DefinedInitialDataInfiniteOptions.md | 3 +-- .../infinite-query-options.test-d.ts | 19 +++++++++++++++++++ .../src/infinite-query-options.ts | 1 - .../__tests__/infiniteQueryOptions.test-d.tsx | 18 ++++++++++++++++++ .../preact-query/src/infiniteQueryOptions.ts | 1 - .../__tests__/infiniteQueryOptions.test-d.tsx | 18 ++++++++++++++++++ .../react-query/src/infiniteQueryOptions.ts | 1 - 13 files changed, 74 insertions(+), 18 deletions(-) create mode 100644 .changeset/fix-defined-initial-data-infinite-undefined.md diff --git a/.changeset/fix-defined-initial-data-infinite-undefined.md b/.changeset/fix-defined-initial-data-infinite-undefined.md new file mode 100644 index 00000000000..b088e17eb3c --- /dev/null +++ b/.changeset/fix-defined-initial-data-infinite-undefined.md @@ -0,0 +1,7 @@ +--- +'@tanstack/react-query': patch +'@tanstack/preact-query': patch +'@tanstack/angular-query-experimental': patch +--- + +fix({react,preact,angular}-query): remove erroneous '| undefined' from 'DefinedInitialDataInfiniteOptions' diff --git a/docs/framework/angular/reference/functions/infiniteQueryOptions.md b/docs/framework/angular/reference/functions/infiniteQueryOptions.md index a059fdf8c57..425fe84475b 100644 --- a/docs/framework/angular/reference/functions/infiniteQueryOptions.md +++ b/docs/framework/angular/reference/functions/infiniteQueryOptions.md @@ -17,7 +17,7 @@ The infinite query options to tag with the type from `queryFn`. function infiniteQueryOptions(options): CreateInfiniteQueryOptions & object & QueryKeyWithDataTag, TError>; ``` -Defined in: [infinite-query-options.ts:88](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/infinite-query-options.ts#L88) +Defined in: [infinite-query-options.ts:87](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/infinite-query-options.ts#L87) Allows sharing and re-using infinite query options in a type-safe way. @@ -65,7 +65,7 @@ The tagged infinite query options. function infiniteQueryOptions(options): OmitKeyof, "queryFn"> & object & QueryKeyWithDataTag, TError>; ``` -Defined in: [infinite-query-options.ts:118](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/infinite-query-options.ts#L118) +Defined in: [infinite-query-options.ts:117](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/infinite-query-options.ts#L117) Allows sharing and re-using infinite query options in a type-safe way. @@ -113,7 +113,7 @@ The tagged infinite query options. function infiniteQueryOptions(options): CreateInfiniteQueryOptions & object & QueryKeyWithDataTag, TError>; ``` -Defined in: [infinite-query-options.ts:148](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/infinite-query-options.ts#L148) +Defined in: [infinite-query-options.ts:147](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/infinite-query-options.ts#L147) Allows sharing and re-using infinite query options in a type-safe way. diff --git a/docs/framework/angular/reference/type-aliases/DefinedInitialDataInfiniteOptions.md b/docs/framework/angular/reference/type-aliases/DefinedInitialDataInfiniteOptions.md index 82d94c98551..c4450895509 100644 --- a/docs/framework/angular/reference/type-aliases/DefinedInitialDataInfiniteOptions.md +++ b/docs/framework/angular/reference/type-aliases/DefinedInitialDataInfiniteOptions.md @@ -16,8 +16,7 @@ Defined in: [infinite-query-options.ts:62](https://github.com/TanStack/query/blo ```ts initialData: | NonUndefinedGuard> - | () => NonUndefinedGuard> - | undefined; +| () => NonUndefinedGuard>; ``` ## Type Parameters diff --git a/docs/framework/preact/reference/functions/infiniteQueryOptions.md b/docs/framework/preact/reference/functions/infiniteQueryOptions.md index af2d8e8fcc8..e3ada24c8d8 100644 --- a/docs/framework/preact/reference/functions/infiniteQueryOptions.md +++ b/docs/framework/preact/reference/functions/infiniteQueryOptions.md @@ -9,7 +9,7 @@ title: infiniteQueryOptions function infiniteQueryOptions(options): UseInfiniteQueryOptions & object & QueryKeyWithDataTag, TError>; ``` -Defined in: [preact-query/src/infiniteQueryOptions.ts:171](https://github.com/TanStack/query/blob/main/packages/preact-query/src/infiniteQueryOptions.ts#L171) +Defined in: [preact-query/src/infiniteQueryOptions.ts:170](https://github.com/TanStack/query/blob/main/packages/preact-query/src/infiniteQueryOptions.ts#L170) You can generally pass everything to `infiniteQueryOptions` that you can also pass to `useInfiniteQuery`. These options can be shared across hooks and imperative APIs such as `queryClient.infiniteQuery`. @@ -95,7 +95,7 @@ function Projects() { function infiniteQueryOptions(options): OmitKeyof, "queryFn"> & object & QueryKeyWithDataTag, TError>; ``` -Defined in: [preact-query/src/infiniteQueryOptions.ts:233](https://github.com/TanStack/query/blob/main/packages/preact-query/src/infiniteQueryOptions.ts#L233) +Defined in: [preact-query/src/infiniteQueryOptions.ts:232](https://github.com/TanStack/query/blob/main/packages/preact-query/src/infiniteQueryOptions.ts#L232) You can generally pass everything to `infiniteQueryOptions` that you can also pass to `useInfiniteQuery`. These options can be shared across hooks and imperative APIs such as `queryClient.infiniteQuery`. @@ -178,7 +178,7 @@ function Comments({ postId }: { postId: string }) { function infiniteQueryOptions(options): UseInfiniteQueryOptions & object & QueryKeyWithDataTag, TError>; ``` -Defined in: [preact-query/src/infiniteQueryOptions.ts:295](https://github.com/TanStack/query/blob/main/packages/preact-query/src/infiniteQueryOptions.ts#L295) +Defined in: [preact-query/src/infiniteQueryOptions.ts:294](https://github.com/TanStack/query/blob/main/packages/preact-query/src/infiniteQueryOptions.ts#L294) You can generally pass everything to `infiniteQueryOptions` that you can also pass to `useInfiniteQuery`. These options can be shared across hooks and imperative APIs such as `queryClient.infiniteQuery`. diff --git a/docs/framework/preact/reference/type-aliases/DefinedInitialDataInfiniteOptions.md b/docs/framework/preact/reference/type-aliases/DefinedInitialDataInfiniteOptions.md index 6847a19a143..8eb7c0d0cfd 100644 --- a/docs/framework/preact/reference/type-aliases/DefinedInitialDataInfiniteOptions.md +++ b/docs/framework/preact/reference/type-aliases/DefinedInitialDataInfiniteOptions.md @@ -19,8 +19,7 @@ never `undefined`. ```ts initialData: | NonUndefinedGuard> - | () => NonUndefinedGuard> - | undefined; +| () => NonUndefinedGuard>; ``` If set, this value will be used as the initial data for the query cache (as long as the query hasn't been diff --git a/docs/framework/react/reference/functions/infiniteQueryOptions.md b/docs/framework/react/reference/functions/infiniteQueryOptions.md index f78a3746c8d..6d4ae6a016a 100644 --- a/docs/framework/react/reference/functions/infiniteQueryOptions.md +++ b/docs/framework/react/reference/functions/infiniteQueryOptions.md @@ -9,7 +9,7 @@ title: infiniteQueryOptions function infiniteQueryOptions(options): UseInfiniteQueryOptions & object & QueryKeyWithDataTag, TError>; ``` -Defined in: [react-query/src/infiniteQueryOptions.ts:170](https://github.com/TanStack/query/blob/main/packages/react-query/src/infiniteQueryOptions.ts#L170) +Defined in: [react-query/src/infiniteQueryOptions.ts:169](https://github.com/TanStack/query/blob/main/packages/react-query/src/infiniteQueryOptions.ts#L169) You can generally pass everything to `infiniteQueryOptions` that you can also pass to `useInfiniteQuery`. These options can be shared across hooks and imperative APIs such as `queryClient.infiniteQuery`. @@ -95,7 +95,7 @@ function Projects() { function infiniteQueryOptions(options): OmitKeyof, "queryFn"> & object & QueryKeyWithDataTag, TError>; ``` -Defined in: [react-query/src/infiniteQueryOptions.ts:232](https://github.com/TanStack/query/blob/main/packages/react-query/src/infiniteQueryOptions.ts#L232) +Defined in: [react-query/src/infiniteQueryOptions.ts:231](https://github.com/TanStack/query/blob/main/packages/react-query/src/infiniteQueryOptions.ts#L231) You can generally pass everything to `infiniteQueryOptions` that you can also pass to `useInfiniteQuery`. These options can be shared across hooks and imperative APIs such as `queryClient.infiniteQuery`. @@ -178,7 +178,7 @@ function Comments({ postId }: { postId: string }) { function infiniteQueryOptions(options): UseInfiniteQueryOptions & object & QueryKeyWithDataTag, TError>; ``` -Defined in: [react-query/src/infiniteQueryOptions.ts:294](https://github.com/TanStack/query/blob/main/packages/react-query/src/infiniteQueryOptions.ts#L294) +Defined in: [react-query/src/infiniteQueryOptions.ts:293](https://github.com/TanStack/query/blob/main/packages/react-query/src/infiniteQueryOptions.ts#L293) You can generally pass everything to `infiniteQueryOptions` that you can also pass to `useInfiniteQuery`. These options can be shared across hooks and imperative APIs such as `queryClient.infiniteQuery`. diff --git a/docs/framework/react/reference/type-aliases/DefinedInitialDataInfiniteOptions.md b/docs/framework/react/reference/type-aliases/DefinedInitialDataInfiniteOptions.md index 1721394a2ec..09ac7fbccbe 100644 --- a/docs/framework/react/reference/type-aliases/DefinedInitialDataInfiniteOptions.md +++ b/docs/framework/react/reference/type-aliases/DefinedInitialDataInfiniteOptions.md @@ -19,8 +19,7 @@ never `undefined`. ```ts initialData: | NonUndefinedGuard> - | () => NonUndefinedGuard> - | undefined; +| () => NonUndefinedGuard>; ``` If set, this value will be used as the initial data for the query cache (as long as the query hasn't been 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 e9f41ed3b60..8fff0984b9a 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 @@ -268,6 +268,25 @@ describe('infiniteQueryOptions', () => { >() }) + it('keeps data possibly undefined when initialData is a ternary that can be undefined', () => { + const key = queryKey() + const hasInitialData = false + const options = infiniteQueryOptions({ + queryKey: key, + queryFn: () => Promise.resolve({ example: true }), + initialData: hasInitialData + ? { pages: [{ example: true }], pageParams: [1] } + : undefined, + getNextPageParam: () => 1, + initialPageParam: 1, + }) + + const { data } = injectInfiniteQuery(() => options) + expectTypeOf(data()).toEqualTypeOf< + InfiniteData<{ example: boolean }, unknown> | undefined + >() + }) + it('should return a custom query key type', () => { type MyQueryKey = [Array, { type: 'foo' }] diff --git a/packages/angular-query-experimental/src/infinite-query-options.ts b/packages/angular-query-experimental/src/infinite-query-options.ts index b09b194c6b9..43a9a7c8ff9 100644 --- a/packages/angular-query-experimental/src/infinite-query-options.ts +++ b/packages/angular-query-experimental/src/infinite-query-options.ts @@ -75,7 +75,6 @@ export type DefinedInitialDataInfiniteOptions< initialData: | NonUndefinedGuard> | (() => NonUndefinedGuard>) - | undefined } /** diff --git a/packages/preact-query/src/__tests__/infiniteQueryOptions.test-d.tsx b/packages/preact-query/src/__tests__/infiniteQueryOptions.test-d.tsx index 563e7a69114..0f30e2ff493 100644 --- a/packages/preact-query/src/__tests__/infiniteQueryOptions.test-d.tsx +++ b/packages/preact-query/src/__tests__/infiniteQueryOptions.test-d.tsx @@ -276,6 +276,24 @@ describe('infiniteQueryOptions', () => { >() }) + it('keeps data possibly undefined when initialData is a ternary that can be undefined', () => { + const hasInitialData = false + const options = infiniteQueryOptions({ + queryKey: queryKey(), + queryFn: () => Promise.resolve({ example: true }), + initialData: hasInitialData + ? { pages: [{ example: true }], pageParams: [1] } + : undefined, + getNextPageParam: () => 1, + initialPageParam: 1, + }) + + const { data } = useInfiniteQuery(options) + expectTypeOf(data).toEqualTypeOf< + InfiniteData<{ example: boolean }, unknown> | undefined + >() + }) + it('should return a custom query key type', () => { type MyQueryKey = [Array, { type: 'foo' }] diff --git a/packages/preact-query/src/infiniteQueryOptions.ts b/packages/preact-query/src/infiniteQueryOptions.ts index 7e419b6d5e1..063ea7a4555 100644 --- a/packages/preact-query/src/infiniteQueryOptions.ts +++ b/packages/preact-query/src/infiniteQueryOptions.ts @@ -124,7 +124,6 @@ export type DefinedInitialDataInfiniteOptions< initialData: | NonUndefinedGuard> | (() => NonUndefinedGuard>) - | undefined } /** diff --git a/packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx b/packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx index b0d233703af..c0f72bfaf60 100644 --- a/packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx +++ b/packages/react-query/src/__tests__/infiniteQueryOptions.test-d.tsx @@ -315,6 +315,24 @@ describe('infiniteQueryOptions', () => { >() }) + it('keeps data possibly undefined when initialData is a ternary that can be undefined', () => { + const hasInitialData = false + const options = infiniteQueryOptions({ + queryKey: queryKey(), + queryFn: () => Promise.resolve({ example: true }), + initialData: hasInitialData + ? { pages: [{ example: true }], pageParams: [1] } + : undefined, + getNextPageParam: () => 1, + initialPageParam: 1, + }) + + const { data } = useInfiniteQuery(options) + expectTypeOf(data).toEqualTypeOf< + InfiniteData<{ example: boolean }, unknown> | undefined + >() + }) + it('should return a custom query key type', () => { type MyQueryKey = [Array, { type: 'foo' }] diff --git a/packages/react-query/src/infiniteQueryOptions.ts b/packages/react-query/src/infiniteQueryOptions.ts index 10898979d7b..f2470b779a8 100644 --- a/packages/react-query/src/infiniteQueryOptions.ts +++ b/packages/react-query/src/infiniteQueryOptions.ts @@ -123,7 +123,6 @@ export type DefinedInitialDataInfiniteOptions< initialData: | NonUndefinedGuard> | (() => NonUndefinedGuard>) - | undefined } /**