@tanstack/solid-query 4.24.9 → 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 -3572
  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,10 +1,7 @@
1
1
  import { render, screen, waitFor } from 'solid-testing-library'
2
2
  import { queryKey } from './utils'
3
3
 
4
- import { QueryCache, QueryClient } from '@tanstack/query-core'
5
- import type { Context } from 'solid-js'
6
- import { createContext, useContext } from 'solid-js'
7
- import { renderToString } from 'solid-js/web'
4
+ import { QueryCache } from '@tanstack/query-core'
8
5
  import { createQuery, QueryClientProvider, useQueryClient } from '..'
9
6
  import { createQueryClient, sleep } from './utils'
10
7
 
@@ -16,10 +13,13 @@ describe('QueryClientProvider', () => {
16
13
  const queryClient = createQueryClient({ queryCache })
17
14
 
18
15
  function Page() {
19
- const query = createQuery(key, async () => {
20
- await sleep(10)
21
- return 'test'
22
- })
16
+ const query = createQuery(() => ({
17
+ queryKey: key,
18
+ queryFn: async () => {
19
+ await sleep(10)
20
+ return 'test'
21
+ },
22
+ }))
23
23
 
24
24
  return (
25
25
  <div>
@@ -38,7 +38,7 @@ describe('QueryClientProvider', () => {
38
38
  return screen.getByText('test')
39
39
  })
40
40
 
41
- expect(queryCache.find(key())).toBeDefined()
41
+ expect(queryCache.find({ queryKey: key })).toBeDefined()
42
42
  })
43
43
 
44
44
  it('allows multiple caches to be partitioned', async () => {
@@ -52,10 +52,13 @@ describe('QueryClientProvider', () => {
52
52
  const queryClient2 = createQueryClient({ queryCache: queryCache2 })
53
53
 
54
54
  function Page1() {
55
- const query = createQuery(key1, async () => {
56
- await sleep(10)
57
- return 'test1'
58
- })
55
+ const query = createQuery(() => ({
56
+ queryKey: key1,
57
+ queryFn: async () => {
58
+ await sleep(10)
59
+ return 'test1'
60
+ },
61
+ }))
59
62
 
60
63
  return (
61
64
  <div>
@@ -64,10 +67,13 @@ describe('QueryClientProvider', () => {
64
67
  )
65
68
  }
66
69
  function Page2() {
67
- const query = createQuery(key2, async () => {
68
- await sleep(10)
69
- return 'test2'
70
- })
70
+ const query = createQuery(() => ({
71
+ queryKey: key2,
72
+ queryFn: async () => {
73
+ await sleep(10)
74
+ return 'test2'
75
+ },
76
+ }))
71
77
 
72
78
  return (
73
79
  <div>
@@ -90,10 +96,10 @@ describe('QueryClientProvider', () => {
90
96
  await waitFor(() => screen.getByText('test1'))
91
97
  await waitFor(() => screen.getByText('test2'))
92
98
 
93
- expect(queryCache1.find(key1())).toBeDefined()
94
- expect(queryCache1.find(key2())).not.toBeDefined()
95
- expect(queryCache2.find(key1())).not.toBeDefined()
96
- expect(queryCache2.find(key2())).toBeDefined()
99
+ expect(queryCache1.find({ queryKey: key1 })).toBeDefined()
100
+ expect(queryCache1.find({ queryKey: key2 })).not.toBeDefined()
101
+ expect(queryCache2.find({ queryKey: key1 })).not.toBeDefined()
102
+ expect(queryCache2.find({ queryKey: key2 })).toBeDefined()
97
103
  })
98
104
 
99
105
  it("uses defaultOptions for queries when they don't provide their own config", async () => {
@@ -104,16 +110,19 @@ describe('QueryClientProvider', () => {
104
110
  queryCache,
105
111
  defaultOptions: {
106
112
  queries: {
107
- cacheTime: Infinity,
113
+ gcTime: Infinity,
108
114
  },
109
115
  },
110
116
  })
111
117
 
112
118
  function Page() {
113
- const query = createQuery(key, async () => {
114
- await sleep(10)
115
- return 'test'
116
- })
119
+ const query = createQuery(() => ({
120
+ queryKey: key,
121
+ queryFn: async () => {
122
+ await sleep(10)
123
+ return 'test'
124
+ },
125
+ }))
117
126
 
118
127
  return (
119
128
  <div>
@@ -130,66 +139,8 @@ describe('QueryClientProvider', () => {
130
139
 
131
140
  await waitFor(() => screen.getByText('test'))
132
141
 
133
- expect(queryCache.find(key())).toBeDefined()
134
- expect(queryCache.find(key())?.options.cacheTime).toBe(Infinity)
135
- })
136
-
137
- describe('with custom context', () => {
138
- it('uses the correct context', async () => {
139
- const key = queryKey()
140
-
141
- const contextOuter = createContext<QueryClient | undefined>(undefined)
142
- const contextInner = createContext<QueryClient | undefined>(undefined)
143
-
144
- const queryCacheOuter = new QueryCache()
145
- const queryClientOuter = new QueryClient({ queryCache: queryCacheOuter })
146
-
147
- const queryCacheInner = new QueryCache()
148
- const queryClientInner = new QueryClient({ queryCache: queryCacheInner })
149
-
150
- const queryCacheInnerInner = new QueryCache()
151
- const queryClientInnerInner = new QueryClient({
152
- queryCache: queryCacheInnerInner,
153
- })
154
-
155
- function Page() {
156
- const queryOuter = createQuery(key, async () => 'testOuter', {
157
- context: contextOuter,
158
- })
159
- const queryInner = createQuery(key, async () => 'testInner', {
160
- context: contextInner,
161
- })
162
- const queryInnerInner = createQuery(key, async () => 'testInnerInner')
163
-
164
- return (
165
- <div>
166
- <h1>
167
- {queryOuter.data} {queryInner.data} {queryInnerInner.data}
168
- </h1>
169
- </div>
170
- )
171
- }
172
-
173
- // contextSharing should be ignored when passing a custom context.
174
- const contextSharing = true
175
-
176
- render(() => (
177
- <QueryClientProvider client={queryClientOuter} context={contextOuter}>
178
- <QueryClientProvider client={queryClientInner} context={contextInner}>
179
- <QueryClientProvider
180
- client={queryClientInnerInner}
181
- contextSharing={contextSharing}
182
- >
183
- <Page />
184
- </QueryClientProvider>
185
- </QueryClientProvider>
186
- </QueryClientProvider>
187
- ))
188
-
189
- await waitFor(() =>
190
- screen.getByText('testOuter testInner testInnerInner'),
191
- )
192
- })
142
+ expect(queryCache.find({ queryKey: key })).toBeDefined()
143
+ expect(queryCache.find({ queryKey: key })?.options.gcTime).toBe(Infinity)
193
144
  })
194
145
 
195
146
  describe('useQueryClient', () => {
@@ -209,59 +160,5 @@ describe('QueryClientProvider', () => {
209
160
 
210
161
  consoleMock.mockRestore()
211
162
  })
212
-
213
- it('should use window to get the context when contextSharing is true', () => {
214
- const queryCache = new QueryCache()
215
- const queryClient = createQueryClient({ queryCache })
216
-
217
- let queryClientFromHook: QueryClient | undefined
218
- let queryClientFromWindow: QueryClient | undefined
219
-
220
- function Page() {
221
- queryClientFromHook = useQueryClient()
222
- queryClientFromWindow = useContext(
223
- window.SolidQueryClientContext as Context<QueryClient | undefined>,
224
- )
225
- return null
226
- }
227
-
228
- render(() => (
229
- <QueryClientProvider client={queryClient} contextSharing={true}>
230
- <Page />
231
- </QueryClientProvider>
232
- ))
233
-
234
- expect(queryClientFromHook).toEqual(queryClient)
235
- expect(queryClientFromWindow).toEqual(queryClient)
236
- })
237
-
238
- it.skip('should not use window to get the context when contextSharing is true and window does not exist', () => {
239
- const queryCache = new QueryCache()
240
- const queryClient = createQueryClient({ queryCache })
241
-
242
- // Mock a non web browser environment
243
- const windowSpy = jest
244
- .spyOn(window, 'window', 'get')
245
- .mockImplementation(undefined)
246
-
247
- let queryClientFromHook: QueryClient | undefined
248
-
249
- function Page() {
250
- queryClientFromHook = useQueryClient()
251
- return null
252
- }
253
-
254
- // TODO(lukemurray): fails because renderToString never calls Page
255
- // probably an SSR-testing issue we need to fix.
256
- renderToString(() => (
257
- <QueryClientProvider client={queryClient} contextSharing={true}>
258
- <Page />
259
- </QueryClientProvider>
260
- ))
261
-
262
- expect(queryClientFromHook).toEqual(queryClient)
263
-
264
- windowSpy.mockRestore()
265
- })
266
163
  })
267
164
  })