@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 +5 -1
- package/build/dev.js +5 -2
- package/build/index.cjs +5 -1
- package/build/index.d.cts +19 -3
- package/build/index.d.ts +19 -3
- package/build/index.js +5 -2
- package/package.json +1 -1
- package/src/__tests__/createInfiniteQuery.test-d.tsx +109 -0
- package/src/__tests__/createInfiniteQuery.test.tsx +27 -0
- package/src/createBaseQuery.ts +1 -1
- package/src/createInfiniteQuery.ts +138 -0
- package/src/index.ts +8 -1
- package/src/types.ts +6 -0
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
@@ -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
|
})
|
package/src/createBaseQuery.ts
CHANGED
|
@@ -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
|
|
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 {
|
|
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,
|