@tanstack/solid-query 4.24.10 → 5.0.0-alpha.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.
Files changed (158) hide show
  1. package/build/cjs/index.js +298 -0
  2. package/build/cjs/index.js.map +1 -0
  3. package/build/esm/index.js +283 -0
  4. package/build/esm/index.js.map +1 -0
  5. package/build/source/QueryClientProvider.jsx +21 -0
  6. package/build/source/__tests__/QueryClientProvider.test.jsx +120 -0
  7. package/build/{solid → source}/__tests__/createInfiniteQuery.test.jsx +228 -372
  8. package/build/{solid → source}/__tests__/createMutation.test.jsx +174 -165
  9. package/build/{solid → source}/__tests__/createQueries.test.jsx +86 -367
  10. package/build/{solid → source}/__tests__/createQuery.test.jsx +991 -943
  11. package/build/{solid → source}/__tests__/createQuery.types.test.jsx +35 -24
  12. package/build/{solid → source}/__tests__/suspense.test.jsx +177 -148
  13. package/build/{solid → source}/__tests__/transition.test.jsx +7 -4
  14. package/build/{solid → source}/__tests__/useIsFetching.test.jsx +68 -85
  15. package/build/{solid → source}/__tests__/useIsMutating.test.jsx +78 -93
  16. package/build/{solid → source}/__tests__/utils.jsx +3 -9
  17. package/build/source/createBaseQuery.js +147 -0
  18. package/build/source/createInfiniteQuery.js +6 -0
  19. package/build/{solid → source}/createMutation.js +7 -9
  20. package/build/source/createQueries.js +32 -0
  21. package/build/source/createQuery.js +6 -0
  22. package/build/{solid → source}/index.js +5 -3
  23. package/build/source/setBatchUpdatesFn.js +3 -0
  24. package/build/source/useIsFetching.js +12 -0
  25. package/build/source/useIsMutating.js +12 -0
  26. package/build/source/utils.js +7 -0
  27. package/build/types/QueryClientProvider.d.ts +9 -0
  28. package/build/{lib → types}/__tests__/utils.d.ts +3 -8
  29. package/build/types/createBaseQuery.d.ts +4 -0
  30. package/build/types/createInfiniteQuery.d.ts +3 -0
  31. package/build/types/createMutation.d.ts +3 -0
  32. package/build/{lib → types}/createQueries.d.ts +10 -8
  33. package/build/types/createQuery.d.ts +11 -0
  34. package/build/{lib → types}/index.d.ts +4 -3
  35. package/build/types/setBatchUpdatesFn.d.ts +1 -0
  36. package/build/types/types.d.ts +33 -0
  37. package/build/types/useIsFetching.d.ts +8 -0
  38. package/build/types/useIsMutating.d.ts +8 -0
  39. package/build/types/utils.d.ts +1 -0
  40. package/build/umd/index.js +2 -0
  41. package/build/umd/index.js.map +1 -0
  42. package/package.json +25 -17
  43. package/src/QueryClientProvider.tsx +17 -86
  44. package/src/__tests__/QueryClientProvider.test.tsx +37 -140
  45. package/src/__tests__/createInfiniteQuery.test.tsx +277 -508
  46. package/src/__tests__/createMutation.test.tsx +177 -225
  47. package/src/__tests__/createQueries.test.tsx +180 -528
  48. package/src/__tests__/createQuery.test.tsx +970 -1200
  49. package/src/__tests__/createQuery.types.test.tsx +30 -25
  50. package/src/__tests__/suspense.test.tsx +141 -178
  51. package/src/__tests__/transition.test.tsx +7 -4
  52. package/src/__tests__/useIsFetching.test.tsx +77 -122
  53. package/src/__tests__/useIsMutating.test.tsx +83 -128
  54. package/src/__tests__/utils.tsx +4 -11
  55. package/src/createBaseQuery.ts +148 -60
  56. package/src/createInfiniteQuery.ts +15 -94
  57. package/src/createMutation.ts +9 -63
  58. package/src/createQueries.ts +44 -55
  59. package/src/createQuery.ts +42 -127
  60. package/src/index.ts +6 -3
  61. package/src/setBatchUpdatesFn.ts +4 -0
  62. package/src/types.ts +81 -75
  63. package/src/useIsFetching.ts +12 -44
  64. package/src/useIsMutating.ts +13 -29
  65. package/src/utils.ts +5 -79
  66. package/build/lib/QueryClientProvider.d.ts +0 -24
  67. package/build/lib/QueryClientProvider.esm.js +0 -74
  68. package/build/lib/QueryClientProvider.esm.js.map +0 -1
  69. package/build/lib/QueryClientProvider.js +0 -80
  70. package/build/lib/QueryClientProvider.js.map +0 -1
  71. package/build/lib/QueryClientProvider.mjs +0 -74
  72. package/build/lib/QueryClientProvider.mjs.map +0 -1
  73. package/build/lib/createBaseQuery.d.ts +0 -4
  74. package/build/lib/createBaseQuery.esm.js +0 -93
  75. package/build/lib/createBaseQuery.esm.js.map +0 -1
  76. package/build/lib/createBaseQuery.js +0 -97
  77. package/build/lib/createBaseQuery.js.map +0 -1
  78. package/build/lib/createBaseQuery.mjs +0 -93
  79. package/build/lib/createBaseQuery.mjs.map +0 -1
  80. package/build/lib/createInfiniteQuery.d.ts +0 -5
  81. package/build/lib/createInfiniteQuery.esm.js +0 -20
  82. package/build/lib/createInfiniteQuery.esm.js.map +0 -1
  83. package/build/lib/createInfiniteQuery.js +0 -24
  84. package/build/lib/createInfiniteQuery.js.map +0 -1
  85. package/build/lib/createInfiniteQuery.mjs +0 -20
  86. package/build/lib/createInfiniteQuery.mjs.map +0 -1
  87. package/build/lib/createMutation.d.ts +0 -6
  88. package/build/lib/createMutation.esm.js +0 -45
  89. package/build/lib/createMutation.esm.js.map +0 -1
  90. package/build/lib/createMutation.js +0 -49
  91. package/build/lib/createMutation.js.map +0 -1
  92. package/build/lib/createMutation.mjs +0 -45
  93. package/build/lib/createMutation.mjs.map +0 -1
  94. package/build/lib/createQueries.esm.js +0 -54
  95. package/build/lib/createQueries.esm.js.map +0 -1
  96. package/build/lib/createQueries.js +0 -58
  97. package/build/lib/createQueries.js.map +0 -1
  98. package/build/lib/createQueries.mjs +0 -54
  99. package/build/lib/createQueries.mjs.map +0 -1
  100. package/build/lib/createQuery.d.ts +0 -23
  101. package/build/lib/createQuery.esm.js +0 -25
  102. package/build/lib/createQuery.esm.js.map +0 -1
  103. package/build/lib/createQuery.js +0 -29
  104. package/build/lib/createQuery.js.map +0 -1
  105. package/build/lib/createQuery.mjs +0 -25
  106. package/build/lib/createQuery.mjs.map +0 -1
  107. package/build/lib/index.esm.js +0 -9
  108. package/build/lib/index.esm.js.map +0 -1
  109. package/build/lib/index.js +0 -31
  110. package/build/lib/index.js.map +0 -1
  111. package/build/lib/index.mjs +0 -9
  112. package/build/lib/index.mjs.map +0 -1
  113. package/build/lib/types.d.ts +0 -47
  114. package/build/lib/useIsFetching.d.ts +0 -7
  115. package/build/lib/useIsFetching.esm.js +0 -29
  116. package/build/lib/useIsFetching.esm.js.map +0 -1
  117. package/build/lib/useIsFetching.js +0 -33
  118. package/build/lib/useIsFetching.js.map +0 -1
  119. package/build/lib/useIsFetching.mjs +0 -29
  120. package/build/lib/useIsFetching.mjs.map +0 -1
  121. package/build/lib/useIsMutating.d.ts +0 -8
  122. package/build/lib/useIsMutating.esm.js +0 -22
  123. package/build/lib/useIsMutating.esm.js.map +0 -1
  124. package/build/lib/useIsMutating.js +0 -26
  125. package/build/lib/useIsMutating.js.map +0 -1
  126. package/build/lib/useIsMutating.mjs +0 -22
  127. package/build/lib/useIsMutating.mjs.map +0 -1
  128. package/build/lib/utils.d.ts +0 -14
  129. package/build/lib/utils.esm.js +0 -63
  130. package/build/lib/utils.esm.js.map +0 -1
  131. package/build/lib/utils.js +0 -72
  132. package/build/lib/utils.js.map +0 -1
  133. package/build/lib/utils.mjs +0 -63
  134. package/build/lib/utils.mjs.map +0 -1
  135. package/build/solid/QueryClientProvider.jsx +0 -49
  136. package/build/solid/__tests__/QueryClientProvider.test.jsx +0 -185
  137. package/build/solid/createBaseQuery.js +0 -81
  138. package/build/solid/createInfiniteQuery.js +0 -16
  139. package/build/solid/createQueries.js +0 -39
  140. package/build/solid/createQuery.js +0 -16
  141. package/build/solid/useIsFetching.js +0 -23
  142. package/build/solid/useIsMutating.js +0 -16
  143. package/build/solid/utils.js +0 -45
  144. package/build/umd/index.development.js +0 -3577
  145. package/build/umd/index.development.js.map +0 -1
  146. package/build/umd/index.production.js +0 -2
  147. package/build/umd/index.production.js.map +0 -1
  148. /package/build/{solid → source}/types.js +0 -0
  149. /package/build/{lib → types}/__tests__/QueryClientProvider.test.d.ts +0 -0
  150. /package/build/{lib → types}/__tests__/createInfiniteQuery.test.d.ts +0 -0
  151. /package/build/{lib → types}/__tests__/createMutation.test.d.ts +0 -0
  152. /package/build/{lib → types}/__tests__/createQueries.test.d.ts +0 -0
  153. /package/build/{lib → types}/__tests__/createQuery.test.d.ts +0 -0
  154. /package/build/{lib → types}/__tests__/createQuery.types.test.d.ts +0 -0
  155. /package/build/{lib → types}/__tests__/suspense.test.d.ts +0 -0
  156. /package/build/{lib → types}/__tests__/transition.test.d.ts +0 -0
  157. /package/build/{lib → types}/__tests__/useIsFetching.test.d.ts +0 -0
  158. /package/build/{lib → types}/__tests__/useIsMutating.test.d.ts +0 -0
@@ -1,157 +1,72 @@
1
- import type { QueryFunction, QueryOptions } from '@tanstack/query-core'
1
+ import type {
2
+ QueryClient,
3
+ QueryKey,
4
+ RegisteredError,
5
+ } from '@tanstack/query-core'
2
6
  import { QueryObserver } from '@tanstack/query-core'
7
+ import { createMemo } from 'solid-js'
8
+ import { createBaseQuery } from './createBaseQuery'
3
9
  import type {
4
10
  CreateQueryOptions,
5
11
  CreateQueryResult,
6
12
  DefinedCreateQueryResult,
7
- SolidQueryKey,
13
+ FunctionedParams,
14
+ SolidQueryOptions,
8
15
  } from './types'
9
- import { createComputed } from 'solid-js'
10
- import { createStore } from 'solid-js/store'
11
- import { parseQueryArgs } from './utils'
12
- import { createBaseQuery } from './createBaseQuery'
13
16
 
14
- // There are several ways to create a query.
15
- // 1. createQuery(options: CreateQueryOptions)
16
- // 2. createQuery(querykey: () => Serializable[], options: CreateQueryOptions)
17
- // 3. createQuery(querykey: () => Serializable[], queryFunc: Fetcher Function, options: CreateQueryOptions)
18
- // 4. The fourth overload is a combination of all three function params
19
- export function createQuery<
17
+ type UndefinedInitialDataOptions<
20
18
  TQueryFnData = unknown,
21
- TError = unknown,
19
+ TError = RegisteredError,
22
20
  TData = TQueryFnData,
23
- TQueryKey extends SolidQueryKey = SolidQueryKey,
24
- >(
25
- options: Omit<
26
- CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
27
- 'initialData'
28
- > & {
29
- initialData?: () => undefined
30
- },
31
- ): CreateQueryResult<TData, TError>
32
- export function createQuery<
21
+ TQueryKey extends QueryKey = QueryKey,
22
+ > = FunctionedParams<
23
+ SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
24
+ initialData?: undefined
25
+ }
26
+ >
27
+
28
+ type DefinedInitialDataOptions<
33
29
  TQueryFnData = unknown,
34
- TError = unknown,
30
+ TError = RegisteredError,
35
31
  TData = TQueryFnData,
36
- TQueryKey extends SolidQueryKey = SolidQueryKey,
37
- >(
38
- options: Omit<
39
- CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
40
- 'initialData'
41
- > & {
32
+ TQueryKey extends QueryKey = QueryKey,
33
+ > = FunctionedParams<
34
+ SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
42
35
  initialData: TQueryFnData | (() => TQueryFnData)
43
- },
44
- ): DefinedCreateQueryResult<TData, TError>
45
- export function createQuery<
46
- TQueryFnData = unknown,
47
- TError = unknown,
48
- TData = TQueryFnData,
49
- TQueryKey extends SolidQueryKey = SolidQueryKey,
50
- >(
51
- options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
52
- ): CreateQueryResult<TData, TError>
53
- export function createQuery<
54
- TQueryFnData = unknown,
55
- TError = unknown,
56
- TData = TQueryFnData,
57
- TQueryKey extends SolidQueryKey = SolidQueryKey,
58
- >(
59
- queryKey: TQueryKey,
60
- options?: Omit<
61
- CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
62
- 'queryKey' | 'initialData'
63
- > & { initialData?: () => undefined },
64
- ): CreateQueryResult<TData, TError>
65
- export function createQuery<
66
- TQueryFnData = unknown,
67
- TError = unknown,
68
- TData = TQueryFnData,
69
- TQueryKey extends SolidQueryKey = SolidQueryKey,
70
- >(
71
- queryKey: TQueryKey,
72
- options?: Omit<
73
- CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
74
- 'queryKey' | 'initialData'
75
- > & { initialData: TQueryFnData | (() => TQueryFnData) },
76
- ): DefinedCreateQueryResult<TData, TError>
77
- export function createQuery<
78
- TQueryFnData = unknown,
79
- TError = unknown,
80
- TData = TQueryFnData,
81
- TQueryKey extends SolidQueryKey = SolidQueryKey,
82
- >(
83
- queryKey: TQueryKey,
84
- options?: Omit<
85
- CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
86
- 'queryKey'
87
- >,
88
- ): CreateQueryResult<TData, TError>
36
+ }
37
+ >
38
+
89
39
  export function createQuery<
90
40
  TQueryFnData = unknown,
91
- TError = unknown,
41
+ TError = RegisteredError,
92
42
  TData = TQueryFnData,
93
- TQueryKey extends SolidQueryKey = SolidQueryKey,
43
+ TQueryKey extends QueryKey = QueryKey,
94
44
  >(
95
- queryKey: TQueryKey,
96
- // TODO(lukemurray): not sure if we want to use return type here
97
- queryFn: QueryFunction<TQueryFnData, ReturnType<TQueryKey>>,
98
- options?: Omit<
99
- CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
100
- 'queryKey' | 'queryFn' | 'initialData'
101
- > & { initialData?: () => undefined },
45
+ options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
46
+ queryClient?: () => QueryClient,
102
47
  ): CreateQueryResult<TData, TError>
48
+
103
49
  export function createQuery<
104
50
  TQueryFnData = unknown,
105
- TError = unknown,
51
+ TError = RegisteredError,
106
52
  TData = TQueryFnData,
107
- TQueryKey extends SolidQueryKey = SolidQueryKey,
53
+ TQueryKey extends QueryKey = QueryKey,
108
54
  >(
109
- queryKey: TQueryKey,
110
- queryFn: QueryFunction<TQueryFnData, ReturnType<TQueryKey>>,
111
- options?: Omit<
112
- CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
113
- 'queryKey' | 'queryFn' | 'initialData'
114
- > & { initialData: TQueryFnData | (() => TQueryFnData) },
55
+ options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
56
+ queryClient?: () => QueryClient,
115
57
  ): DefinedCreateQueryResult<TData, TError>
116
- export function createQuery<
117
- TQueryFnData = unknown,
118
- TError = unknown,
119
- TData = TQueryFnData,
120
- TQueryKey extends SolidQueryKey = SolidQueryKey,
121
- >(
122
- queryKey: TQueryKey,
123
- queryFn: QueryFunction<TQueryFnData, ReturnType<TQueryKey>>,
124
- options?: Omit<
125
- CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
126
- 'queryKey' | 'queryFn'
127
- >,
128
- ): CreateQueryResult<TData, TError>
129
58
  export function createQuery<
130
59
  TQueryFnData,
131
- TError,
60
+ TError = RegisteredError,
132
61
  TData = TQueryFnData,
133
- TQueryKey extends SolidQueryKey = SolidQueryKey,
62
+ TQueryKey extends QueryKey = QueryKey,
134
63
  >(
135
- arg1: TQueryKey | CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
136
- arg2?:
137
- | QueryFunction<TQueryFnData, ReturnType<TQueryKey>>
138
- | CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
139
- arg3?: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
140
- ): CreateQueryResult<TData, TError> {
141
- // The parseQuery Args functions helps normalize the arguments into the correct form.
142
- // Whatever the parameters are, they are normalized into the correct form.
143
- const [parsedOptions, setParsedOptions] = createStore(
144
- parseQueryArgs(arg1, arg2, arg3),
145
- )
146
-
147
- // Watch for changes in the options and update the parsed options.
148
- createComputed(() => {
149
- const newParsedOptions = parseQueryArgs(arg1, arg2, arg3)
150
- setParsedOptions(newParsedOptions)
151
- })
152
-
64
+ options: CreateQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
65
+ queryClient?: () => QueryClient,
66
+ ) {
153
67
  return createBaseQuery(
154
- parsedOptions as QueryOptions<any, any, any, ReturnType<TQueryKey>>,
68
+ createMemo(() => options()),
155
69
  QueryObserver,
70
+ queryClient,
156
71
  )
157
72
  }
package/src/index.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  /* istanbul ignore file */
2
2
 
3
+ // Side Effects
4
+ import './setBatchUpdatesFn'
5
+
3
6
  // Re-export core
4
7
  export * from '@tanstack/query-core'
5
8
 
@@ -7,13 +10,13 @@ export * from '@tanstack/query-core'
7
10
  export * from './types'
8
11
  export { createQuery } from './createQuery'
9
12
  export {
10
- defaultContext,
13
+ QueryClientContext,
11
14
  QueryClientProvider,
12
15
  useQueryClient,
13
16
  } from './QueryClientProvider'
14
17
  export type { QueryClientProviderProps } from './QueryClientProvider'
15
18
  export { useIsFetching } from './useIsFetching'
16
- export { useIsMutating } from './useIsMutating'
17
- export { createMutation } from './createMutation'
18
19
  export { createInfiniteQuery } from './createInfiniteQuery'
20
+ export { createMutation } from './createMutation'
21
+ export { useIsMutating } from './useIsMutating'
19
22
  export { createQueries } from './createQueries'
@@ -0,0 +1,4 @@
1
+ import { notifyManager } from '@tanstack/query-core'
2
+ import { batch } from 'solid-js'
3
+
4
+ notifyManager.setBatchNotifyFunction(batch)
package/src/types.ts CHANGED
@@ -1,8 +1,6 @@
1
1
  /* istanbul ignore file */
2
2
 
3
- import type { Context } from 'solid-js'
4
3
  import type {
5
- QueryClient,
6
4
  QueryKey,
7
5
  QueryObserverOptions,
8
6
  QueryObserverResult,
@@ -12,120 +10,136 @@ import type {
12
10
  DefinedQueryObserverResult,
13
11
  InfiniteQueryObserverOptions,
14
12
  InfiniteQueryObserverResult,
15
- QueryFilters,
16
- QueryOptions,
13
+ WithRequired,
14
+ RegisteredError,
17
15
  } from '@tanstack/query-core'
18
16
 
19
- export interface ContextOptions {
20
- /**
21
- * Use this to pass your Solid Query context. Otherwise, `defaultContext` will be used.
22
- */
23
- context?: Context<QueryClient | undefined>
24
- }
25
-
26
- /* --- Create Query and Create Base Query Types --- */
27
- export type SolidQueryKey = () => readonly unknown[]
17
+ export type FunctionedParams<T> = () => T
28
18
 
29
19
  export interface CreateBaseQueryOptions<
30
20
  TQueryFnData = unknown,
31
- TError = unknown,
21
+ TError = RegisteredError,
32
22
  TData = TQueryFnData,
33
23
  TQueryData = TQueryFnData,
34
24
  TQueryKey extends QueryKey = QueryKey,
35
- > extends ContextOptions,
36
- QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> {}
25
+ > extends WithRequired<
26
+ QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>,
27
+ 'queryKey'
28
+ > {
29
+ deferStream?: boolean
30
+ }
37
31
 
38
- export interface CreateQueryOptions<
32
+ export interface SolidQueryOptions<
39
33
  TQueryFnData = unknown,
40
- TError = unknown,
34
+ TError = RegisteredError,
41
35
  TData = TQueryFnData,
42
- TQueryKey extends () => readonly unknown[] = SolidQueryKey,
43
- > extends Omit<
36
+ TQueryKey extends QueryKey = QueryKey,
37
+ > extends WithRequired<
44
38
  CreateBaseQueryOptions<
45
39
  TQueryFnData,
46
40
  TError,
47
41
  TData,
48
42
  TQueryFnData,
49
- ReturnType<TQueryKey>
43
+ TQueryKey
50
44
  >,
51
45
  'queryKey'
52
- > {
53
- queryKey?: TQueryKey
54
- }
46
+ > {}
47
+
48
+ export type CreateQueryOptions<
49
+ TQueryFnData = unknown,
50
+ TError = RegisteredError,
51
+ TData = TQueryFnData,
52
+ TQueryKey extends QueryKey = QueryKey,
53
+ > = FunctionedParams<SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey>>
54
+
55
+ /* --- Create Query and Create Base Query Types --- */
55
56
 
56
57
  export type CreateBaseQueryResult<
57
58
  TData = unknown,
58
- TError = unknown,
59
+ TError = RegisteredError,
59
60
  > = QueryObserverResult<TData, TError>
60
61
 
61
62
  export type CreateQueryResult<
62
63
  TData = unknown,
63
- TError = unknown,
64
+ TError = RegisteredError,
64
65
  > = CreateBaseQueryResult<TData, TError>
65
66
 
66
67
  export type DefinedCreateBaseQueryResult<
67
68
  TData = unknown,
68
- TError = unknown,
69
+ TError = RegisteredError,
69
70
  > = DefinedQueryObserverResult<TData, TError>
70
71
 
71
72
  export type DefinedCreateQueryResult<
72
73
  TData = unknown,
73
- TError = unknown,
74
+ TError = RegisteredError,
74
75
  > = DefinedCreateBaseQueryResult<TData, TError>
75
76
 
76
- export type ParseQueryArgs<
77
- TOptions extends Omit<
78
- QueryOptions<any, any, any, ReturnType<TQueryKey>>,
79
- 'queryKey'
80
- > & {
81
- queryKey?: TQueryKey
82
- },
83
- TQueryKey extends () => readonly unknown[] = SolidQueryKey,
84
- > = TOptions['queryKey'] extends () => infer R
85
- ? Omit<TOptions, 'queryKey'> & { queryKey?: R }
86
- : TOptions
87
-
88
77
  /* --- Create Infinite Queries Types --- */
89
- export interface CreateInfiniteQueryOptions<
78
+ export interface SolidInfiniteQueryOptions<
90
79
  TQueryFnData = unknown,
91
- TError = unknown,
80
+ TError = RegisteredError,
92
81
  TData = TQueryFnData,
93
82
  TQueryData = TQueryFnData,
94
- TQueryKey extends () => readonly unknown[] = SolidQueryKey,
95
- > extends ContextOptions,
96
- Omit<
97
- InfiniteQueryObserverOptions<
98
- TQueryFnData,
99
- TError,
100
- TData,
101
- TQueryData,
102
- ReturnType<TQueryKey>
103
- >,
104
- 'queryKey'
105
- > {
106
- queryKey?: TQueryKey
83
+ TQueryKey extends QueryKey = QueryKey,
84
+ TPageParam = unknown,
85
+ > extends Omit<
86
+ InfiniteQueryObserverOptions<
87
+ TQueryFnData,
88
+ TError,
89
+ TData,
90
+ TQueryData,
91
+ TQueryKey,
92
+ TPageParam
93
+ >,
94
+ 'queryKey'
95
+ > {
96
+ queryKey: TQueryKey
97
+ deferStream?: boolean
107
98
  }
108
99
 
100
+ export type CreateInfiniteQueryOptions<
101
+ TQueryFnData = unknown,
102
+ TError = RegisteredError,
103
+ TData = TQueryFnData,
104
+ TQueryKey extends QueryKey = QueryKey,
105
+ TPageParam = unknown,
106
+ > = FunctionedParams<
107
+ SolidInfiniteQueryOptions<
108
+ TQueryFnData,
109
+ TError,
110
+ TData,
111
+ TQueryFnData,
112
+ TQueryKey,
113
+ TPageParam
114
+ >
115
+ >
116
+
109
117
  export type CreateInfiniteQueryResult<
110
118
  TData = unknown,
111
- TError = unknown,
119
+ TError = RegisteredError,
112
120
  > = InfiniteQueryObserverResult<TData, TError>
113
121
 
114
122
  /* --- Create Mutation Types --- */
115
- export interface CreateMutationOptions<
123
+ export interface SolidMutationOptions<
116
124
  TData = unknown,
117
- TError = unknown,
125
+ TError = RegisteredError,
118
126
  TVariables = void,
119
127
  TContext = unknown,
120
- > extends ContextOptions,
121
- Omit<
122
- MutationObserverOptions<TData, TError, TVariables, TContext>,
123
- '_defaulted' | 'variables'
124
- > {}
128
+ > extends Omit<
129
+ MutationObserverOptions<TData, TError, TVariables, TContext>,
130
+ '_defaulted' | 'variables'
131
+ > {}
132
+
133
+ export type CreateMutationOptions<
134
+ TData = unknown,
135
+ TError = RegisteredError,
136
+ TVariables = void,
137
+ TContext = unknown,
138
+ > = FunctionedParams<SolidMutationOptions<TData, TError, TVariables, TContext>>
125
139
 
126
140
  export type CreateMutateFunction<
127
141
  TData = unknown,
128
- TError = unknown,
142
+ TError = RegisteredError,
129
143
  TVariables = void,
130
144
  TContext = unknown,
131
145
  > = (
@@ -134,14 +148,14 @@ export type CreateMutateFunction<
134
148
 
135
149
  export type CreateMutateAsyncFunction<
136
150
  TData = unknown,
137
- TError = unknown,
151
+ TError = RegisteredError,
138
152
  TVariables = void,
139
153
  TContext = unknown,
140
154
  > = MutateFunction<TData, TError, TVariables, TContext>
141
155
 
142
156
  export type CreateBaseMutationResult<
143
157
  TData = unknown,
144
- TError = unknown,
158
+ TError = RegisteredError,
145
159
  TVariables = unknown,
146
160
  TContext = unknown,
147
161
  > = Override<
@@ -153,17 +167,9 @@ export type CreateBaseMutationResult<
153
167
 
154
168
  export type CreateMutationResult<
155
169
  TData = unknown,
156
- TError = unknown,
170
+ TError = RegisteredError,
157
171
  TVariables = unknown,
158
172
  TContext = unknown,
159
173
  > = CreateBaseMutationResult<TData, TError, TVariables, TContext>
160
174
 
161
175
  type Override<A, B> = { [K in keyof A]: K extends keyof B ? B[K] : A[K] }
162
-
163
- /* --- Use Is Fetching Types --- */
164
- export interface SolidQueryFilters extends Omit<QueryFilters, 'queryKey'> {
165
- queryKey?: SolidQueryKey
166
- }
167
-
168
- export type ParseFilterArgs<T extends SolidQueryFilters> =
169
- T['queryKey'] extends () => infer R ? T & { queryKey: R } : T
@@ -1,58 +1,26 @@
1
- import type { QueryFilters } from '@tanstack/query-core'
2
-
3
- import type { ContextOptions, SolidQueryKey, SolidQueryFilters } from './types'
4
- import { useQueryClient } from './QueryClientProvider'
1
+ import type { QueryClient, QueryFilters } from '@tanstack/query-core'
5
2
  import type { Accessor } from 'solid-js'
6
- import { createSignal, onCleanup, createComputed, createMemo } from 'solid-js'
7
- import { parseFilterArgs } from './utils'
8
-
9
- interface Options extends ContextOptions {}
10
-
11
- export function useIsFetching(
12
- filters?: SolidQueryFilters,
13
- options?: Options,
14
- ): Accessor<number>
15
- export function useIsFetching(
16
- queryKey?: SolidQueryKey,
17
- filters?: SolidQueryFilters,
18
- options?: Options,
19
- ): Accessor<number>
20
- export function useIsFetching(
21
- arg1?: SolidQueryKey | SolidQueryFilters,
22
- arg2?: SolidQueryFilters | Options,
23
- arg3?: Options,
24
- ): Accessor<number> {
25
- const [filtersObj, optionsObj = {}] = parseFilterArgs(arg1, arg2, arg3)
3
+ import { createMemo, createSignal, onCleanup } from 'solid-js'
4
+ import { useQueryClient } from './QueryClientProvider'
26
5
 
27
- const [filters, setFilters] = createSignal(filtersObj)
28
- const [options, setOptions] = createSignal(optionsObj)
6
+ type Options = () => {
7
+ filters?: QueryFilters
8
+ queryClient?: QueryClient
9
+ }
29
10
 
30
- const queryClient = createMemo(() =>
31
- useQueryClient({ context: options().context }),
32
- )
11
+ export function useIsFetching(options: Options = () => ({})): Accessor<number> {
12
+ const queryClient = createMemo(() => useQueryClient(options().queryClient))
33
13
  const queryCache = createMemo(() => queryClient().getQueryCache())
34
14
 
35
15
  const [fetches, setFetches] = createSignal(
36
- queryClient().isFetching(filters as QueryFilters),
16
+ queryClient().isFetching(options().filters),
37
17
  )
38
18
 
39
- createComputed(() => {
40
- const [newFiltersObj, newOptionsObj = {}] = parseFilterArgs(
41
- arg1,
42
- arg2,
43
- arg3,
44
- )
45
- setFilters(newFiltersObj)
46
- setOptions(newOptionsObj)
47
- })
48
-
49
19
  const unsubscribe = queryCache().subscribe(() => {
50
- setFetches(queryClient().isFetching(filters() as QueryFilters))
20
+ setFetches(queryClient().isFetching(options().filters))
51
21
  })
52
22
 
53
- onCleanup(() => {
54
- unsubscribe()
55
- })
23
+ onCleanup(unsubscribe)
56
24
 
57
25
  return fetches
58
26
  }
@@ -1,42 +1,26 @@
1
- import type { MutationKey, MutationFilters } from '@tanstack/query-core'
2
- import { parseMutationFilterArgs } from '@tanstack/query-core'
3
- import type { ContextOptions } from './types'
1
+ import type { MutationFilters, QueryClient } from '@tanstack/query-core'
4
2
  import { useQueryClient } from './QueryClientProvider'
5
3
  import type { Accessor } from 'solid-js'
6
- import { createSignal, onCleanup } from 'solid-js'
4
+ import { createSignal, onCleanup, createMemo } from 'solid-js'
7
5
 
8
- interface Options extends ContextOptions {}
9
-
10
- export function useIsMutating(
11
- filters?: MutationFilters,
12
- options?: Options,
13
- ): Accessor<number>
14
- export function useIsMutating(
15
- mutationKey?: MutationKey,
16
- filters?: Omit<MutationFilters, 'mutationKey'>,
17
- options?: Options,
18
- ): Accessor<number>
19
- export function useIsMutating(
20
- arg1?: MutationKey | MutationFilters,
21
- arg2?: Omit<MutationFilters, 'mutationKey'> | Options,
22
- arg3?: Options,
23
- ): Accessor<number> {
24
- const [filters, options = {}] = parseMutationFilterArgs(arg1, arg2, arg3)
6
+ type Options = () => {
7
+ filters?: MutationFilters
8
+ queryClient?: QueryClient
9
+ }
25
10
 
26
- const queryClient = useQueryClient({ context: options.context })
27
- const mutationCache = queryClient.getMutationCache()
11
+ export function useIsMutating(options: Options = () => ({})): Accessor<number> {
12
+ const queryClient = createMemo(() => useQueryClient(options().queryClient))
13
+ const mutationCache = createMemo(() => queryClient().getMutationCache())
28
14
 
29
15
  const [mutations, setMutations] = createSignal(
30
- queryClient.isMutating(filters),
16
+ queryClient().isMutating(options().filters),
31
17
  )
32
18
 
33
- const unsubscribe = mutationCache.subscribe((_result) => {
34
- setMutations(queryClient.isMutating(filters))
19
+ const unsubscribe = mutationCache().subscribe((_result) => {
20
+ setMutations(queryClient().isMutating(options().filters))
35
21
  })
36
22
 
37
- onCleanup(() => {
38
- unsubscribe()
39
- })
23
+ onCleanup(unsubscribe)
40
24
 
41
25
  return mutations
42
26
  }