@tanstack/solid-query 5.40.1 → 5.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/dev.cjs CHANGED
@@ -166,7 +166,7 @@ function createBaseQuery(options, Observer, queryClient) {
166
166
  if (typeof v === "function") {
167
167
  v = v(unwrapped);
168
168
  }
169
- if (v.hydrationData) {
169
+ if (v?.hydrationData) {
170
170
  const { hydrationData, ...rest } = v;
171
171
  v = rest;
172
172
  }
@@ -322,6 +322,9 @@ function useIsFetching(filters, queryClient) {
322
322
  solidJs.onCleanup(unsubscribe);
323
323
  return fetches;
324
324
  }
325
+ function infiniteQueryOptions(options) {
326
+ return options;
327
+ }
325
328
  function createInfiniteQuery(options, queryClient) {
326
329
  return createBaseQuery(
327
330
  solidJs.createMemo(() => options()),
@@ -529,6 +532,7 @@ exports.createInfiniteQuery = createInfiniteQuery;
529
532
  exports.createMutation = createMutation;
530
533
  exports.createQueries = createQueries;
531
534
  exports.createQuery = createQuery;
535
+ exports.infiniteQueryOptions = infiniteQueryOptions;
532
536
  exports.queryOptions = queryOptions;
533
537
  exports.useIsFetching = useIsFetching;
534
538
  exports.useIsMutating = useIsMutating;
package/build/dev.js CHANGED
@@ -165,7 +165,7 @@ function createBaseQuery(options, Observer, queryClient) {
165
165
  if (typeof v === "function") {
166
166
  v = v(unwrapped);
167
167
  }
168
- if (v.hydrationData) {
168
+ if (v?.hydrationData) {
169
169
  const { hydrationData, ...rest } = v;
170
170
  v = rest;
171
171
  }
@@ -321,6 +321,9 @@ function useIsFetching(filters, queryClient) {
321
321
  onCleanup(unsubscribe);
322
322
  return fetches;
323
323
  }
324
+ function infiniteQueryOptions(options) {
325
+ return options;
326
+ }
324
327
  function createInfiniteQuery(options, queryClient) {
325
328
  return createBaseQuery(
326
329
  createMemo(() => options()),
@@ -524,4 +527,4 @@ function createQueries(queriesOptions, queryClient) {
524
527
  return proxyState;
525
528
  }
526
529
 
527
- export { IsRestoringProvider, QueryClient, QueryClientContext, QueryClientProvider, createInfiniteQuery, createMutation, createQueries, createQuery, queryOptions, useIsFetching, useIsMutating, useIsRestoring, useMutationState, useQueryClient };
530
+ export { IsRestoringProvider, QueryClient, QueryClientContext, QueryClientProvider, createInfiniteQuery, createMutation, createQueries, createQuery, infiniteQueryOptions, queryOptions, useIsFetching, useIsMutating, useIsRestoring, useMutationState, useQueryClient };
package/build/index.cjs CHANGED
@@ -157,7 +157,7 @@ function createBaseQuery(options, Observer, queryClient) {
157
157
  if (typeof v === "function") {
158
158
  v = v(unwrapped);
159
159
  }
160
- if (v.hydrationData) {
160
+ if (v?.hydrationData) {
161
161
  const { hydrationData, ...rest } = v;
162
162
  v = rest;
163
163
  }
@@ -313,6 +313,9 @@ function useIsFetching(filters, queryClient) {
313
313
  solidJs.onCleanup(unsubscribe);
314
314
  return fetches;
315
315
  }
316
+ function infiniteQueryOptions(options) {
317
+ return options;
318
+ }
316
319
  function createInfiniteQuery(options, queryClient) {
317
320
  return createBaseQuery(
318
321
  solidJs.createMemo(() => options()),
@@ -520,6 +523,7 @@ exports.createInfiniteQuery = createInfiniteQuery;
520
523
  exports.createMutation = createMutation;
521
524
  exports.createQueries = createQueries;
522
525
  exports.createQuery = createQuery;
526
+ exports.infiniteQueryOptions = infiniteQueryOptions;
523
527
  exports.queryOptions = queryOptions;
524
528
  exports.useIsFetching = useIsFetching;
525
529
  exports.useIsMutating = useIsMutating;
package/build/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { DefaultError, QueryKey, OmitKeyof, QueryObserverOptions as QueryObserverOptions$1, InfiniteQueryObserverOptions as InfiniteQueryObserverOptions$1, DefaultOptions as DefaultOptions$1, QueryClientConfig as QueryClientConfig$1, QueryClient as QueryClient$1, QueryObserverResult, DefinedQueryObserverResult, InfiniteQueryObserverResult, MutationObserverOptions, MutateFunction, MutationObserverResult, DataTag, QueryFilters, InfiniteData, MutationFilters, MutationState, Mutation, QueriesPlaceholderDataFunction, QueryFunction, ThrowOnError } from '@tanstack/query-core';
1
+ import { DefaultError, QueryKey, OmitKeyof, QueryObserverOptions as QueryObserverOptions$1, InfiniteQueryObserverOptions as InfiniteQueryObserverOptions$1, DefaultOptions as DefaultOptions$1, QueryClientConfig as QueryClientConfig$1, QueryClient as QueryClient$1, QueryObserverResult, DefinedQueryObserverResult, InfiniteQueryObserverResult, DefinedInfiniteQueryObserverResult, MutationObserverOptions, MutateFunction, MutationObserverResult, DataTag, QueryFilters, InfiniteData, MutationFilters, MutationState, Mutation, QueriesPlaceholderDataFunction, QueryFunction, ThrowOnError } from '@tanstack/query-core';
2
2
  export * from '@tanstack/query-core';
3
3
  import * as solid_js from 'solid-js';
4
4
  import { JSX, Accessor } from 'solid-js';
@@ -72,6 +72,7 @@ interface SolidInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultErro
72
72
  }
73
73
  type CreateInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> = FunctionedParams<SolidInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey, TPageParam>>;
74
74
  type CreateInfiniteQueryResult<TData = unknown, TError = DefaultError> = InfiniteQueryObserverResult<TData, TError>;
75
+ type DefinedCreateInfiniteQueryResult<TData = unknown, TError = DefaultError> = DefinedInfiniteQueryObserverResult<TData, TError>;
75
76
  interface SolidMutationOptions<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> extends OmitKeyof<MutationObserverOptions<TData, TError, TVariables, TContext>, '_defaulted'> {
76
77
  }
77
78
  type CreateMutationOptions<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> = FunctionedParams<SolidMutationOptions<TData, TError, TVariables, TContext>>;
@@ -112,7 +113,22 @@ declare const QueryClientProvider: (props: QueryClientProviderProps) => JSX.Elem
112
113
 
113
114
  declare function useIsFetching(filters?: Accessor<QueryFilters>, queryClient?: Accessor<QueryClient>): Accessor<number>;
114
115
 
115
- declare function createInfiniteQuery<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, queryClient?: Accessor<QueryClient>): CreateInfiniteQueryResult<TData, TError>;
116
+ type UndefinedInitialDataInfiniteOptions<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> = FunctionedParams<SolidInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey, TPageParam> & {
117
+ initialData?: undefined;
118
+ }>;
119
+ type NonUndefinedGuard<T> = T extends undefined ? never : T;
120
+ type DefinedInitialDataInfiniteOptions<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> = FunctionedParams<SolidInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey, TPageParam> & {
121
+ initialData: NonUndefinedGuard<InfiniteData<TQueryFnData, TPageParam>> | (() => NonUndefinedGuard<InfiniteData<TQueryFnData, TPageParam>>);
122
+ }>;
123
+ declare function infiniteQueryOptions<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: ReturnType<DefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>>): ReturnType<DefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>> & {
124
+ queryKey: DataTag<TQueryKey, InfiniteData<TQueryFnData>>;
125
+ };
126
+ declare function infiniteQueryOptions<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: ReturnType<UndefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>>): ReturnType<UndefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>> & {
127
+ queryKey: DataTag<TQueryKey, InfiniteData<TQueryFnData>>;
128
+ };
129
+
130
+ declare function createInfiniteQuery<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: DefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, queryClient?: Accessor<QueryClient>): DefinedCreateInfiniteQueryResult<TData, TError>;
131
+ declare function createInfiniteQuery<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: UndefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, queryClient?: Accessor<QueryClient>): CreateInfiniteQueryResult<TData, TError>;
116
132
 
117
133
  declare function createMutation<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown>(options: CreateMutationOptions<TData, TError, TVariables, TContext>, queryClient?: Accessor<QueryClient>): CreateMutationResult<TData, TError, TVariables, TContext>;
118
134
 
@@ -198,4 +214,4 @@ declare function createQueries<T extends Array<any>, TCombinedResult extends Que
198
214
  declare const useIsRestoring: () => Accessor<boolean>;
199
215
  declare const IsRestoringProvider: solid_js.ContextProviderComponent<Accessor<boolean>>;
200
216
 
201
- export { type CreateBaseMutationResult, type CreateBaseQueryOptions, type CreateBaseQueryResult, type CreateInfiniteQueryOptions, type CreateInfiniteQueryResult, type CreateMutateAsyncFunction, type CreateMutateFunction, type CreateMutationOptions, type CreateMutationResult, type CreateQueryOptions, type CreateQueryResult, type DefaultOptions, type DefinedCreateBaseQueryResult, type DefinedCreateQueryResult, type FunctionedParams, type InfiniteQueryObserverOptions, IsRestoringProvider, QueryClient, type QueryClientConfig, QueryClientContext, QueryClientProvider, type QueryClientProviderProps, type QueryObserverOptions, type SolidInfiniteQueryOptions, type SolidMutationOptions, type SolidQueryOptions, createInfiniteQuery, createMutation, createQueries, createQuery, queryOptions, useIsFetching, useIsMutating, useIsRestoring, useMutationState, useQueryClient };
217
+ export { type CreateBaseMutationResult, type CreateBaseQueryOptions, type CreateBaseQueryResult, type CreateInfiniteQueryOptions, type CreateInfiniteQueryResult, type CreateMutateAsyncFunction, type CreateMutateFunction, type CreateMutationOptions, type CreateMutationResult, type CreateQueryOptions, type CreateQueryResult, type DefaultOptions, type DefinedCreateBaseQueryResult, type DefinedCreateInfiniteQueryResult, type DefinedCreateQueryResult, type DefinedInitialDataInfiniteOptions, type FunctionedParams, type InfiniteQueryObserverOptions, IsRestoringProvider, QueryClient, type QueryClientConfig, QueryClientContext, QueryClientProvider, type QueryClientProviderProps, type QueryObserverOptions, type SolidInfiniteQueryOptions, type SolidMutationOptions, type SolidQueryOptions, type UndefinedInitialDataInfiniteOptions, createInfiniteQuery, createMutation, createQueries, createQuery, infiniteQueryOptions, queryOptions, useIsFetching, useIsMutating, useIsRestoring, useMutationState, useQueryClient };
package/build/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { DefaultError, QueryKey, OmitKeyof, QueryObserverOptions as QueryObserverOptions$1, InfiniteQueryObserverOptions as InfiniteQueryObserverOptions$1, DefaultOptions as DefaultOptions$1, QueryClientConfig as QueryClientConfig$1, QueryClient as QueryClient$1, QueryObserverResult, DefinedQueryObserverResult, InfiniteQueryObserverResult, MutationObserverOptions, MutateFunction, MutationObserverResult, DataTag, QueryFilters, InfiniteData, MutationFilters, MutationState, Mutation, QueriesPlaceholderDataFunction, QueryFunction, ThrowOnError } from '@tanstack/query-core';
1
+ import { DefaultError, QueryKey, OmitKeyof, QueryObserverOptions as QueryObserverOptions$1, InfiniteQueryObserverOptions as InfiniteQueryObserverOptions$1, DefaultOptions as DefaultOptions$1, QueryClientConfig as QueryClientConfig$1, QueryClient as QueryClient$1, QueryObserverResult, DefinedQueryObserverResult, InfiniteQueryObserverResult, DefinedInfiniteQueryObserverResult, MutationObserverOptions, MutateFunction, MutationObserverResult, DataTag, QueryFilters, InfiniteData, MutationFilters, MutationState, Mutation, QueriesPlaceholderDataFunction, QueryFunction, ThrowOnError } from '@tanstack/query-core';
2
2
  export * from '@tanstack/query-core';
3
3
  import * as solid_js from 'solid-js';
4
4
  import { JSX, Accessor } from 'solid-js';
@@ -72,6 +72,7 @@ interface SolidInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultErro
72
72
  }
73
73
  type CreateInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> = FunctionedParams<SolidInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey, TPageParam>>;
74
74
  type CreateInfiniteQueryResult<TData = unknown, TError = DefaultError> = InfiniteQueryObserverResult<TData, TError>;
75
+ type DefinedCreateInfiniteQueryResult<TData = unknown, TError = DefaultError> = DefinedInfiniteQueryObserverResult<TData, TError>;
75
76
  interface SolidMutationOptions<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> extends OmitKeyof<MutationObserverOptions<TData, TError, TVariables, TContext>, '_defaulted'> {
76
77
  }
77
78
  type CreateMutationOptions<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> = FunctionedParams<SolidMutationOptions<TData, TError, TVariables, TContext>>;
@@ -112,7 +113,22 @@ declare const QueryClientProvider: (props: QueryClientProviderProps) => JSX.Elem
112
113
 
113
114
  declare function useIsFetching(filters?: Accessor<QueryFilters>, queryClient?: Accessor<QueryClient>): Accessor<number>;
114
115
 
115
- declare function createInfiniteQuery<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, queryClient?: Accessor<QueryClient>): CreateInfiniteQueryResult<TData, TError>;
116
+ type UndefinedInitialDataInfiniteOptions<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> = FunctionedParams<SolidInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey, TPageParam> & {
117
+ initialData?: undefined;
118
+ }>;
119
+ type NonUndefinedGuard<T> = T extends undefined ? never : T;
120
+ type DefinedInitialDataInfiniteOptions<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> = FunctionedParams<SolidInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey, TPageParam> & {
121
+ initialData: NonUndefinedGuard<InfiniteData<TQueryFnData, TPageParam>> | (() => NonUndefinedGuard<InfiniteData<TQueryFnData, TPageParam>>);
122
+ }>;
123
+ declare function infiniteQueryOptions<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: ReturnType<DefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>>): ReturnType<DefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>> & {
124
+ queryKey: DataTag<TQueryKey, InfiniteData<TQueryFnData>>;
125
+ };
126
+ declare function infiniteQueryOptions<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: ReturnType<UndefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>>): ReturnType<UndefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>> & {
127
+ queryKey: DataTag<TQueryKey, InfiniteData<TQueryFnData>>;
128
+ };
129
+
130
+ declare function createInfiniteQuery<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: DefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, queryClient?: Accessor<QueryClient>): DefinedCreateInfiniteQueryResult<TData, TError>;
131
+ declare function createInfiniteQuery<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: UndefinedInitialDataInfiniteOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>, queryClient?: Accessor<QueryClient>): CreateInfiniteQueryResult<TData, TError>;
116
132
 
117
133
  declare function createMutation<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown>(options: CreateMutationOptions<TData, TError, TVariables, TContext>, queryClient?: Accessor<QueryClient>): CreateMutationResult<TData, TError, TVariables, TContext>;
118
134
 
@@ -198,4 +214,4 @@ declare function createQueries<T extends Array<any>, TCombinedResult extends Que
198
214
  declare const useIsRestoring: () => Accessor<boolean>;
199
215
  declare const IsRestoringProvider: solid_js.ContextProviderComponent<Accessor<boolean>>;
200
216
 
201
- export { type CreateBaseMutationResult, type CreateBaseQueryOptions, type CreateBaseQueryResult, type CreateInfiniteQueryOptions, type CreateInfiniteQueryResult, type CreateMutateAsyncFunction, type CreateMutateFunction, type CreateMutationOptions, type CreateMutationResult, type CreateQueryOptions, type CreateQueryResult, type DefaultOptions, type DefinedCreateBaseQueryResult, type DefinedCreateQueryResult, type FunctionedParams, type InfiniteQueryObserverOptions, IsRestoringProvider, QueryClient, type QueryClientConfig, QueryClientContext, QueryClientProvider, type QueryClientProviderProps, type QueryObserverOptions, type SolidInfiniteQueryOptions, type SolidMutationOptions, type SolidQueryOptions, createInfiniteQuery, createMutation, createQueries, createQuery, queryOptions, useIsFetching, useIsMutating, useIsRestoring, useMutationState, useQueryClient };
217
+ export { type CreateBaseMutationResult, type CreateBaseQueryOptions, type CreateBaseQueryResult, type CreateInfiniteQueryOptions, type CreateInfiniteQueryResult, type CreateMutateAsyncFunction, type CreateMutateFunction, type CreateMutationOptions, type CreateMutationResult, type CreateQueryOptions, type CreateQueryResult, type DefaultOptions, type DefinedCreateBaseQueryResult, type DefinedCreateInfiniteQueryResult, type DefinedCreateQueryResult, type DefinedInitialDataInfiniteOptions, type FunctionedParams, type InfiniteQueryObserverOptions, IsRestoringProvider, QueryClient, type QueryClientConfig, QueryClientContext, QueryClientProvider, type QueryClientProviderProps, type QueryObserverOptions, type SolidInfiniteQueryOptions, type SolidMutationOptions, type SolidQueryOptions, type UndefinedInitialDataInfiniteOptions, createInfiniteQuery, createMutation, createQueries, createQuery, infiniteQueryOptions, queryOptions, useIsFetching, useIsMutating, useIsRestoring, useMutationState, useQueryClient };
package/build/index.js CHANGED
@@ -156,7 +156,7 @@ function createBaseQuery(options, Observer, queryClient) {
156
156
  if (typeof v === "function") {
157
157
  v = v(unwrapped);
158
158
  }
159
- if (v.hydrationData) {
159
+ if (v?.hydrationData) {
160
160
  const { hydrationData, ...rest } = v;
161
161
  v = rest;
162
162
  }
@@ -312,6 +312,9 @@ function useIsFetching(filters, queryClient) {
312
312
  onCleanup(unsubscribe);
313
313
  return fetches;
314
314
  }
315
+ function infiniteQueryOptions(options) {
316
+ return options;
317
+ }
315
318
  function createInfiniteQuery(options, queryClient) {
316
319
  return createBaseQuery(
317
320
  createMemo(() => options()),
@@ -515,4 +518,4 @@ function createQueries(queriesOptions, queryClient) {
515
518
  return proxyState;
516
519
  }
517
520
 
518
- export { IsRestoringProvider, QueryClient, QueryClientContext, QueryClientProvider, createInfiniteQuery, createMutation, createQueries, createQuery, queryOptions, useIsFetching, useIsMutating, useIsRestoring, useMutationState, useQueryClient };
521
+ export { IsRestoringProvider, QueryClient, QueryClientContext, QueryClientProvider, createInfiniteQuery, createMutation, createQueries, createQuery, infiniteQueryOptions, queryOptions, useIsFetching, useIsMutating, useIsRestoring, useMutationState, useQueryClient };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/solid-query",
3
- "version": "5.40.1",
3
+ "version": "5.42.0",
4
4
  "description": "Primitives for managing, caching and syncing asynchronous and remote data in Solid",
5
5
  "author": "tannerlinsley",
6
6
  "license": "MIT",
@@ -0,0 +1,109 @@
1
+ import { describe } from 'node:test'
2
+ import { expectTypeOf, it } from 'vitest'
3
+ import { type InfiniteData, dataTagSymbol } from '@tanstack/query-core'
4
+ import {
5
+ createInfiniteQuery,
6
+ infiniteQueryOptions,
7
+ } from '../createInfiniteQuery'
8
+ import type {
9
+ DefinedInitialDataInfiniteOptions,
10
+ UndefinedInitialDataInfiniteOptions,
11
+ } from '../createInfiniteQuery'
12
+
13
+ const doNotRun = (_callback: () => void) => {}
14
+
15
+ describe('infiniteQueryOptions', () => {
16
+ it('should infer defined types', () => {
17
+ const options = infiniteQueryOptions({
18
+ getNextPageParam: () => 10,
19
+ queryKey: ['key'],
20
+ queryFn: () => ({ wow: true }),
21
+ initialData: {
22
+ pageParams: [undefined],
23
+ pages: [{ wow: true }],
24
+ },
25
+ initialPageParam: 0,
26
+ })
27
+
28
+ doNotRun(() => {
29
+ expectTypeOf<
30
+ InfiniteData<
31
+ {
32
+ wow: boolean
33
+ },
34
+ unknown
35
+ >
36
+ >(createInfiniteQuery(() => options).data)
37
+
38
+ expectTypeOf<
39
+ ReturnType<
40
+ DefinedInitialDataInfiniteOptions<
41
+ {
42
+ wow: boolean
43
+ },
44
+ Error,
45
+ InfiniteData<
46
+ {
47
+ wow: boolean
48
+ },
49
+ unknown
50
+ >,
51
+ Array<string>,
52
+ number | undefined
53
+ >
54
+ >
55
+ >(options)
56
+
57
+ expectTypeOf(options.queryKey[dataTagSymbol]).toEqualTypeOf<
58
+ InfiniteData<{ wow: boolean }>
59
+ >()
60
+ })
61
+ })
62
+
63
+ it('should work without defined types', () => {
64
+ const options = infiniteQueryOptions({
65
+ getNextPageParam: () => undefined,
66
+ queryKey: ['key'],
67
+ queryFn: () => ({ wow: true }),
68
+ initialPageParam: 0,
69
+ })
70
+
71
+ doNotRun(() => {
72
+ expectTypeOf<
73
+ () =>
74
+ | InfiniteData<
75
+ {
76
+ wow: boolean
77
+ },
78
+ unknown
79
+ >
80
+ | undefined
81
+ >(() => createInfiniteQuery(() => options).data)
82
+
83
+ expectTypeOf<
84
+ ReturnType<
85
+ UndefinedInitialDataInfiniteOptions<
86
+ {
87
+ wow: boolean
88
+ },
89
+ Error,
90
+ InfiniteData<
91
+ {
92
+ wow: boolean
93
+ },
94
+ unknown
95
+ >,
96
+ Array<string>,
97
+ number
98
+ >
99
+ >
100
+ >(options)
101
+
102
+ expectTypeOf(options.queryKey[dataTagSymbol]).toEqualTypeOf<
103
+ InfiniteData<{
104
+ wow: boolean
105
+ }>
106
+ >()
107
+ })
108
+ })
109
+ })
@@ -15,6 +15,7 @@ import {
15
15
  QueryCache,
16
16
  QueryClientProvider,
17
17
  createInfiniteQuery,
18
+ infiniteQueryOptions,
18
19
  keepPreviousData,
19
20
  } from '..'
20
21
  import {
@@ -2056,4 +2057,30 @@ describe('useInfiniteQuery', () => {
2056
2057
 
2057
2058
  await waitFor(() => rendered.getByText('Status: custom client'))
2058
2059
  })
2060
+
2061
+ it('should work with infiniteQueryOptions', async () => {
2062
+ const key = queryKey()
2063
+ const options = infiniteQueryOptions({
2064
+ getNextPageParam: () => undefined,
2065
+ queryKey: key,
2066
+ initialPageParam: 0,
2067
+ queryFn: () => Promise.resolve(220),
2068
+ })
2069
+
2070
+ function Page() {
2071
+ const state = createInfiniteQuery(
2072
+ () => options,
2073
+ () => queryClient,
2074
+ )
2075
+ return (
2076
+ <div>
2077
+ <h1>Status: {state.data?.pages[0]}</h1>
2078
+ </div>
2079
+ )
2080
+ }
2081
+
2082
+ const rendered = render(() => <Page />)
2083
+
2084
+ await waitFor(() => rendered.getByText('Status: 220'))
2085
+ })
2059
2086
  })
@@ -208,7 +208,7 @@ export function createBaseQuery<
208
208
  }
209
209
  // Hydration data exists on first load after SSR,
210
210
  // and should be removed from the observer result
211
- if (v.hydrationData) {
211
+ if (v?.hydrationData) {
212
212
  const { hydrationData, ...rest } = v
213
213
  v = rest
214
214
  }
@@ -2,6 +2,7 @@ import { InfiniteQueryObserver } from '@tanstack/query-core'
2
2
  import { createMemo } from 'solid-js'
3
3
  import { createBaseQuery } from './createBaseQuery'
4
4
  import type {
5
+ DataTag,
5
6
  DefaultError,
6
7
  InfiniteData,
7
8
  QueryKey,
@@ -11,9 +12,146 @@ import type { QueryClient } from './QueryClient'
11
12
  import type {
12
13
  CreateInfiniteQueryOptions,
13
14
  CreateInfiniteQueryResult,
15
+ DefinedCreateInfiniteQueryResult,
16
+ FunctionedParams,
17
+ SolidInfiniteQueryOptions,
14
18
  } from './types'
15
19
  import type { Accessor } from 'solid-js'
16
20
 
21
+ export type UndefinedInitialDataInfiniteOptions<
22
+ TQueryFnData,
23
+ TError = DefaultError,
24
+ TData = InfiniteData<TQueryFnData>,
25
+ TQueryKey extends QueryKey = QueryKey,
26
+ TPageParam = unknown,
27
+ > = FunctionedParams<
28
+ SolidInfiniteQueryOptions<
29
+ TQueryFnData,
30
+ TError,
31
+ TData,
32
+ TQueryFnData,
33
+ TQueryKey,
34
+ TPageParam
35
+ > & {
36
+ initialData?: undefined
37
+ }
38
+ >
39
+ type NonUndefinedGuard<T> = T extends undefined ? never : T
40
+ export type DefinedInitialDataInfiniteOptions<
41
+ TQueryFnData,
42
+ TError = DefaultError,
43
+ // should we handle page param correctly
44
+ TData = InfiniteData<TQueryFnData>,
45
+ TQueryKey extends QueryKey = QueryKey,
46
+ TPageParam = unknown,
47
+ > = FunctionedParams<
48
+ SolidInfiniteQueryOptions<
49
+ TQueryFnData,
50
+ TError,
51
+ TData,
52
+ TQueryFnData,
53
+ TQueryKey,
54
+ TPageParam
55
+ > & {
56
+ initialData:
57
+ | NonUndefinedGuard<InfiniteData<TQueryFnData, TPageParam>>
58
+ | (() => NonUndefinedGuard<InfiniteData<TQueryFnData, TPageParam>>)
59
+ }
60
+ >
61
+ function infiniteQueryOptions<
62
+ TQueryFnData,
63
+ TError = DefaultError,
64
+ TData = InfiniteData<TQueryFnData>,
65
+ TQueryKey extends QueryKey = QueryKey,
66
+ TPageParam = unknown,
67
+ >(
68
+ options: ReturnType<
69
+ DefinedInitialDataInfiniteOptions<
70
+ TQueryFnData,
71
+ TError,
72
+ TData,
73
+ TQueryKey,
74
+ TPageParam
75
+ >
76
+ >,
77
+ ): ReturnType<
78
+ DefinedInitialDataInfiniteOptions<
79
+ TQueryFnData,
80
+ TError,
81
+ TData,
82
+ TQueryKey,
83
+ TPageParam
84
+ >
85
+ > & {
86
+ queryKey: DataTag<TQueryKey, InfiniteData<TQueryFnData>>
87
+ }
88
+ function infiniteQueryOptions<
89
+ TQueryFnData,
90
+ TError = DefaultError,
91
+ TData = InfiniteData<TQueryFnData>,
92
+ TQueryKey extends QueryKey = QueryKey,
93
+ TPageParam = unknown,
94
+ >(
95
+ options: ReturnType<
96
+ UndefinedInitialDataInfiniteOptions<
97
+ TQueryFnData,
98
+ TError,
99
+ TData,
100
+ TQueryKey,
101
+ TPageParam
102
+ >
103
+ >,
104
+ ): ReturnType<
105
+ UndefinedInitialDataInfiniteOptions<
106
+ TQueryFnData,
107
+ TError,
108
+ TData,
109
+ TQueryKey,
110
+ TPageParam
111
+ >
112
+ > & {
113
+ queryKey: DataTag<TQueryKey, InfiniteData<TQueryFnData>>
114
+ }
115
+
116
+ function infiniteQueryOptions(options: unknown) {
117
+ return options
118
+ }
119
+
120
+ export { infiniteQueryOptions }
121
+
122
+ export function createInfiniteQuery<
123
+ TQueryFnData,
124
+ TError = DefaultError,
125
+ TData = InfiniteData<TQueryFnData>,
126
+ TQueryKey extends QueryKey = QueryKey,
127
+ TPageParam = unknown,
128
+ >(
129
+ options: DefinedInitialDataInfiniteOptions<
130
+ TQueryFnData,
131
+ TError,
132
+ TData,
133
+ TQueryKey,
134
+ TPageParam
135
+ >,
136
+ queryClient?: Accessor<QueryClient>,
137
+ ): DefinedCreateInfiniteQueryResult<TData, TError>
138
+ export function createInfiniteQuery<
139
+ TQueryFnData,
140
+ TError = DefaultError,
141
+ TData = InfiniteData<TQueryFnData>,
142
+ TQueryKey extends QueryKey = QueryKey,
143
+ TPageParam = unknown,
144
+ >(
145
+ options: UndefinedInitialDataInfiniteOptions<
146
+ TQueryFnData,
147
+ TError,
148
+ TData,
149
+ TQueryKey,
150
+ TPageParam
151
+ >,
152
+ queryClient?: Accessor<QueryClient>,
153
+ ): CreateInfiniteQueryResult<TData, TError>
154
+
17
155
  export function createInfiniteQuery<
18
156
  TQueryFnData,
19
157
  TError = DefaultError,
package/src/index.ts CHANGED
@@ -20,7 +20,14 @@ export {
20
20
  } from './QueryClientProvider'
21
21
  export type { QueryClientProviderProps } from './QueryClientProvider'
22
22
  export { useIsFetching } from './useIsFetching'
23
- export { createInfiniteQuery } from './createInfiniteQuery'
23
+ export {
24
+ createInfiniteQuery,
25
+ infiniteQueryOptions,
26
+ } from './createInfiniteQuery'
27
+ export type {
28
+ DefinedInitialDataInfiniteOptions,
29
+ UndefinedInitialDataInfiniteOptions,
30
+ } from './createInfiniteQuery'
24
31
  export { createMutation } from './createMutation'
25
32
  export { useIsMutating } from './useIsMutating'
26
33
  export { useMutationState } from './useMutationState'
package/src/types.ts CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  import type {
4
4
  DefaultError,
5
+ DefinedInfiniteQueryObserverResult,
5
6
  DefinedQueryObserverResult,
6
7
  InfiniteQueryObserverResult,
7
8
  MutateFunction,
@@ -142,6 +143,11 @@ export type CreateInfiniteQueryResult<
142
143
  TError = DefaultError,
143
144
  > = InfiniteQueryObserverResult<TData, TError>
144
145
 
146
+ export type DefinedCreateInfiniteQueryResult<
147
+ TData = unknown,
148
+ TError = DefaultError,
149
+ > = DefinedInfiniteQueryObserverResult<TData, TError>
150
+
145
151
  /* --- Create Mutation Types --- */
146
152
  export interface SolidMutationOptions<
147
153
  TData = unknown,