@tanstack/svelte-query 5.0.0-alpha.6 → 5.0.0-alpha.61
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/lib → dist}/HydrationBoundary.svelte.d.ts +4 -3
- package/dist/HydrationBoundary.svelte.d.ts.map +1 -0
- package/{build/lib → dist}/QueryClientProvider.svelte.d.ts +4 -3
- package/dist/QueryClientProvider.svelte.d.ts.map +1 -0
- package/{build/lib → dist}/context.d.ts +1 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/createBaseQuery.d.ts +4 -0
- package/dist/createBaseQuery.d.ts.map +1 -0
- package/{build/lib → dist}/createBaseQuery.js +1 -11
- package/dist/createInfiniteQuery.d.ts +4 -0
- package/dist/createInfiniteQuery.d.ts.map +1 -0
- package/dist/createMutation.d.ts +4 -0
- package/dist/createMutation.d.ts.map +1 -0
- package/dist/createQueries.d.ts +53 -0
- package/dist/createQueries.d.ts.map +1 -0
- package/{build/lib → dist}/createQueries.js +7 -6
- package/dist/createQuery.d.ts +12 -0
- package/dist/createQuery.d.ts.map +1 -0
- package/{build/lib → dist}/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/types.d.ts +36 -0
- package/dist/types.d.ts.map +1 -0
- package/{build/lib → dist}/useHydrate.d.ts +1 -0
- package/dist/useHydrate.d.ts.map +1 -0
- package/{build/lib → dist}/useIsFetching.d.ts +1 -0
- package/dist/useIsFetching.d.ts.map +1 -0
- package/{build/lib → dist}/useIsMutating.d.ts +1 -0
- package/dist/useIsMutating.d.ts.map +1 -0
- package/{build/lib → dist}/useQueryClient.d.ts +1 -0
- package/dist/useQueryClient.d.ts.map +1 -0
- package/{build/lib → dist}/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +34 -26
- package/src/createBaseQuery.ts +9 -28
- package/src/createInfiniteQuery.ts +7 -10
- package/src/createMutation.ts +1 -4
- package/src/createQueries.ts +54 -32
- package/src/createQuery.ts +3 -10
- package/src/types.ts +39 -36
- package/build/lib/.gitignore +0 -9
- package/build/lib/createBaseQuery.d.ts +0 -3
- package/build/lib/createInfiniteQuery.d.ts +0 -3
- package/build/lib/createMutation.d.ts +0 -3
- package/build/lib/createQueries.d.ts +0 -52
- package/build/lib/createQuery.d.ts +0 -11
- package/build/lib/types.d.ts +0 -38
- package/src/__tests__/CreateMutation.svelte +0 -17
- package/src/__tests__/CreateQueries.svelte +0 -20
- package/src/__tests__/CreateQuery.svelte +0 -30
- package/src/__tests__/createMutation.test.ts +0 -24
- package/src/__tests__/createQueries.test.ts +0 -41
- package/src/__tests__/createQuery.test.ts +0 -64
- package/src/__tests__/utils.ts +0 -40
- /package/{build/lib → dist}/HydrationBoundary.svelte +0 -0
- /package/{build/lib → dist}/QueryClientProvider.svelte +0 -0
- /package/{build/lib → dist}/context.js +0 -0
- /package/{build/lib → dist}/createInfiniteQuery.js +0 -0
- /package/{build/lib → dist}/createMutation.js +0 -0
- /package/{build/lib → dist}/createQuery.js +0 -0
- /package/{build/lib → dist}/index.js +0 -0
- /package/{build/lib → dist}/types.js +0 -0
- /package/{build/lib → dist}/useHydrate.js +0 -0
- /package/{build/lib → dist}/useIsFetching.js +0 -0
- /package/{build/lib → dist}/useIsMutating.js +0 -0
- /package/{build/lib → dist}/useQueryClient.js +0 -0
- /package/{build/lib → dist}/utils.js +0 -0
package/src/createQueries.ts
CHANGED
|
@@ -5,24 +5,24 @@ import type {
|
|
|
5
5
|
QueriesPlaceholderDataFunction,
|
|
6
6
|
QueryObserverResult,
|
|
7
7
|
DefaultError,
|
|
8
|
+
QueriesObserverOptions,
|
|
9
|
+
QueryObserverOptions,
|
|
8
10
|
} from '@tanstack/query-core'
|
|
9
|
-
|
|
10
11
|
import { notifyManager, QueriesObserver } from '@tanstack/query-core'
|
|
11
12
|
import { derived, get, readable, writable, type Readable } from 'svelte/store'
|
|
12
|
-
|
|
13
|
-
import type { CreateQueryOptions, WritableOrVal } from './types'
|
|
13
|
+
import type { WritableOrVal } from './types'
|
|
14
14
|
import { useQueryClient } from './useQueryClient'
|
|
15
15
|
import { isWritable } from './utils'
|
|
16
16
|
|
|
17
17
|
// This defines the `CreateQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.
|
|
18
18
|
// `placeholderData` function does not have a parameter
|
|
19
|
-
type
|
|
19
|
+
type QueryObserverOptionsForCreateQueries<
|
|
20
20
|
TQueryFnData = unknown,
|
|
21
21
|
TError = DefaultError,
|
|
22
22
|
TData = TQueryFnData,
|
|
23
23
|
TQueryKey extends QueryKey = QueryKey,
|
|
24
24
|
> = Omit<
|
|
25
|
-
|
|
25
|
+
QueryObserverOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>,
|
|
26
26
|
'placeholderData'
|
|
27
27
|
> & {
|
|
28
28
|
placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>
|
|
@@ -38,33 +38,38 @@ type GetOptions<T> =
|
|
|
38
38
|
error?: infer TError
|
|
39
39
|
data: infer TData
|
|
40
40
|
}
|
|
41
|
-
?
|
|
41
|
+
? QueryObserverOptionsForCreateQueries<TQueryFnData, TError, TData>
|
|
42
42
|
: T extends { queryFnData: infer TQueryFnData; error?: infer TError }
|
|
43
|
-
?
|
|
43
|
+
? QueryObserverOptionsForCreateQueries<TQueryFnData, TError>
|
|
44
44
|
: T extends { data: infer TData; error?: infer TError }
|
|
45
|
-
?
|
|
45
|
+
? QueryObserverOptionsForCreateQueries<unknown, TError, TData>
|
|
46
46
|
: // Part 2: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]
|
|
47
47
|
T extends [infer TQueryFnData, infer TError, infer TData]
|
|
48
|
-
?
|
|
48
|
+
? QueryObserverOptionsForCreateQueries<TQueryFnData, TError, TData>
|
|
49
49
|
: T extends [infer TQueryFnData, infer TError]
|
|
50
|
-
?
|
|
50
|
+
? QueryObserverOptionsForCreateQueries<TQueryFnData, TError>
|
|
51
51
|
: T extends [infer TQueryFnData]
|
|
52
|
-
?
|
|
52
|
+
? QueryObserverOptionsForCreateQueries<TQueryFnData>
|
|
53
53
|
: // Part 3: responsible for inferring and enforcing type if no explicit parameter was provided
|
|
54
54
|
T extends {
|
|
55
55
|
queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>
|
|
56
56
|
select: (data: any) => infer TData
|
|
57
57
|
}
|
|
58
|
-
?
|
|
58
|
+
? QueryObserverOptionsForCreateQueries<
|
|
59
|
+
TQueryFnData,
|
|
60
|
+
Error,
|
|
61
|
+
TData,
|
|
62
|
+
TQueryKey
|
|
63
|
+
>
|
|
59
64
|
: T extends { queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> }
|
|
60
|
-
?
|
|
65
|
+
? QueryObserverOptionsForCreateQueries<
|
|
61
66
|
TQueryFnData,
|
|
62
67
|
Error,
|
|
63
68
|
TQueryFnData,
|
|
64
69
|
TQueryKey
|
|
65
70
|
>
|
|
66
71
|
: // Fallback
|
|
67
|
-
|
|
72
|
+
QueryObserverOptionsForCreateQueries
|
|
68
73
|
|
|
69
74
|
type GetResults<T> =
|
|
70
75
|
// Part 1: responsible for mapping explicit type parameter to function result, if object
|
|
@@ -100,7 +105,7 @@ export type QueriesOptions<
|
|
|
100
105
|
Result extends any[] = [],
|
|
101
106
|
Depth extends ReadonlyArray<number> = [],
|
|
102
107
|
> = Depth['length'] extends MAXIMUM_DEPTH
|
|
103
|
-
?
|
|
108
|
+
? QueryObserverOptionsForCreateQueries[]
|
|
104
109
|
: T extends []
|
|
105
110
|
? []
|
|
106
111
|
: T extends [infer Head]
|
|
@@ -111,15 +116,20 @@ export type QueriesOptions<
|
|
|
111
116
|
? T
|
|
112
117
|
: // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!
|
|
113
118
|
// use this to infer the param types in the case of Array.map() argument
|
|
114
|
-
T extends
|
|
119
|
+
T extends QueryObserverOptionsForCreateQueries<
|
|
115
120
|
infer TQueryFnData,
|
|
116
121
|
infer TError,
|
|
117
122
|
infer TData,
|
|
118
123
|
infer TQueryKey
|
|
119
124
|
>[]
|
|
120
|
-
?
|
|
125
|
+
? QueryObserverOptionsForCreateQueries<
|
|
126
|
+
TQueryFnData,
|
|
127
|
+
TError,
|
|
128
|
+
TData,
|
|
129
|
+
TQueryKey
|
|
130
|
+
>[]
|
|
121
131
|
: // Fallback
|
|
122
|
-
|
|
132
|
+
QueryObserverOptionsForCreateQueries[]
|
|
123
133
|
|
|
124
134
|
/**
|
|
125
135
|
* QueriesResults reducer recursively maps type param to results
|
|
@@ -136,7 +146,7 @@ export type QueriesResults<
|
|
|
136
146
|
? [...Result, GetResults<Head>]
|
|
137
147
|
: T extends [infer Head, ...infer Tail]
|
|
138
148
|
? QueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]>
|
|
139
|
-
: T extends
|
|
149
|
+
: T extends QueryObserverOptionsForCreateQueries<
|
|
140
150
|
infer TQueryFnData,
|
|
141
151
|
infer TError,
|
|
142
152
|
infer TData,
|
|
@@ -150,44 +160,56 @@ export type QueriesResults<
|
|
|
150
160
|
: // Fallback
|
|
151
161
|
QueryObserverResult[]
|
|
152
162
|
|
|
153
|
-
export
|
|
154
|
-
|
|
155
|
-
|
|
163
|
+
export function createQueries<
|
|
164
|
+
T extends any[],
|
|
165
|
+
TCombinedResult = QueriesResults<T>,
|
|
166
|
+
>(
|
|
156
167
|
{
|
|
157
168
|
queries,
|
|
169
|
+
...options
|
|
158
170
|
}: {
|
|
159
171
|
queries: WritableOrVal<[...QueriesOptions<T>]>
|
|
172
|
+
combine?: (result: QueriesResults<T>) => TCombinedResult
|
|
160
173
|
},
|
|
161
174
|
queryClient?: QueryClient,
|
|
162
|
-
):
|
|
175
|
+
): Readable<TCombinedResult> {
|
|
163
176
|
const client = useQueryClient(queryClient)
|
|
164
177
|
// const isRestoring = useIsRestoring()
|
|
165
178
|
|
|
166
179
|
const queriesStore = isWritable(queries) ? queries : writable(queries)
|
|
167
180
|
|
|
168
181
|
const defaultedQueriesStore = derived(queriesStore, ($queries) => {
|
|
169
|
-
return $queries.map((
|
|
170
|
-
const defaultedOptions = client.defaultQueryOptions(
|
|
182
|
+
return $queries.map((opts) => {
|
|
183
|
+
const defaultedOptions = client.defaultQueryOptions(opts)
|
|
171
184
|
// Make sure the results are already in fetching state before subscribing or updating options
|
|
172
185
|
defaultedOptions._optimisticResults = 'optimistic'
|
|
173
186
|
|
|
174
187
|
return defaultedOptions
|
|
175
188
|
})
|
|
176
189
|
})
|
|
177
|
-
const observer = new QueriesObserver(
|
|
190
|
+
const observer = new QueriesObserver<TCombinedResult>(
|
|
191
|
+
client,
|
|
192
|
+
get(defaultedQueriesStore),
|
|
193
|
+
options as QueriesObserverOptions<TCombinedResult>,
|
|
194
|
+
)
|
|
178
195
|
|
|
179
196
|
defaultedQueriesStore.subscribe(($defaultedQueries) => {
|
|
180
197
|
// Do not notify on updates because of changes in the options because
|
|
181
198
|
// these changes should already be reflected in the optimistic result.
|
|
182
|
-
observer.setQueries(
|
|
199
|
+
observer.setQueries(
|
|
200
|
+
$defaultedQueries,
|
|
201
|
+
options as QueriesObserverOptions<TCombinedResult>,
|
|
202
|
+
{ listeners: false },
|
|
203
|
+
)
|
|
183
204
|
})
|
|
184
205
|
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
(set) => {
|
|
188
|
-
return observer.subscribe(notifyManager.batchCalls(set))
|
|
189
|
-
},
|
|
206
|
+
const [, getCombinedResult] = observer.getOptimisticResult(
|
|
207
|
+
get(defaultedQueriesStore),
|
|
190
208
|
)
|
|
191
209
|
|
|
210
|
+
const { subscribe } = readable(getCombinedResult() as any, (set) => {
|
|
211
|
+
return observer.subscribe(notifyManager.batchCalls(set))
|
|
212
|
+
})
|
|
213
|
+
|
|
192
214
|
return { subscribe }
|
|
193
215
|
}
|
package/src/createQuery.ts
CHANGED
|
@@ -5,7 +5,6 @@ import type {
|
|
|
5
5
|
DefinedCreateQueryResult,
|
|
6
6
|
CreateQueryOptions,
|
|
7
7
|
CreateQueryResult,
|
|
8
|
-
WritableOrVal,
|
|
9
8
|
} from './types'
|
|
10
9
|
|
|
11
10
|
type UndefinedInitialDataOptions<
|
|
@@ -32,9 +31,7 @@ export function createQuery<
|
|
|
32
31
|
TData = TQueryFnData,
|
|
33
32
|
TQueryKey extends QueryKey = QueryKey,
|
|
34
33
|
>(
|
|
35
|
-
options:
|
|
36
|
-
UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>
|
|
37
|
-
>,
|
|
34
|
+
options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
38
35
|
queryClient?: QueryClient,
|
|
39
36
|
): CreateQueryResult<TData, TError>
|
|
40
37
|
|
|
@@ -44,9 +41,7 @@ export function createQuery<
|
|
|
44
41
|
TData = TQueryFnData,
|
|
45
42
|
TQueryKey extends QueryKey = QueryKey,
|
|
46
43
|
>(
|
|
47
|
-
options:
|
|
48
|
-
DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>
|
|
49
|
-
>,
|
|
44
|
+
options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
50
45
|
queryClient?: QueryClient,
|
|
51
46
|
): DefinedCreateQueryResult<TData, TError>
|
|
52
47
|
|
|
@@ -56,9 +51,7 @@ export function createQuery<
|
|
|
56
51
|
TData = TQueryFnData,
|
|
57
52
|
TQueryKey extends QueryKey = QueryKey,
|
|
58
53
|
>(
|
|
59
|
-
options:
|
|
60
|
-
CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>
|
|
61
|
-
>,
|
|
54
|
+
options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
62
55
|
queryClient?: QueryClient,
|
|
63
56
|
) {
|
|
64
57
|
return createBaseQuery(options, QueryObserver, queryClient)
|
package/src/types.ts
CHANGED
|
@@ -10,87 +10,91 @@ import type {
|
|
|
10
10
|
DefinedQueryObserverResult,
|
|
11
11
|
DefaultError,
|
|
12
12
|
} from '@tanstack/query-core'
|
|
13
|
-
import type { QueryClient } from '@tanstack/query-core'
|
|
14
13
|
import type { Readable, Writable } from 'svelte/store'
|
|
15
14
|
|
|
15
|
+
/** Allows a type to be either the base object or a store of that object */
|
|
16
16
|
export type WritableOrVal<T> = T | Writable<T>
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
* Use this to pass your Svelte Query context. Otherwise, `defaultContext` will be used.
|
|
21
|
-
*/
|
|
22
|
-
context?: QueryClient | undefined
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export interface CreateBaseQueryOptions<
|
|
18
|
+
/** Options for createBaseQuery */
|
|
19
|
+
export type CreateBaseQueryOptions<
|
|
26
20
|
TQueryFnData = unknown,
|
|
27
21
|
TError = DefaultError,
|
|
28
22
|
TData = TQueryFnData,
|
|
29
23
|
TQueryData = TQueryFnData,
|
|
30
24
|
TQueryKey extends QueryKey = QueryKey,
|
|
31
|
-
>
|
|
32
|
-
|
|
25
|
+
> = WritableOrVal<
|
|
26
|
+
QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>
|
|
27
|
+
>
|
|
33
28
|
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
/** Result from createBaseQuery */
|
|
30
|
+
export type CreateBaseQueryResult<
|
|
31
|
+
TData = unknown,
|
|
32
|
+
TError = DefaultError,
|
|
33
|
+
> = Readable<QueryObserverResult<TData, TError>>
|
|
36
34
|
|
|
37
|
-
|
|
35
|
+
/** Options for createQuery */
|
|
36
|
+
export type CreateQueryOptions<
|
|
38
37
|
TQueryFnData = unknown,
|
|
39
38
|
TError = DefaultError,
|
|
40
39
|
TData = TQueryFnData,
|
|
41
40
|
TQueryKey extends QueryKey = QueryKey,
|
|
42
|
-
>
|
|
43
|
-
TQueryFnData,
|
|
44
|
-
TError,
|
|
45
|
-
TData,
|
|
46
|
-
TQueryFnData,
|
|
47
|
-
TQueryKey
|
|
48
|
-
> {}
|
|
41
|
+
> = CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>
|
|
49
42
|
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
/** Result from createQuery */
|
|
44
|
+
export type CreateQueryResult<
|
|
45
|
+
TData = unknown,
|
|
46
|
+
TError = DefaultError,
|
|
47
|
+
> = CreateBaseQueryResult<TData, TError>
|
|
52
48
|
|
|
53
|
-
|
|
49
|
+
/** Options for createInfiniteQuery */
|
|
50
|
+
export type CreateInfiniteQueryOptions<
|
|
54
51
|
TQueryFnData = unknown,
|
|
55
52
|
TError = DefaultError,
|
|
56
53
|
TData = TQueryFnData,
|
|
57
54
|
TQueryData = TQueryFnData,
|
|
58
55
|
TQueryKey extends QueryKey = QueryKey,
|
|
59
56
|
TPageParam = unknown,
|
|
60
|
-
>
|
|
57
|
+
> = WritableOrVal<
|
|
58
|
+
InfiniteQueryObserverOptions<
|
|
61
59
|
TQueryFnData,
|
|
62
60
|
TError,
|
|
63
61
|
TData,
|
|
64
62
|
TQueryData,
|
|
65
63
|
TQueryKey,
|
|
66
64
|
TPageParam
|
|
67
|
-
>
|
|
65
|
+
>
|
|
66
|
+
>
|
|
68
67
|
|
|
68
|
+
/** Result from createInfiniteQuery */
|
|
69
69
|
export type CreateInfiniteQueryResult<
|
|
70
70
|
TData = unknown,
|
|
71
71
|
TError = DefaultError,
|
|
72
72
|
> = Readable<InfiniteQueryObserverResult<TData, TError>>
|
|
73
73
|
|
|
74
|
+
/** Options for createBaseQuery with initialData */
|
|
74
75
|
export type DefinedCreateBaseQueryResult<
|
|
75
76
|
TData = unknown,
|
|
76
77
|
TError = DefaultError,
|
|
77
78
|
> = Readable<DefinedQueryObserverResult<TData, TError>>
|
|
78
79
|
|
|
80
|
+
/** Options for createQuery with initialData */
|
|
79
81
|
export type DefinedCreateQueryResult<
|
|
80
82
|
TData = unknown,
|
|
81
83
|
TError = DefaultError,
|
|
82
84
|
> = DefinedCreateBaseQueryResult<TData, TError>
|
|
83
85
|
|
|
84
|
-
|
|
86
|
+
/** Options for createMutation */
|
|
87
|
+
export type CreateMutationOptions<
|
|
85
88
|
TData = unknown,
|
|
86
89
|
TError = DefaultError,
|
|
87
90
|
TVariables = void,
|
|
88
91
|
TContext = unknown,
|
|
89
|
-
>
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
> = WritableOrVal<
|
|
93
|
+
Omit<
|
|
94
|
+
MutationObserverOptions<TData, TError, TVariables, TContext>,
|
|
95
|
+
'_defaulted' | 'variables'
|
|
96
|
+
>
|
|
97
|
+
>
|
|
94
98
|
|
|
95
99
|
export type CreateMutateFunction<
|
|
96
100
|
TData = unknown,
|
|
@@ -120,13 +124,12 @@ export type CreateBaseMutationResult<
|
|
|
120
124
|
mutateAsync: CreateMutateAsyncFunction<TData, TError, TVariables, TContext>
|
|
121
125
|
}
|
|
122
126
|
|
|
123
|
-
|
|
127
|
+
/** Result from createMutation */
|
|
128
|
+
export type CreateMutationResult<
|
|
124
129
|
TData = unknown,
|
|
125
130
|
TError = DefaultError,
|
|
126
131
|
TVariables = unknown,
|
|
127
132
|
TContext = unknown,
|
|
128
|
-
>
|
|
129
|
-
CreateBaseMutationResult<TData, TError, TVariables, TContext>
|
|
130
|
-
> {}
|
|
133
|
+
> = Readable<CreateBaseMutationResult<TData, TError, TVariables, TContext>>
|
|
131
134
|
|
|
132
135
|
type Override<A, B> = { [K in keyof A]: K extends keyof B ? B[K] : A[K] }
|
package/build/lib/.gitignore
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import type { QueryClient, QueryKey, QueryObserver } from '@tanstack/query-core';
|
|
2
|
-
import type { CreateBaseQueryOptions, CreateBaseQueryResult, WritableOrVal } from './types';
|
|
3
|
-
export declare function createBaseQuery<TQueryFnData, TError, TData, TQueryData, TQueryKey extends QueryKey>(options: WritableOrVal<CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, Observer: typeof QueryObserver, queryClient?: QueryClient): CreateBaseQueryResult<TData, TError>;
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import type { QueryKey, QueryClient, DefaultError, InfiniteData } from '@tanstack/query-core';
|
|
2
|
-
import type { CreateInfiniteQueryOptions, CreateInfiniteQueryResult, WritableOrVal } from './types';
|
|
3
|
-
export declare function createInfiniteQuery<TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>(options: WritableOrVal<CreateInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey, TPageParam>>, queryClient?: QueryClient): CreateInfiniteQueryResult<TData, TError>;
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import type { QueryClient, DefaultError } from '@tanstack/query-core';
|
|
2
|
-
import type { CreateMutationOptions, CreateMutationResult, WritableOrVal } from './types';
|
|
3
|
-
export declare function createMutation<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown>(options: WritableOrVal<CreateMutationOptions<TData, TError, TVariables, TContext>>, queryClient?: QueryClient): CreateMutationResult<TData, TError, TVariables, TContext>;
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import type { QueryKey, QueryFunction, QueryClient, QueriesPlaceholderDataFunction, QueryObserverResult, DefaultError } from '@tanstack/query-core';
|
|
2
|
-
import { type Readable } from 'svelte/store';
|
|
3
|
-
import type { CreateQueryOptions, WritableOrVal } from './types';
|
|
4
|
-
declare type CreateQueryOptionsForCreateQueries<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = Omit<CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>, 'placeholderData'> & {
|
|
5
|
-
placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>;
|
|
6
|
-
};
|
|
7
|
-
declare type MAXIMUM_DEPTH = 20;
|
|
8
|
-
declare type GetOptions<T> = T extends {
|
|
9
|
-
queryFnData: infer TQueryFnData;
|
|
10
|
-
error?: infer TError;
|
|
11
|
-
data: infer TData;
|
|
12
|
-
} ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData> : T extends {
|
|
13
|
-
queryFnData: infer TQueryFnData;
|
|
14
|
-
error?: infer TError;
|
|
15
|
-
} ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError> : T extends {
|
|
16
|
-
data: infer TData;
|
|
17
|
-
error?: infer TError;
|
|
18
|
-
} ? CreateQueryOptionsForCreateQueries<unknown, TError, TData> : T extends [infer TQueryFnData, infer TError, infer TData] ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData> : T extends [infer TQueryFnData, infer TError] ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError> : T extends [infer TQueryFnData] ? CreateQueryOptionsForCreateQueries<TQueryFnData> : T extends {
|
|
19
|
-
queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>;
|
|
20
|
-
select: (data: any) => infer TData;
|
|
21
|
-
} ? CreateQueryOptionsForCreateQueries<TQueryFnData, Error, TData, TQueryKey> : T extends {
|
|
22
|
-
queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey>;
|
|
23
|
-
} ? CreateQueryOptionsForCreateQueries<TQueryFnData, Error, TQueryFnData, TQueryKey> : CreateQueryOptionsForCreateQueries;
|
|
24
|
-
declare type GetResults<T> = T extends {
|
|
25
|
-
queryFnData: any;
|
|
26
|
-
error?: infer TError;
|
|
27
|
-
data: infer TData;
|
|
28
|
-
} ? QueryObserverResult<TData, TError> : T extends {
|
|
29
|
-
queryFnData: infer TQueryFnData;
|
|
30
|
-
error?: infer TError;
|
|
31
|
-
} ? QueryObserverResult<TQueryFnData, TError> : T extends {
|
|
32
|
-
data: infer TData;
|
|
33
|
-
error?: infer TError;
|
|
34
|
-
} ? QueryObserverResult<TData, TError> : T extends [any, infer TError, infer TData] ? QueryObserverResult<TData, TError> : T extends [infer TQueryFnData, infer TError] ? QueryObserverResult<TQueryFnData, TError> : T extends [infer TQueryFnData] ? QueryObserverResult<TQueryFnData> : T extends {
|
|
35
|
-
queryFn?: QueryFunction<unknown, any>;
|
|
36
|
-
select: (data: any) => infer TData;
|
|
37
|
-
} ? QueryObserverResult<TData> : T extends {
|
|
38
|
-
queryFn?: QueryFunction<infer TQueryFnData, any>;
|
|
39
|
-
} ? QueryObserverResult<TQueryFnData> : QueryObserverResult;
|
|
40
|
-
/**
|
|
41
|
-
* QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
|
|
42
|
-
*/
|
|
43
|
-
export declare type QueriesOptions<T extends any[], Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? CreateQueryOptionsForCreateQueries[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetOptions<Head>] : T extends [infer Head, ...infer Tail] ? QueriesOptions<[...Tail], [...Result, GetOptions<Head>], [...Depth, 1]> : unknown[] extends T ? T : T extends CreateQueryOptionsForCreateQueries<infer TQueryFnData, infer TError, infer TData, infer TQueryKey>[] ? CreateQueryOptionsForCreateQueries<TQueryFnData, TError, TData, TQueryKey>[] : CreateQueryOptionsForCreateQueries[];
|
|
44
|
-
/**
|
|
45
|
-
* QueriesResults reducer recursively maps type param to results
|
|
46
|
-
*/
|
|
47
|
-
export declare type QueriesResults<T extends any[], Result extends any[] = [], Depth extends ReadonlyArray<number> = []> = Depth['length'] extends MAXIMUM_DEPTH ? QueryObserverResult[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetResults<Head>] : T extends [infer Head, ...infer Tail] ? QueriesResults<[...Tail], [...Result, GetResults<Head>], [...Depth, 1]> : T extends CreateQueryOptionsForCreateQueries<infer TQueryFnData, infer TError, infer TData, any>[] ? QueryObserverResult<unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError>[] : QueryObserverResult[];
|
|
48
|
-
export declare type CreateQueriesResult<T extends any[]> = Readable<QueriesResults<T>>;
|
|
49
|
-
export declare function createQueries<T extends any[]>({ queries, }: {
|
|
50
|
-
queries: WritableOrVal<[...QueriesOptions<T>]>;
|
|
51
|
-
}, queryClient?: QueryClient): CreateQueriesResult<T>;
|
|
52
|
-
export {};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { QueryKey, QueryClient, DefaultError } from '@tanstack/query-core';
|
|
2
|
-
import type { DefinedCreateQueryResult, CreateQueryOptions, CreateQueryResult, WritableOrVal } from './types';
|
|
3
|
-
declare type UndefinedInitialDataOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
|
|
4
|
-
initialData?: undefined;
|
|
5
|
-
};
|
|
6
|
-
declare type DefinedInitialDataOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
|
|
7
|
-
initialData: TQueryFnData | (() => TQueryFnData);
|
|
8
|
-
};
|
|
9
|
-
export declare function createQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: WritableOrVal<UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>>, queryClient?: QueryClient): CreateQueryResult<TData, TError>;
|
|
10
|
-
export declare function createQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: WritableOrVal<DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>>, queryClient?: QueryClient): DefinedCreateQueryResult<TData, TError>;
|
|
11
|
-
export {};
|
package/build/lib/types.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { InfiniteQueryObserverOptions, InfiniteQueryObserverResult, MutationObserverResult, QueryObserverOptions, QueryObserverResult, QueryKey, MutationObserverOptions, MutateFunction, DefinedQueryObserverResult, DefaultError } from '@tanstack/query-core';
|
|
2
|
-
import type { QueryClient } from '@tanstack/query-core';
|
|
3
|
-
import type { Readable, Writable } from 'svelte/store';
|
|
4
|
-
export declare type WritableOrVal<T> = T | Writable<T>;
|
|
5
|
-
export interface ContextOptions {
|
|
6
|
-
/**
|
|
7
|
-
* Use this to pass your Svelte Query context. Otherwise, `defaultContext` will be used.
|
|
8
|
-
*/
|
|
9
|
-
context?: QueryClient | undefined;
|
|
10
|
-
}
|
|
11
|
-
export interface CreateBaseQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends ContextOptions, QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> {
|
|
12
|
-
}
|
|
13
|
-
export interface CreateBaseQueryResult<TData = unknown, TError = DefaultError> extends Readable<QueryObserverResult<TData, TError>> {
|
|
14
|
-
}
|
|
15
|
-
export interface CreateQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> extends CreateBaseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey> {
|
|
16
|
-
}
|
|
17
|
-
export interface CreateQueryResult<TData = unknown, TError = DefaultError> extends CreateBaseQueryResult<TData, TError> {
|
|
18
|
-
}
|
|
19
|
-
export interface CreateInfiniteQueryOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> extends InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey, TPageParam> {
|
|
20
|
-
}
|
|
21
|
-
export declare type CreateInfiniteQueryResult<TData = unknown, TError = DefaultError> = Readable<InfiniteQueryObserverResult<TData, TError>>;
|
|
22
|
-
export declare type DefinedCreateBaseQueryResult<TData = unknown, TError = DefaultError> = Readable<DefinedQueryObserverResult<TData, TError>>;
|
|
23
|
-
export declare type DefinedCreateQueryResult<TData = unknown, TError = DefaultError> = DefinedCreateBaseQueryResult<TData, TError>;
|
|
24
|
-
export interface CreateMutationOptions<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> extends ContextOptions, Omit<MutationObserverOptions<TData, TError, TVariables, TContext>, '_defaulted' | 'variables'> {
|
|
25
|
-
}
|
|
26
|
-
export declare type CreateMutateFunction<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> = (...args: Parameters<MutateFunction<TData, TError, TVariables, TContext>>) => void;
|
|
27
|
-
export declare type CreateMutateAsyncFunction<TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown> = MutateFunction<TData, TError, TVariables, TContext>;
|
|
28
|
-
export declare type CreateBaseMutationResult<TData = unknown, TError = DefaultError, TVariables = unknown, TContext = unknown> = Override<MutationObserverResult<TData, TError, TVariables, TContext>, {
|
|
29
|
-
mutate: CreateMutateFunction<TData, TError, TVariables, TContext>;
|
|
30
|
-
}> & {
|
|
31
|
-
mutateAsync: CreateMutateAsyncFunction<TData, TError, TVariables, TContext>;
|
|
32
|
-
};
|
|
33
|
-
export interface CreateMutationResult<TData = unknown, TError = DefaultError, TVariables = unknown, TContext = unknown> extends Readable<CreateBaseMutationResult<TData, TError, TVariables, TContext>> {
|
|
34
|
-
}
|
|
35
|
-
declare type Override<A, B> = {
|
|
36
|
-
[K in keyof A]: K extends keyof B ? B[K] : A[K];
|
|
37
|
-
};
|
|
38
|
-
export {};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
createMutation,
|
|
4
|
-
QueryClient,
|
|
5
|
-
type CreateMutationOptions,
|
|
6
|
-
} from '../index'
|
|
7
|
-
import { setQueryClientContext } from '../context'
|
|
8
|
-
|
|
9
|
-
export let options: CreateMutationOptions
|
|
10
|
-
|
|
11
|
-
const queryClient = new QueryClient()
|
|
12
|
-
setQueryClientContext(queryClient)
|
|
13
|
-
|
|
14
|
-
const mutation = createMutation(options)
|
|
15
|
-
</script>
|
|
16
|
-
|
|
17
|
-
<button on:click={() => $mutation.mutate()}>Click</button>
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { createQueries, QueryClient } from '../index'
|
|
3
|
-
import { setQueryClientContext } from '../context'
|
|
4
|
-
import type { QueriesOptions } from '../createQueries'
|
|
5
|
-
|
|
6
|
-
export let options: { queries: [...QueriesOptions<any>] }
|
|
7
|
-
|
|
8
|
-
const queryClient = new QueryClient()
|
|
9
|
-
setQueryClientContext(queryClient)
|
|
10
|
-
|
|
11
|
-
const queries = createQueries(options)
|
|
12
|
-
</script>
|
|
13
|
-
|
|
14
|
-
{#each $queries as query, index}
|
|
15
|
-
{#if query.isPending}
|
|
16
|
-
<p>Loading {index + 1}</p>
|
|
17
|
-
{:else if query.isSuccess}
|
|
18
|
-
<p>{query.data}</p>
|
|
19
|
-
{/if}
|
|
20
|
-
{/each}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
createQuery,
|
|
4
|
-
QueryClient,
|
|
5
|
-
type CreateQueryOptions,
|
|
6
|
-
type WritableOrVal,
|
|
7
|
-
} from '../index'
|
|
8
|
-
import { setQueryClientContext } from '../context'
|
|
9
|
-
|
|
10
|
-
export let options: WritableOrVal<CreateQueryOptions<any>>
|
|
11
|
-
|
|
12
|
-
const queryClient = new QueryClient()
|
|
13
|
-
setQueryClientContext(queryClient)
|
|
14
|
-
|
|
15
|
-
const query = createQuery(options)
|
|
16
|
-
</script>
|
|
17
|
-
|
|
18
|
-
{#if $query.isPending}
|
|
19
|
-
<p>Loading</p>
|
|
20
|
-
{:else if $query.isError}
|
|
21
|
-
<p>Error</p>
|
|
22
|
-
{:else if $query.isSuccess}
|
|
23
|
-
<p>Success</p>
|
|
24
|
-
{/if}
|
|
25
|
-
|
|
26
|
-
<ul>
|
|
27
|
-
{#each $query.data ?? [] as entry}
|
|
28
|
-
<li>id: {entry.id}</li>
|
|
29
|
-
{/each}
|
|
30
|
-
</ul>
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi } from 'vitest'
|
|
2
|
-
import { fireEvent, render, screen } from '@testing-library/svelte'
|
|
3
|
-
import CreateMutation from './CreateMutation.svelte'
|
|
4
|
-
import { sleep } from './utils'
|
|
5
|
-
|
|
6
|
-
describe('createMutation', () => {
|
|
7
|
-
it('Call mutate and check function runs', async () => {
|
|
8
|
-
const mutationFn = vi.fn()
|
|
9
|
-
|
|
10
|
-
render(CreateMutation, {
|
|
11
|
-
props: {
|
|
12
|
-
options: {
|
|
13
|
-
mutationFn,
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
fireEvent.click(screen.getByRole('button'))
|
|
19
|
-
|
|
20
|
-
await sleep(20)
|
|
21
|
-
|
|
22
|
-
expect(mutationFn).toHaveBeenCalledTimes(1)
|
|
23
|
-
})
|
|
24
|
-
})
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest'
|
|
2
|
-
import { render, waitFor } from '@testing-library/svelte'
|
|
3
|
-
import CreateQueries from './CreateQueries.svelte'
|
|
4
|
-
import { sleep } from './utils'
|
|
5
|
-
|
|
6
|
-
describe('createQueries', () => {
|
|
7
|
-
it('Render and wait for success', async () => {
|
|
8
|
-
const rendered = render(CreateQueries, {
|
|
9
|
-
props: {
|
|
10
|
-
options: {
|
|
11
|
-
queries: [
|
|
12
|
-
{
|
|
13
|
-
queryKey: ['key-1'],
|
|
14
|
-
queryFn: async () => {
|
|
15
|
-
await sleep(10)
|
|
16
|
-
return 'Success 1'
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
queryKey: ['key-2'],
|
|
21
|
-
queryFn: async () => {
|
|
22
|
-
await sleep(10)
|
|
23
|
-
return 'Success 2'
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
await waitFor(() => {
|
|
32
|
-
expect(rendered.getByText('Loading 1')).toBeInTheDocument()
|
|
33
|
-
expect(rendered.getByText('Loading 2')).toBeInTheDocument()
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
await waitFor(() => {
|
|
37
|
-
expect(rendered.getByText('Success 1')).toBeInTheDocument()
|
|
38
|
-
expect(rendered.getByText('Success 2')).toBeInTheDocument()
|
|
39
|
-
})
|
|
40
|
-
})
|
|
41
|
-
})
|