@tanstack/solid-query 5.0.0-alpha.3 → 5.0.0-alpha.32
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/cjs/index.js +81 -37
- package/build/cjs/index.js.map +1 -1
- package/build/esm/index.js +82 -40
- package/build/esm/index.js.map +1 -1
- package/build/source/QueryClient.js +6 -0
- package/build/source/__tests__/QueryClientProvider.test.jsx +2 -1
- package/build/source/__tests__/createInfiniteQuery.test.jsx +67 -20
- package/build/source/__tests__/createMutation.test.jsx +23 -22
- package/build/source/__tests__/createQueries.test.jsx +4 -91
- package/build/source/__tests__/createQuery.test.jsx +68 -277
- package/build/source/__tests__/createQuery.types.test.jsx +19 -1
- package/build/source/__tests__/suspense.test.jsx +9 -70
- package/build/source/__tests__/useIsFetching.test.jsx +2 -4
- package/build/source/__tests__/useIsMutating.test.jsx +25 -28
- package/build/source/__tests__/utils.jsx +4 -3
- package/build/source/createBaseQuery.js +48 -21
- package/build/source/createMutation.js +1 -1
- package/build/source/createQueries.js +5 -5
- package/build/source/createQuery.js +3 -0
- package/build/source/index.js +2 -1
- package/build/source/useIsFetching.js +5 -5
- package/build/source/useIsMutating.js +5 -5
- package/build/types/QueryClient.d.ts +30 -0
- package/build/types/QueryClient.d.ts.map +1 -0
- package/build/types/QueryClientProvider.d.ts +2 -1
- package/build/types/QueryClientProvider.d.ts.map +1 -0
- package/build/types/__tests__/QueryClientProvider.test.d.ts +1 -0
- package/build/types/__tests__/QueryClientProvider.test.d.ts.map +1 -0
- package/build/types/__tests__/createInfiniteQuery.test.d.ts +1 -0
- package/build/types/__tests__/createInfiniteQuery.test.d.ts.map +1 -0
- package/build/types/__tests__/createMutation.test.d.ts +1 -0
- package/build/types/__tests__/createMutation.test.d.ts.map +1 -0
- package/build/types/__tests__/createQueries.test.d.ts +1 -0
- package/build/types/__tests__/createQueries.test.d.ts.map +1 -0
- package/build/types/__tests__/createQuery.test.d.ts +1 -0
- package/build/types/__tests__/createQuery.test.d.ts.map +1 -0
- package/build/types/__tests__/createQuery.types.test.d.ts +1 -0
- package/build/types/__tests__/createQuery.types.test.d.ts.map +1 -0
- package/build/types/__tests__/suspense.test.d.ts +1 -0
- package/build/types/__tests__/suspense.test.d.ts.map +1 -0
- package/build/types/__tests__/transition.test.d.ts +1 -0
- package/build/types/__tests__/transition.test.d.ts.map +1 -0
- package/build/types/__tests__/useIsFetching.test.d.ts +1 -0
- package/build/types/__tests__/useIsFetching.test.d.ts.map +1 -0
- package/build/types/__tests__/useIsMutating.test.d.ts +1 -0
- package/build/types/__tests__/useIsMutating.test.d.ts.map +1 -0
- package/build/types/__tests__/utils.d.ts +4 -4
- package/build/types/__tests__/utils.d.ts.map +1 -0
- package/build/types/createBaseQuery.d.ts +4 -2
- package/build/types/createBaseQuery.d.ts.map +1 -0
- package/build/types/createInfiniteQuery.d.ts +5 -2
- package/build/types/createInfiniteQuery.d.ts.map +1 -0
- package/build/types/createMutation.d.ts +5 -2
- package/build/types/createMutation.d.ts.map +1 -0
- package/build/types/createQueries.d.ts +6 -4
- package/build/types/createQueries.d.ts.map +1 -0
- package/build/types/createQuery.d.ts +5 -1
- package/build/types/createQuery.d.ts.map +1 -0
- package/build/types/index.d.ts +4 -1
- package/build/types/index.d.ts.map +1 -0
- package/build/types/setBatchUpdatesFn.d.ts +1 -0
- package/build/types/setBatchUpdatesFn.d.ts.map +1 -0
- package/build/types/types.d.ts +3 -1
- package/build/types/types.d.ts.map +1 -0
- package/build/types/useIsFetching.d.ts +4 -7
- package/build/types/useIsFetching.d.ts.map +1 -0
- package/build/types/useIsMutating.d.ts +4 -7
- package/build/types/useIsMutating.d.ts.map +1 -0
- package/build/types/utils.d.ts +1 -0
- package/build/types/utils.d.ts.map +1 -0
- package/build/umd/index.js +1 -1
- package/build/umd/index.js.map +1 -1
- package/package.json +5 -5
- package/src/QueryClient.ts +84 -0
- package/src/QueryClientProvider.tsx +1 -1
- package/src/__tests__/QueryClientProvider.test.tsx +2 -1
- package/src/__tests__/createInfiniteQuery.test.tsx +95 -34
- package/src/__tests__/createMutation.test.tsx +23 -22
- package/src/__tests__/createQueries.test.tsx +4 -97
- package/src/__tests__/createQuery.test.tsx +84 -350
- package/src/__tests__/createQuery.types.test.tsx +21 -1
- package/src/__tests__/suspense.test.tsx +9 -91
- package/src/__tests__/useIsFetching.test.tsx +2 -4
- package/src/__tests__/useIsMutating.test.tsx +32 -40
- package/src/__tests__/utils.tsx +4 -3
- package/src/createBaseQuery.ts +73 -27
- package/src/createInfiniteQuery.ts +3 -2
- package/src/createMutation.ts +5 -3
- package/src/createQueries.ts +9 -8
- package/src/createQuery.ts +26 -2
- package/src/index.ts +8 -1
- package/src/types.ts +4 -2
- package/src/useIsFetching.ts +10 -13
- package/src/useIsMutating.ts +10 -11
|
@@ -3,6 +3,7 @@ import * as QueriesObserverModule from '../../../query-core/src/queriesObserver'
|
|
|
3
3
|
import { createRenderEffect, createSignal } from 'solid-js';
|
|
4
4
|
import { createQueries, QueriesObserver, QueryCache, QueryClientProvider, } from '..';
|
|
5
5
|
import { createQueryClient, expectType, expectTypeNotAny, queryKey, sleep, } from './utils';
|
|
6
|
+
import { vi } from 'vitest';
|
|
6
7
|
describe('useQueries', () => {
|
|
7
8
|
const queryCache = new QueryCache();
|
|
8
9
|
const queryClient = createQueryClient({ queryCache });
|
|
@@ -116,10 +117,6 @@ describe('useQueries', () => {
|
|
|
116
117
|
expectTypeNotAny(a);
|
|
117
118
|
return a.toLowerCase();
|
|
118
119
|
},
|
|
119
|
-
onSuccess: (a) => {
|
|
120
|
-
expectType(a);
|
|
121
|
-
expectTypeNotAny(a);
|
|
122
|
-
},
|
|
123
120
|
placeholderData: 'string',
|
|
124
121
|
// @ts-expect-error (initialData: string)
|
|
125
122
|
initialData: 123,
|
|
@@ -132,14 +129,6 @@ describe('useQueries', () => {
|
|
|
132
129
|
expectTypeNotAny(a);
|
|
133
130
|
return parseInt(a);
|
|
134
131
|
},
|
|
135
|
-
onSuccess: (a) => {
|
|
136
|
-
expectType(a);
|
|
137
|
-
expectTypeNotAny(a);
|
|
138
|
-
},
|
|
139
|
-
onError: (e) => {
|
|
140
|
-
expectType(e);
|
|
141
|
-
expectTypeNotAny(e);
|
|
142
|
-
},
|
|
143
132
|
placeholderData: 'string',
|
|
144
133
|
// @ts-expect-error (initialData: string)
|
|
145
134
|
initialData: 123,
|
|
@@ -252,10 +241,6 @@ describe('useQueries', () => {
|
|
|
252
241
|
expectTypeNotAny(a);
|
|
253
242
|
return a.toLowerCase();
|
|
254
243
|
},
|
|
255
|
-
onSuccess: (a) => {
|
|
256
|
-
expectType(a);
|
|
257
|
-
expectTypeNotAny(a);
|
|
258
|
-
},
|
|
259
244
|
placeholderData: 'string',
|
|
260
245
|
// @ts-expect-error (initialData: string)
|
|
261
246
|
initialData: 123,
|
|
@@ -268,14 +253,6 @@ describe('useQueries', () => {
|
|
|
268
253
|
expectTypeNotAny(a);
|
|
269
254
|
return parseInt(a);
|
|
270
255
|
},
|
|
271
|
-
onSuccess: (a) => {
|
|
272
|
-
expectType(a);
|
|
273
|
-
expectTypeNotAny(a);
|
|
274
|
-
},
|
|
275
|
-
onError: (e) => {
|
|
276
|
-
expectType(e);
|
|
277
|
-
expectTypeNotAny(e);
|
|
278
|
-
},
|
|
279
256
|
placeholderData: 'string',
|
|
280
257
|
// @ts-expect-error (initialData: string)
|
|
281
258
|
initialData: 123,
|
|
@@ -362,59 +339,37 @@ describe('useQueries', () => {
|
|
|
362
339
|
},
|
|
363
340
|
],
|
|
364
341
|
}));
|
|
365
|
-
// select
|
|
342
|
+
// select params are "indirectly" enforced
|
|
366
343
|
createQueries(() => ({
|
|
367
344
|
queries: [
|
|
368
345
|
// unfortunately TS will not suggest the type for you
|
|
369
346
|
{
|
|
370
347
|
queryKey: key1,
|
|
371
348
|
queryFn: () => 'string',
|
|
372
|
-
// @ts-expect-error (noImplicitAny)
|
|
373
|
-
onSuccess: (a) => null,
|
|
374
|
-
// @ts-expect-error (noImplicitAny)
|
|
375
|
-
onSettled: (a) => null,
|
|
376
349
|
},
|
|
377
350
|
// however you can add a type to the callback
|
|
378
351
|
{
|
|
379
352
|
queryKey: key2,
|
|
380
353
|
queryFn: () => 'string',
|
|
381
|
-
onSuccess: (a) => {
|
|
382
|
-
expectType(a);
|
|
383
|
-
expectTypeNotAny(a);
|
|
384
|
-
},
|
|
385
|
-
onSettled: (a) => {
|
|
386
|
-
expectType(a);
|
|
387
|
-
expectTypeNotAny(a);
|
|
388
|
-
},
|
|
389
354
|
},
|
|
390
355
|
// the type you do pass is enforced
|
|
391
356
|
{
|
|
392
357
|
queryKey: key3,
|
|
393
358
|
queryFn: () => 'string',
|
|
394
|
-
// @ts-expect-error (only accepts string)
|
|
395
|
-
onSuccess: (a) => null,
|
|
396
359
|
},
|
|
397
360
|
{
|
|
398
361
|
queryKey: key4,
|
|
399
362
|
queryFn: () => 'string',
|
|
400
363
|
select: (a) => parseInt(a),
|
|
401
|
-
// @ts-expect-error (select is defined => only accepts number)
|
|
402
|
-
onSuccess: (a) => null,
|
|
403
|
-
onSettled: (a) => {
|
|
404
|
-
expectType(a);
|
|
405
|
-
expectTypeNotAny(a);
|
|
406
|
-
},
|
|
407
364
|
},
|
|
408
365
|
],
|
|
409
366
|
}));
|
|
410
367
|
// callbacks are also indirectly enforced with Array.map
|
|
411
368
|
createQueries(() => ({
|
|
412
|
-
// @ts-expect-error (onSuccess only accepts string)
|
|
413
369
|
queries: Array(50).map((_, i) => ({
|
|
414
370
|
queryKey: ['key', i],
|
|
415
371
|
queryFn: () => i + 10,
|
|
416
372
|
select: (data) => data.toString(),
|
|
417
|
-
onSuccess: (_data) => null,
|
|
418
373
|
})),
|
|
419
374
|
}));
|
|
420
375
|
createQueries(() => ({
|
|
@@ -422,7 +377,6 @@ describe('useQueries', () => {
|
|
|
422
377
|
queryKey: ['key', i],
|
|
423
378
|
queryFn: () => i + 10,
|
|
424
379
|
select: (data) => data.toString(),
|
|
425
|
-
onSuccess: (_data) => null,
|
|
426
380
|
})),
|
|
427
381
|
}));
|
|
428
382
|
// results inference works when all the handlers are defined
|
|
@@ -431,32 +385,15 @@ describe('useQueries', () => {
|
|
|
431
385
|
{
|
|
432
386
|
queryKey: key1,
|
|
433
387
|
queryFn: () => 'string',
|
|
434
|
-
// @ts-expect-error (noImplicitAny)
|
|
435
|
-
onSuccess: (a) => null,
|
|
436
|
-
// @ts-expect-error (noImplicitAny)
|
|
437
|
-
onSettled: (a) => null,
|
|
438
388
|
},
|
|
439
389
|
{
|
|
440
390
|
queryKey: key2,
|
|
441
391
|
queryFn: () => 'string',
|
|
442
|
-
onSuccess: (a) => {
|
|
443
|
-
expectType(a);
|
|
444
|
-
expectTypeNotAny(a);
|
|
445
|
-
},
|
|
446
|
-
onSettled: (a) => {
|
|
447
|
-
expectType(a);
|
|
448
|
-
expectTypeNotAny(a);
|
|
449
|
-
},
|
|
450
392
|
},
|
|
451
393
|
{
|
|
452
394
|
queryKey: key4,
|
|
453
395
|
queryFn: () => 'string',
|
|
454
396
|
select: (a) => parseInt(a),
|
|
455
|
-
onSuccess: (_a) => null,
|
|
456
|
-
onSettled: (a) => {
|
|
457
|
-
expectType(a);
|
|
458
|
-
expectTypeNotAny(a);
|
|
459
|
-
},
|
|
460
397
|
},
|
|
461
398
|
],
|
|
462
399
|
}));
|
|
@@ -469,12 +406,6 @@ describe('useQueries', () => {
|
|
|
469
406
|
{
|
|
470
407
|
queryKey: key1,
|
|
471
408
|
queryFn: () => Promise.resolve('string'),
|
|
472
|
-
onSuccess: (a) => {
|
|
473
|
-
expectType(a);
|
|
474
|
-
expectTypeNotAny(a);
|
|
475
|
-
},
|
|
476
|
-
// @ts-expect-error (refuses to accept a Promise)
|
|
477
|
-
onSettled: (a) => null,
|
|
478
409
|
},
|
|
479
410
|
],
|
|
480
411
|
}));
|
|
@@ -554,11 +485,10 @@ describe('useQueries', () => {
|
|
|
554
485
|
queries: queries.map(
|
|
555
486
|
// no need to type the mapped query
|
|
556
487
|
(query) => {
|
|
557
|
-
const { queryFn: fn, queryKey: key
|
|
488
|
+
const { queryFn: fn, queryKey: key } = query;
|
|
558
489
|
expectType(fn);
|
|
559
490
|
return {
|
|
560
491
|
queryKey: key,
|
|
561
|
-
onError: err,
|
|
562
492
|
queryFn: fn
|
|
563
493
|
? (ctx) => {
|
|
564
494
|
expectType(ctx.queryKey);
|
|
@@ -620,7 +550,7 @@ describe('useQueries', () => {
|
|
|
620
550
|
return () => void 0;
|
|
621
551
|
}
|
|
622
552
|
}
|
|
623
|
-
const QueriesObserverSpy =
|
|
553
|
+
const QueriesObserverSpy = vi
|
|
624
554
|
.spyOn(QueriesObserverModule, 'QueriesObserver')
|
|
625
555
|
.mockImplementation((fn) => {
|
|
626
556
|
return new QueriesObserverMock(fn);
|
|
@@ -657,21 +587,4 @@ describe('useQueries', () => {
|
|
|
657
587
|
await sleep(20);
|
|
658
588
|
QueriesObserverSpy.mockRestore();
|
|
659
589
|
});
|
|
660
|
-
it('should use provided custom queryClient', async () => {
|
|
661
|
-
const key = queryKey();
|
|
662
|
-
const queryFn = () => {
|
|
663
|
-
return Promise.resolve('custom client');
|
|
664
|
-
};
|
|
665
|
-
function Page() {
|
|
666
|
-
const state = createQueries(() => ({
|
|
667
|
-
queries: [{ queryKey: key, queryFn }],
|
|
668
|
-
queryClient,
|
|
669
|
-
}));
|
|
670
|
-
return (<div>
|
|
671
|
-
<h1>Status: {state[0].data}</h1>
|
|
672
|
-
</div>);
|
|
673
|
-
}
|
|
674
|
-
render(() => <Page />);
|
|
675
|
-
await waitFor(() => screen.getByText('Status: custom client'));
|
|
676
|
-
});
|
|
677
590
|
});
|