@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
@@ -8,7 +8,11 @@ import {
8
8
  Show,
9
9
  Suspense,
10
10
  } from 'solid-js'
11
- import type { CreateInfiniteQueryResult, CreateQueryResult } from '..'
11
+ import type {
12
+ CreateInfiniteQueryResult,
13
+ CreateQueryResult,
14
+ InfiniteData,
15
+ } from '..'
12
16
  import {
13
17
  createInfiniteQuery,
14
18
  createQuery,
@@ -29,24 +33,23 @@ describe("useQuery's in Suspense mode", () => {
29
33
  let renders = 0
30
34
 
31
35
  function Page() {
32
- const [stateKey, setStateKey] = createSignal(key())
36
+ const [stateKey, setStateKey] = createSignal(key)
33
37
 
34
- const state = createQuery(
35
- stateKey,
36
- async () => {
38
+ const state = createQuery(() => ({
39
+ queryKey: stateKey(),
40
+ queryFn: async () => {
37
41
  count++
38
42
  await sleep(10)
39
43
  return count
40
44
  },
41
- { suspense: true },
42
- )
45
+ }))
43
46
 
44
47
  createRenderEffect(() => {
45
48
  states.push({ ...state })
46
49
  })
47
50
 
48
51
  createRenderEffect(
49
- on([() => ({ ...state }), key], () => {
52
+ on([() => ({ ...state }), () => key], () => {
50
53
  renders++
51
54
  }),
52
55
  )
@@ -73,9 +76,6 @@ describe("useQuery's in Suspense mode", () => {
73
76
  await waitFor(() => screen.getByText('data: 2'))
74
77
 
75
78
  expect(renders).toBe(4)
76
- // TODO(lukemurray): verify that this expectation is valid. this is 2 in
77
- // react, but 4 in solid, because in solid suspense is triggered on read and
78
- // the component needs to render in order to trigger suspense.
79
79
  expect(states.length).toBe(4)
80
80
  expect(states[1]).toMatchObject({ data: 1, status: 'success' })
81
81
  expect(states[3]).toMatchObject({ data: 2, status: 'success' })
@@ -83,21 +83,20 @@ describe("useQuery's in Suspense mode", () => {
83
83
 
84
84
  it('should return the correct states for a successful infinite query', async () => {
85
85
  const key = queryKey()
86
- const states: CreateInfiniteQueryResult<number>[] = []
86
+ const states: CreateInfiniteQueryResult<InfiniteData<number>>[] = []
87
87
 
88
88
  function Page() {
89
89
  const [multiplier, setMultiplier] = createSignal(1)
90
- const state = createInfiniteQuery(
91
- () => [`${key()}_${multiplier()}`],
92
- async ({ pageParam = 1 }) => {
90
+ const state = createInfiniteQuery(() => ({
91
+ queryKey: [`${key}_${multiplier()}`],
92
+ queryFn: async ({ pageParam }) => {
93
93
  await sleep(10)
94
94
  return Number(pageParam * multiplier())
95
95
  },
96
- {
97
- suspense: true,
98
- getNextPageParam: (lastPage) => lastPage + 1,
99
- },
100
- )
96
+ defaultPageParam: 1,
97
+ suspense: true,
98
+ getNextPageParam: (lastPage) => lastPage + 1,
99
+ }))
101
100
 
102
101
  createRenderEffect(() => {
103
102
  states.push({ ...state })
@@ -125,7 +124,7 @@ describe("useQuery's in Suspense mode", () => {
125
124
  // occurs on read.
126
125
  expect(states.length).toBe(2)
127
126
  expect(states[1]).toMatchObject({
128
- data: { pages: [1], pageParams: [undefined] },
127
+ data: { pages: [1], pageParams: [1] },
129
128
  status: 'success',
130
129
  })
131
130
 
@@ -135,7 +134,7 @@ describe("useQuery's in Suspense mode", () => {
135
134
  // TODO(lukemurray): in react this is 2 and in solid it is 4
136
135
  expect(states.length).toBe(4)
137
136
  expect(states[3]).toMatchObject({
138
- data: { pages: [2], pageParams: [undefined] },
137
+ data: { pages: [2], pageParams: [1] },
139
138
  status: 'success',
140
139
  })
141
140
  })
@@ -150,7 +149,7 @@ describe("useQuery's in Suspense mode", () => {
150
149
  })
151
150
 
152
151
  function Page() {
153
- createQuery(() => [key()], queryFn, { suspense: true })
152
+ createQuery(() => ({ queryKey: [key], queryFn, suspense: true }))
154
153
 
155
154
  return <>rendered</>
156
155
  }
@@ -172,14 +171,13 @@ describe("useQuery's in Suspense mode", () => {
172
171
  const key = queryKey()
173
172
 
174
173
  function Page() {
175
- createQuery(
176
- key,
177
- () => {
174
+ createQuery(() => ({
175
+ queryKey: key,
176
+ queryFn: () => {
178
177
  sleep(10)
179
178
  return 'data'
180
179
  },
181
- { suspense: true },
182
- )
180
+ }))
183
181
 
184
182
  return <>rendered</>
185
183
  }
@@ -205,17 +203,17 @@ describe("useQuery's in Suspense mode", () => {
205
203
  ))
206
204
 
207
205
  expect(screen.queryByText('rendered')).toBeNull()
208
- expect(queryCache.find(key())).toBeFalsy()
206
+ expect(queryCache.find({ queryKey: key })).toBeFalsy()
209
207
 
210
208
  fireEvent.click(screen.getByLabelText('toggle'))
211
209
  await waitFor(() => screen.getByText('rendered'))
212
210
 
213
- expect(queryCache.find(key())?.getObserversCount()).toBe(1)
211
+ expect(queryCache.find({ queryKey: key })?.getObserversCount()).toBe(1)
214
212
 
215
213
  fireEvent.click(screen.getByLabelText('toggle'))
216
214
 
217
215
  expect(screen.queryByText('rendered')).toBeNull()
218
- expect(queryCache.find(key())?.getObserversCount()).toBe(0)
216
+ expect(queryCache.find({ queryKey: key })?.getObserversCount()).toBe(0)
219
217
  })
220
218
 
221
219
  it('should call onSuccess on the first successful call', async () => {
@@ -224,18 +222,17 @@ describe("useQuery's in Suspense mode", () => {
224
222
  const successFn = jest.fn()
225
223
 
226
224
  function Page() {
227
- createQuery(
228
- () => [key()],
229
- async () => {
225
+ createQuery(() => ({
226
+ queryKey: [key],
227
+ queryFn: async () => {
230
228
  await sleep(10)
231
- return key()
232
- },
233
- {
234
- suspense: true,
235
- select: () => 'selected',
236
- onSuccess: successFn,
229
+ return key
237
230
  },
238
- )
231
+
232
+ suspense: true,
233
+ select: () => 'selected',
234
+ onSuccess: successFn,
235
+ }))
239
236
 
240
237
  return <>rendered</>
241
238
  }
@@ -261,33 +258,27 @@ describe("useQuery's in Suspense mode", () => {
261
258
  const successFn2 = jest.fn()
262
259
 
263
260
  function FirstComponent() {
264
- createQuery(
265
- key,
266
- () => {
261
+ createQuery(() => ({
262
+ queryKey: key,
263
+ queryFn: () => {
267
264
  sleep(10)
268
265
  return 'data'
269
266
  },
270
- {
271
- suspense: true,
272
- onSuccess: successFn1,
273
- },
274
- )
267
+ onSuccess: successFn1,
268
+ }))
275
269
 
276
270
  return <span>first</span>
277
271
  }
278
272
 
279
273
  function SecondComponent() {
280
- createQuery(
281
- key,
282
- () => {
274
+ createQuery(() => ({
275
+ queryKey: key,
276
+ queryFn: () => {
283
277
  sleep(10)
284
278
  return 'data'
285
279
  },
286
- {
287
- suspense: true,
288
- onSuccess: successFn2,
289
- },
290
- )
280
+ onSuccess: successFn2,
281
+ }))
291
282
 
292
283
  return <span>second</span>
293
284
  }
@@ -315,22 +306,19 @@ describe("useQuery's in Suspense mode", () => {
315
306
  let succeed = false
316
307
 
317
308
  function Page() {
318
- const state = createQuery(
319
- key,
320
- async () => {
309
+ const state = createQuery(() => ({
310
+ queryKey: key,
311
+ queryFn: async () => {
321
312
  await sleep(10)
322
-
323
313
  if (!succeed) {
324
314
  throw new Error('Suspense Error Bingo')
325
315
  } else {
326
316
  return 'data'
327
317
  }
328
318
  },
329
- {
330
- retryDelay: 10,
331
- suspense: true,
332
- },
333
- )
319
+ retryDelay: 10,
320
+ suspense: true,
321
+ }))
334
322
 
335
323
  // Suspense only triggers if used in JSX
336
324
  return (
@@ -381,9 +369,9 @@ describe("useQuery's in Suspense mode", () => {
381
369
  let succeed = false
382
370
 
383
371
  function Page() {
384
- const state = createQuery(
385
- key,
386
- async () => {
372
+ const state = createQuery(() => ({
373
+ queryKey: key,
374
+ queryFn: async () => {
387
375
  await sleep(10)
388
376
  if (!succeed) {
389
377
  throw new Error('Suspense Error Bingo')
@@ -391,11 +379,9 @@ describe("useQuery's in Suspense mode", () => {
391
379
  return 'data'
392
380
  }
393
381
  },
394
- {
395
- retry: false,
396
- suspense: true,
397
- },
398
- )
382
+ retry: false,
383
+ suspense: true,
384
+ }))
399
385
 
400
386
  // Suspense only triggers if used in JSX
401
387
  return (
@@ -444,19 +430,18 @@ describe("useQuery's in Suspense mode", () => {
444
430
  let count = 0
445
431
 
446
432
  function Component() {
447
- const result = createQuery(
448
- key,
449
- async () => {
433
+ const result = createQuery(() => ({
434
+ queryKey: key,
435
+ queryFn: async () => {
450
436
  await sleep(100)
451
437
  count++
452
438
  return count
453
439
  },
454
- {
455
- retry: false,
456
- suspense: true,
457
- staleTime: 0,
458
- },
459
- )
440
+
441
+ retry: false,
442
+ suspense: true,
443
+ staleTime: 0,
444
+ }))
460
445
  return (
461
446
  <div>
462
447
  <span>data: {result.data}</span>
@@ -504,27 +489,25 @@ describe("useQuery's in Suspense mode", () => {
504
489
  const key2 = queryKey()
505
490
 
506
491
  function Component(props: { queryKey: Array<string> }) {
507
- const result = createQuery(
508
- () => props.queryKey,
509
- async () => {
492
+ const result = createQuery(() => ({
493
+ queryKey: props.queryKey,
494
+ queryFn: async () => {
510
495
  await sleep(100)
511
496
  return props.queryKey
512
497
  },
513
- {
514
- retry: false,
515
- suspense: true,
516
- },
517
- )
498
+ retry: false,
499
+ suspense: true,
500
+ }))
518
501
  return <div>data: {result.data}</div>
519
502
  }
520
503
 
521
504
  function Page() {
522
- const [key, setKey] = createSignal(key1())
505
+ const [key, setKey] = createSignal(key1)
523
506
  return (
524
507
  <div>
525
508
  <button
526
509
  onClick={() => {
527
- setKey(key2())
510
+ setKey(key2)
528
511
  }}
529
512
  >
530
513
  switch
@@ -543,31 +526,25 @@ describe("useQuery's in Suspense mode", () => {
543
526
  ))
544
527
 
545
528
  await waitFor(() => screen.getByText('Loading...'))
546
- await waitFor(() => screen.getByText(`data: ${key1()}`))
529
+ await waitFor(() => screen.getByText(`data: ${key1}`))
547
530
  fireEvent.click(screen.getByText('switch'))
548
531
  await waitFor(() => screen.getByText('Loading...'))
549
- await waitFor(() => screen.getByText(`data: ${key2()}`))
550
- expect(
551
- // @ts-expect-error
552
- queryClient.getQueryCache().find(key2())!.observers[0].listeners.length,
553
- ).toBe(1)
532
+ await waitFor(() => screen.getByText(`data: ${key2}`))
554
533
  })
555
534
 
556
535
  it('should throw errors to the error boundary by default', async () => {
557
536
  const key = queryKey()
558
537
 
559
538
  function Page() {
560
- const state = createQuery(
561
- key,
562
- async (): Promise<unknown> => {
539
+ const state = createQuery(() => ({
540
+ queryKey: key,
541
+ queryFn: async (): Promise<unknown> => {
563
542
  await sleep(10)
564
543
  throw new Error('Suspense Error a1x')
565
544
  },
566
- {
567
- retry: false,
568
- suspense: true,
569
- },
570
- )
545
+ retry: false,
546
+ suspense: true,
547
+ }))
571
548
 
572
549
  // read state.data to trigger suspense.
573
550
  createRenderEffect(() => {
@@ -604,22 +581,19 @@ describe("useQuery's in Suspense mode", () => {
604
581
  await waitFor(() => screen.getByText('error boundary'))
605
582
  })
606
583
 
607
- it('should not throw errors to the error boundary when useErrorBoundary: false', async () => {
584
+ it('should not throw errors to the error boundary when throwErrors: false', async () => {
608
585
  const key = queryKey()
609
586
 
610
587
  function Page() {
611
- const state = createQuery(
612
- key,
613
- async (): Promise<unknown> => {
588
+ const state = createQuery(() => ({
589
+ queryKey: key,
590
+ queryFn: async (): Promise<unknown> => {
614
591
  await sleep(10)
615
592
  throw new Error('Suspense Error a2x')
616
593
  },
617
- {
618
- retry: false,
619
- suspense: true,
620
- useErrorBoundary: false,
621
- },
622
- )
594
+ retry: false,
595
+ throwErrors: false,
596
+ }))
623
597
 
624
598
  // read state.data to trigger suspense.
625
599
  createRenderEffect(() => {
@@ -656,22 +630,19 @@ describe("useQuery's in Suspense mode", () => {
656
630
  await waitFor(() => screen.getByText('rendered'))
657
631
  })
658
632
 
659
- it('should not throw errors to the error boundary when a useErrorBoundary function returns true', async () => {
633
+ it('should throw errors to the error boundary when a throwErrors function returns true', async () => {
660
634
  const key = queryKey()
661
635
 
662
636
  function Page() {
663
- const state = createQuery(
664
- key,
665
- async (): Promise<unknown> => {
637
+ const state = createQuery(() => ({
638
+ queryKey: key,
639
+ queryFn: async (): Promise<unknown> => {
666
640
  await sleep(10)
667
- return Promise.reject('Remote Error')
641
+ return Promise.reject(new Error('Remote Error'))
668
642
  },
669
- {
670
- retry: false,
671
- suspense: true,
672
- useErrorBoundary: (err) => err !== 'Local Error',
673
- },
674
- )
643
+ retry: false,
644
+ throwErrors: (err) => err.message !== 'Local Error',
645
+ }))
675
646
 
676
647
  // read state.data to trigger suspense.
677
648
  createRenderEffect(() => {
@@ -708,22 +679,21 @@ describe("useQuery's in Suspense mode", () => {
708
679
  await waitFor(() => screen.getByText('error boundary'))
709
680
  })
710
681
 
711
- it('should not throw errors to the error boundary when a useErrorBoundary function returns false', async () => {
682
+ it('should not throw errors to the error boundary when a throwErrors function returns false', async () => {
712
683
  const key = queryKey()
713
684
 
714
685
  function Page() {
715
- const state = createQuery(
716
- key,
717
- async (): Promise<unknown> => {
686
+ const state = createQuery(() => ({
687
+ queryKey: key,
688
+ queryFn: async (): Promise<unknown> => {
718
689
  await sleep(10)
719
- return Promise.reject('Local Error')
720
- },
721
- {
722
- retry: false,
723
- suspense: true,
724
- useErrorBoundary: (err) => err !== 'Local Error',
690
+ return Promise.reject(new Error('Local Error'))
725
691
  },
726
- )
692
+
693
+ retry: false,
694
+ suspense: true,
695
+ throwErrors: (err) => err.message !== 'Local Error',
696
+ }))
727
697
 
728
698
  // read state.data to trigger suspense.
729
699
  createRenderEffect(() => {
@@ -771,12 +741,12 @@ describe("useQuery's in Suspense mode", () => {
771
741
 
772
742
  function Page() {
773
743
  const [enabled, setEnabled] = createSignal(false)
774
- const result = createQuery(() => [key()], queryFn, {
744
+ const result = createQuery(() => ({
745
+ queryKey: [key],
746
+ queryFn,
775
747
  suspense: true,
776
- get enabled() {
777
- return enabled()
778
- },
779
- })
748
+ enabled: enabled(),
749
+ }))
780
750
 
781
751
  return (
782
752
  <div>
@@ -812,10 +782,10 @@ describe("useQuery's in Suspense mode", () => {
812
782
 
813
783
  function Page() {
814
784
  const [nonce] = createSignal(0)
815
- const queryKeys = () => [`${key()}-${succeed}`]
816
- const result = createQuery(
817
- queryKeys,
818
- async () => {
785
+ const queryKeys = [`${key}-${succeed}`]
786
+ const result = createQuery(() => ({
787
+ queryKey: queryKeys,
788
+ queryFn: async () => {
819
789
  await sleep(10)
820
790
  if (!succeed) {
821
791
  throw new Error('Suspense Error Bingo')
@@ -823,11 +793,9 @@ describe("useQuery's in Suspense mode", () => {
823
793
  return nonce()
824
794
  }
825
795
  },
826
- {
827
- retry: false,
828
- suspense: true,
829
- },
830
- )
796
+ retry: false,
797
+ suspense: true,
798
+ }))
831
799
  return (
832
800
  <div>
833
801
  <span>rendered</span> <span>{result.data}</span>
@@ -878,9 +846,9 @@ describe("useQuery's in Suspense mode", () => {
878
846
  function Page() {
879
847
  const [key, setKey] = createSignal(0)
880
848
 
881
- const result = createQuery(
882
- () => [`${key()}-${succeed}`],
883
- async () => {
849
+ const result = createQuery(() => ({
850
+ queryKey: [`${key()}-${succeed}`],
851
+ queryFn: async () => {
884
852
  await sleep(10)
885
853
  if (!succeed) {
886
854
  throw new Error('Suspense Error Bingo')
@@ -888,11 +856,9 @@ describe("useQuery's in Suspense mode", () => {
888
856
  return 'data'
889
857
  }
890
858
  },
891
- {
892
- retry: false,
893
- suspense: true,
894
- },
895
- )
859
+ retry: false,
860
+ suspense: true,
861
+ }))
896
862
  return (
897
863
  <div>
898
864
  <span>rendered</span> <span>{result.data}</span>
@@ -937,20 +903,17 @@ describe("useQuery's in Suspense mode", () => {
937
903
  const queryKeys = '1'
938
904
  const [enabled, setEnabled] = createSignal(false)
939
905
 
940
- const result = createQuery<string>(
941
- () => [queryKeys],
942
- async () => {
906
+ const result = createQuery<string>(() => ({
907
+ queryKey: [queryKeys],
908
+ queryFn: async () => {
943
909
  await sleep(10)
944
910
  throw new Error('Suspense Error Bingo')
945
911
  },
946
- {
947
- retry: false,
948
- suspense: true,
949
- get enabled() {
950
- return enabled()
951
- },
952
- },
953
- )
912
+
913
+ retry: false,
914
+ suspense: true,
915
+ enabled: enabled(),
916
+ }))
954
917
  return (
955
918
  <div>
956
919
  <span>rendered</span> <span>{result.data}</span>
@@ -995,7 +958,7 @@ describe("useQuery's in Suspense mode", () => {
995
958
  await waitFor(() => screen.getByText('error boundary'))
996
959
  })
997
960
 
998
- it('should render the correct amount of times in Suspense mode when cacheTime is set to 0', async () => {
961
+ it('should render the correct amount of times in Suspense mode when gcTime is set to 0', async () => {
999
962
  const key = queryKey()
1000
963
  let state: CreateQueryResult<number> | null = null
1001
964
 
@@ -1003,15 +966,15 @@ describe("useQuery's in Suspense mode", () => {
1003
966
  let renders = 0
1004
967
 
1005
968
  function Page() {
1006
- state = createQuery(
1007
- key,
1008
- async () => {
969
+ state = createQuery(() => ({
970
+ queryKey: key,
971
+ queryFn: async () => {
1009
972
  count++
1010
973
  await sleep(10)
1011
974
  return count
1012
975
  },
1013
- { suspense: true, cacheTime: 0 },
1014
- )
976
+ gcTime: 0,
977
+ }))
1015
978
 
1016
979
  createRenderEffect(
1017
980
  on([() => ({ ...state })], () => {
@@ -12,10 +12,13 @@ describe("useQuery's in Suspense mode with transitions", () => {
12
12
  const key = queryKey()
13
13
 
14
14
  function Suspended() {
15
- const state = createQuery(key, async () => {
16
- await sleep(10)
17
- return true
18
- })
15
+ const state = createQuery(() => ({
16
+ queryKey: key,
17
+ queryFn: async () => {
18
+ await sleep(10)
19
+ return true
20
+ },
21
+ }))
19
22
 
20
23
  return <Show when={state.data}>Message</Show>
21
24
  }