@tanstack/solid-query 5.0.0-beta.9 → 5.0.0-rc.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.
@@ -9,13 +9,7 @@ import {
9
9
  QueryClientProvider,
10
10
  createQueries,
11
11
  } from '..'
12
- import {
13
- createQueryClient,
14
- expectType,
15
- expectTypeNotAny,
16
- queryKey,
17
- sleep,
18
- } from './utils'
12
+ import { createQueryClient, expectTypeNotAny, queryKey, sleep } from './utils'
19
13
  import type { QueryFunctionContext, QueryKey } from '@tanstack/query-core'
20
14
  import type {
21
15
  CreateQueryResult,
@@ -31,7 +25,7 @@ describe('useQueries', () => {
31
25
  it('should return the correct states', async () => {
32
26
  const key1 = queryKey()
33
27
  const key2 = queryKey()
34
- const results: CreateQueryResult[][] = []
28
+ const results: Array<Array<CreateQueryResult>> = []
35
29
 
36
30
  function Page() {
37
31
  const result = createQueries(() => ({
@@ -54,7 +48,7 @@ describe('useQueries', () => {
54
48
  }))
55
49
 
56
50
  createRenderEffect(() => {
57
- results.push([...result])
51
+ results.push([{ ...result[0] }, { ...result[1] }])
58
52
  })
59
53
 
60
54
  return (
@@ -89,31 +83,31 @@ describe('useQueries', () => {
89
83
  // @ts-expect-error (Page component is not rendered)
90
84
  // eslint-disable-next-line
91
85
  function Page() {
92
- const result1 = createQueries<[[number], [string], [string[], boolean]]>(
93
- () => ({
94
- queries: [
95
- {
96
- queryKey: key1,
97
- queryFn: () => 1,
98
- },
99
- {
100
- queryKey: key2,
101
- queryFn: () => 'string',
102
- },
103
- {
104
- queryKey: key3,
105
- queryFn: () => ['string[]'],
106
- },
107
- ],
108
- }),
109
- )
110
- expectType<QueryObserverResult<number, unknown>>(result1[0])
111
- expectType<QueryObserverResult<string, unknown>>(result1[1])
112
- expectType<QueryObserverResult<string[], boolean>>(result1[2])
113
- expectType<number | undefined>(result1[0].data)
114
- expectType<string | undefined>(result1[1].data)
115
- expectType<string[] | undefined>(result1[2].data)
116
- expectType<boolean | null>(result1[2].error)
86
+ const result1 = createQueries<
87
+ [[number], [string], [Array<string>, boolean]]
88
+ >(() => ({
89
+ queries: [
90
+ {
91
+ queryKey: key1,
92
+ queryFn: () => 1,
93
+ },
94
+ {
95
+ queryKey: key2,
96
+ queryFn: () => 'string',
97
+ },
98
+ {
99
+ queryKey: key3,
100
+ queryFn: () => ['string[]'],
101
+ },
102
+ ],
103
+ }))
104
+ expectTypeOf<QueryObserverResult<number, unknown>>(result1[0])
105
+ expectTypeOf<QueryObserverResult<string, unknown>>(result1[1])
106
+ expectTypeOf<QueryObserverResult<Array<string>, boolean>>(result1[2])
107
+ expectTypeOf<number | undefined>(result1[0].data)
108
+ expectTypeOf<string | undefined>(result1[1].data)
109
+ expectTypeOf<Array<string> | undefined>(result1[2].data)
110
+ expectTypeOf<boolean | null>(result1[2].error)
117
111
 
118
112
  // TData (3rd element) takes precedence over TQueryFnData (1st element)
119
113
  const result2 = createQueries<
@@ -124,7 +118,7 @@ describe('useQueries', () => {
124
118
  queryKey: key1,
125
119
  queryFn: () => 'string',
126
120
  select: (a) => {
127
- expectType<string>(a)
121
+ expectTypeOf<string>(a)
128
122
  expectTypeNotAny(a)
129
123
  return a.toLowerCase()
130
124
  },
@@ -133,17 +127,17 @@ describe('useQueries', () => {
133
127
  queryKey: key2,
134
128
  queryFn: () => 'string',
135
129
  select: (a) => {
136
- expectType<string>(a)
130
+ expectTypeOf<string>(a)
137
131
  expectTypeNotAny(a)
138
132
  return parseInt(a)
139
133
  },
140
134
  },
141
135
  ],
142
136
  }))
143
- expectType<QueryObserverResult<string, unknown>>(result2[0])
144
- expectType<QueryObserverResult<number, unknown>>(result2[1])
145
- expectType<string | undefined>(result2[0].data)
146
- expectType<number | undefined>(result2[1].data)
137
+ expectTypeOf<QueryObserverResult<string, unknown>>(result2[0])
138
+ expectTypeOf<QueryObserverResult<number, unknown>>(result2[1])
139
+ expectTypeOf<string | undefined>(result2[0].data)
140
+ expectTypeOf<number | undefined>(result2[1].data)
147
141
 
148
142
  // types should be enforced
149
143
  createQueries<[[string, unknown, string], [string, boolean, number]]>(
@@ -153,7 +147,7 @@ describe('useQueries', () => {
153
147
  queryKey: key1,
154
148
  queryFn: () => 'string',
155
149
  select: (a) => {
156
- expectType<string>(a)
150
+ expectTypeOf<string>(a)
157
151
  expectTypeNotAny(a)
158
152
  return a.toLowerCase()
159
153
  },
@@ -165,7 +159,7 @@ describe('useQueries', () => {
165
159
  queryKey: key2,
166
160
  queryFn: () => 'string',
167
161
  select: (a) => {
168
- expectType<string>(a)
162
+ expectTypeOf<string>(a)
169
163
  expectTypeNotAny(a)
170
164
  return parseInt(a)
171
165
  },
@@ -201,7 +195,7 @@ describe('useQueries', () => {
201
195
  [
202
196
  { queryFnData: number },
203
197
  { queryFnData: string },
204
- { queryFnData: string[]; error: boolean },
198
+ { queryFnData: Array<string>; error: boolean },
205
199
  ]
206
200
  >(() => ({
207
201
  queries: [
@@ -219,13 +213,13 @@ describe('useQueries', () => {
219
213
  },
220
214
  ],
221
215
  }))
222
- expectType<QueryObserverResult<number, unknown>>(result1[0])
223
- expectType<QueryObserverResult<string, unknown>>(result1[1])
224
- expectType<QueryObserverResult<string[], boolean>>(result1[2])
225
- expectType<number | undefined>(result1[0].data)
226
- expectType<string | undefined>(result1[1].data)
227
- expectType<string[] | undefined>(result1[2].data)
228
- expectType<boolean | null>(result1[2].error)
216
+ expectTypeOf<QueryObserverResult<number, unknown>>(result1[0])
217
+ expectTypeOf<QueryObserverResult<string, unknown>>(result1[1])
218
+ expectTypeOf<QueryObserverResult<Array<string>, boolean>>(result1[2])
219
+ expectTypeOf<number | undefined>(result1[0].data)
220
+ expectTypeOf<string | undefined>(result1[1].data)
221
+ expectTypeOf<Array<string> | undefined>(result1[2].data)
222
+ expectTypeOf<boolean | null>(result1[2].error)
229
223
 
230
224
  // TData (data prop) takes precedence over TQueryFnData (queryFnData prop)
231
225
  const result2 = createQueries<
@@ -239,7 +233,7 @@ describe('useQueries', () => {
239
233
  queryKey: key1,
240
234
  queryFn: () => 'string',
241
235
  select: (a) => {
242
- expectType<string>(a)
236
+ expectTypeOf<string>(a)
243
237
  expectTypeNotAny(a)
244
238
  return a.toLowerCase()
245
239
  },
@@ -248,17 +242,17 @@ describe('useQueries', () => {
248
242
  queryKey: key2,
249
243
  queryFn: () => 'string',
250
244
  select: (a) => {
251
- expectType<string>(a)
245
+ expectTypeOf<string>(a)
252
246
  expectTypeNotAny(a)
253
247
  return parseInt(a)
254
248
  },
255
249
  },
256
250
  ],
257
251
  }))
258
- expectType<QueryObserverResult<string, unknown>>(result2[0])
259
- expectType<QueryObserverResult<number, unknown>>(result2[1])
260
- expectType<string | undefined>(result2[0].data)
261
- expectType<number | undefined>(result2[1].data)
252
+ expectTypeOf<QueryObserverResult<string, unknown>>(result2[0])
253
+ expectTypeOf<QueryObserverResult<number, unknown>>(result2[1])
254
+ expectTypeOf<string | undefined>(result2[0].data)
255
+ expectTypeOf<number | undefined>(result2[1].data)
262
256
 
263
257
  // can pass only TData (data prop) although TQueryFnData will be left unknown
264
258
  const result3 = createQueries<[{ data: string }, { data: number }]>(
@@ -268,7 +262,7 @@ describe('useQueries', () => {
268
262
  queryKey: key1,
269
263
  queryFn: () => 'string',
270
264
  select: (a) => {
271
- expectType<unknown>(a)
265
+ expectTypeOf<unknown>(a)
272
266
  expectTypeNotAny(a)
273
267
  return a as string
274
268
  },
@@ -277,7 +271,7 @@ describe('useQueries', () => {
277
271
  queryKey: key2,
278
272
  queryFn: () => 'string',
279
273
  select: (a) => {
280
- expectType<unknown>(a)
274
+ expectTypeOf<unknown>(a)
281
275
  expectTypeNotAny(a)
282
276
  return a as number
283
277
  },
@@ -285,10 +279,10 @@ describe('useQueries', () => {
285
279
  ],
286
280
  }),
287
281
  )
288
- expectType<QueryObserverResult<string, unknown>>(result3[0])
289
- expectType<QueryObserverResult<number, unknown>>(result3[1])
290
- expectType<string | undefined>(result3[0].data)
291
- expectType<number | undefined>(result3[1].data)
282
+ expectTypeOf<QueryObserverResult<string, unknown>>(result3[0])
283
+ expectTypeOf<QueryObserverResult<number, unknown>>(result3[1])
284
+ expectTypeOf<string | undefined>(result3[0].data)
285
+ expectTypeOf<number | undefined>(result3[1].data)
292
286
 
293
287
  // types should be enforced
294
288
  createQueries<
@@ -302,7 +296,7 @@ describe('useQueries', () => {
302
296
  queryKey: key1,
303
297
  queryFn: () => 'string',
304
298
  select: (a) => {
305
- expectType<string>(a)
299
+ expectTypeOf<string>(a)
306
300
  expectTypeNotAny(a)
307
301
  return a.toLowerCase()
308
302
  },
@@ -314,7 +308,7 @@ describe('useQueries', () => {
314
308
  queryKey: key2,
315
309
  queryFn: () => 'string',
316
310
  select: (a) => {
317
- expectType<string>(a)
311
+ expectTypeOf<string>(a)
318
312
  expectTypeNotAny(a)
319
313
  return parseInt(a)
320
314
  },
@@ -353,8 +347,8 @@ describe('useQueries', () => {
353
347
  queryFn: () => i + 10,
354
348
  })),
355
349
  }))
356
- expectType<QueryObserverResult<number, unknown>[]>(result1)
357
- expectType<number | undefined>(result1[0]?.data)
350
+ expectTypeOf<Array<QueryObserverResult<number, unknown>>>(result1)
351
+ expectTypeOf<number | undefined>(result1[0]?.data)
358
352
 
359
353
  // Array.map preserves TData
360
354
  const result2 = createQueries(() => ({
@@ -364,7 +358,7 @@ describe('useQueries', () => {
364
358
  select: (data: number) => data.toString(),
365
359
  })),
366
360
  }))
367
- expectType<QueryObserverResult<string, unknown>[]>(result2)
361
+ expectTypeOf<Array<QueryObserverResult<string, unknown>>>(result2)
368
362
 
369
363
  const result3 = createQueries(() => ({
370
364
  queries: [
@@ -383,13 +377,13 @@ describe('useQueries', () => {
383
377
  },
384
378
  ],
385
379
  }))
386
- expectType<QueryObserverResult<number, unknown>>(result3[0])
387
- expectType<QueryObserverResult<string, unknown>>(result3[1])
388
- expectType<QueryObserverResult<number, unknown>>(result3[2])
389
- expectType<number | undefined>(result3[0].data)
390
- expectType<string | undefined>(result3[1].data)
380
+ expectTypeOf<QueryObserverResult<number, unknown>>(result3[0])
381
+ expectTypeOf<QueryObserverResult<string, unknown>>(result3[1])
382
+ expectTypeOf<QueryObserverResult<number, unknown>>(result3[2])
383
+ expectTypeOf<number | undefined>(result3[0].data)
384
+ expectTypeOf<string | undefined>(result3[1].data)
391
385
  // select takes precedence over queryFn
392
- expectType<number | undefined>(result3[2].data)
386
+ expectTypeOf<number | undefined>(result3[2].data)
393
387
 
394
388
  // initialData/placeholderData are enforced
395
389
  createQueries(() => ({
@@ -472,9 +466,9 @@ describe('useQueries', () => {
472
466
  },
473
467
  ],
474
468
  }))
475
- expectType<QueryObserverResult<string, unknown>>(result4[0])
476
- expectType<QueryObserverResult<string, unknown>>(result4[1])
477
- expectType<QueryObserverResult<number, unknown>>(result4[2])
469
+ expectTypeOf<QueryObserverResult<string, unknown>>(result4[0])
470
+ expectTypeOf<QueryObserverResult<string, unknown>>(result4[1])
471
+ expectTypeOf<QueryObserverResult<number, unknown>>(result4[2])
478
472
 
479
473
  // handles when queryFn returns a Promise
480
474
  const result5 = createQueries(() => ({
@@ -485,7 +479,7 @@ describe('useQueries', () => {
485
479
  },
486
480
  ],
487
481
  }))
488
- expectType<QueryObserverResult<string, unknown>>(result5[0])
482
+ expectTypeOf<QueryObserverResult<string, unknown>>(result5[0])
489
483
 
490
484
  // Array as const does not throw error
491
485
  const result6 = createQueries(
@@ -503,8 +497,8 @@ describe('useQueries', () => {
503
497
  ],
504
498
  } as const),
505
499
  )
506
- expectType<QueryObserverResult<string, unknown>>(result6[0])
507
- expectType<QueryObserverResult<number, unknown>>(result6[1])
500
+ expectTypeOf<QueryObserverResult<string, unknown>>(result6[0])
501
+ expectTypeOf<QueryObserverResult<number, unknown>>(result6[1])
508
502
 
509
503
  // field names should be enforced - array literal
510
504
  createQueries(() => ({
@@ -582,18 +576,20 @@ describe('useQueries', () => {
582
576
  TError,
583
577
  TData,
584
578
  TQueryKey extends QueryKey,
585
- >(queries: SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey>[]) {
579
+ >(
580
+ queries: Array<SolidQueryOptions<TQueryFnData, TError, TData, TQueryKey>>,
581
+ ) {
586
582
  return createQueries(() => ({
587
583
  queries: queries.map(
588
584
  // no need to type the mapped query
589
585
  (query) => {
590
586
  const { queryFn: fn, queryKey: key } = query
591
- expectType<QueryFunction<TQueryFnData, TQueryKey> | undefined>(fn)
587
+ expectTypeOf<QueryFunction<TQueryFnData, TQueryKey> | undefined>(fn)
592
588
  return {
593
589
  queryKey: key,
594
590
  queryFn: fn
595
591
  ? (ctx: QueryFunctionContext<TQueryKey>) => {
596
- expectType<TQueryKey>(ctx.queryKey)
592
+ expectTypeOf<TQueryKey>(ctx.queryKey)
597
593
  return fn.call({}, ctx)
598
594
  }
599
595
  : undefined,
@@ -618,8 +614,8 @@ describe('useQueries', () => {
618
614
  },
619
615
  ],
620
616
  }))
621
- expectType<QueryObserverResult<number, unknown>>(result[0])
622
- expectType<QueryObserverResult<string, unknown>>(result[1])
617
+ expectTypeOf<QueryObserverResult<number, unknown>>(result[0])
618
+ expectTypeOf<QueryObserverResult<string, unknown>>(result[1])
623
619
 
624
620
  const withSelector = createQueries(() => ({
625
621
  queries: [
@@ -635,10 +631,10 @@ describe('useQueries', () => {
635
631
  },
636
632
  ],
637
633
  }))
638
- expectType<QueryObserverResult<[number, string], unknown>>(
634
+ expectTypeOf<QueryObserverResult<[number, string], unknown>>(
639
635
  withSelector[0],
640
636
  )
641
- expectType<QueryObserverResult<[string, number], unknown>>(
637
+ expectTypeOf<QueryObserverResult<[string, number], unknown>>(
642
638
  withSelector[1],
643
639
  )
644
640
 
@@ -650,7 +646,7 @@ describe('useQueries', () => {
650
646
  })),
651
647
  )
652
648
 
653
- expectType<QueryObserverResult<number | undefined, unknown>[]>(
649
+ expectTypeOf<Array<QueryObserverResult<number | undefined, unknown>>>(
654
650
  withWrappedQueries,
655
651
  )
656
652
  }