@tanstack/solid-query 5.0.0-alpha.5 → 5.0.0-alpha.51

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 (95) hide show
  1. package/build/lib/index.cjs +33 -0
  2. package/build/source/QueryClient.js +6 -0
  3. package/build/source/__tests__/QueryClientProvider.test.jsx +2 -3
  4. package/build/source/__tests__/createInfiniteQuery.test.jsx +58 -13
  5. package/build/source/__tests__/createMutation.test.jsx +5 -5
  6. package/build/source/__tests__/createQueries.test.jsx +6 -77
  7. package/build/source/__tests__/createQuery.test.jsx +51 -261
  8. package/build/source/__tests__/createQuery.types.test.jsx +19 -1
  9. package/build/source/__tests__/suspense.test.jsx +7 -69
  10. package/build/source/__tests__/transition.test.jsx +1 -1
  11. package/build/source/__tests__/useIsFetching.test.jsx +1 -1
  12. package/build/source/__tests__/useIsMutating.test.jsx +5 -7
  13. package/build/source/__tests__/utils.jsx +1 -1
  14. package/build/source/createBaseQuery.js +49 -23
  15. package/build/source/createMutation.js +1 -1
  16. package/build/source/createQueries.js +13 -7
  17. package/build/source/createQuery.js +3 -0
  18. package/build/source/index.js +2 -1
  19. package/build/types/QueryClient.d.ts +30 -0
  20. package/build/types/QueryClient.d.ts.map +1 -0
  21. package/build/types/QueryClientProvider.d.ts +3 -2
  22. package/build/types/QueryClientProvider.d.ts.map +1 -0
  23. package/build/types/__tests__/QueryClientProvider.test.d.ts +1 -0
  24. package/build/types/__tests__/QueryClientProvider.test.d.ts.map +1 -0
  25. package/build/types/__tests__/createInfiniteQuery.test.d.ts +1 -0
  26. package/build/types/__tests__/createInfiniteQuery.test.d.ts.map +1 -0
  27. package/build/types/__tests__/createMutation.test.d.ts +1 -0
  28. package/build/types/__tests__/createMutation.test.d.ts.map +1 -0
  29. package/build/types/__tests__/createQueries.test.d.ts +1 -0
  30. package/build/types/__tests__/createQueries.test.d.ts.map +1 -0
  31. package/build/types/__tests__/createQuery.test.d.ts +1 -0
  32. package/build/types/__tests__/createQuery.test.d.ts.map +1 -0
  33. package/build/types/__tests__/createQuery.types.test.d.ts +3 -2
  34. package/build/types/__tests__/createQuery.types.test.d.ts.map +1 -0
  35. package/build/types/__tests__/suspense.test.d.ts +1 -0
  36. package/build/types/__tests__/suspense.test.d.ts.map +1 -0
  37. package/build/types/__tests__/transition.test.d.ts +1 -0
  38. package/build/types/__tests__/transition.test.d.ts.map +1 -0
  39. package/build/types/__tests__/useIsFetching.test.d.ts +1 -0
  40. package/build/types/__tests__/useIsFetching.test.d.ts.map +1 -0
  41. package/build/types/__tests__/useIsMutating.test.d.ts +1 -0
  42. package/build/types/__tests__/useIsMutating.test.d.ts.map +1 -0
  43. package/build/types/__tests__/utils.d.ts +4 -3
  44. package/build/types/__tests__/utils.d.ts.map +1 -0
  45. package/build/types/createBaseQuery.d.ts +3 -1
  46. package/build/types/createBaseQuery.d.ts.map +1 -0
  47. package/build/types/createInfiniteQuery.d.ts +3 -1
  48. package/build/types/createInfiniteQuery.d.ts.map +1 -0
  49. package/build/types/createMutation.d.ts +3 -1
  50. package/build/types/createMutation.d.ts.map +1 -0
  51. package/build/types/createQueries.d.ts +12 -9
  52. package/build/types/createQueries.d.ts.map +1 -0
  53. package/build/types/createQuery.d.ts +7 -3
  54. package/build/types/createQuery.d.ts.map +1 -0
  55. package/build/types/index.d.ts +4 -1
  56. package/build/types/index.d.ts.map +1 -0
  57. package/build/types/setBatchUpdatesFn.d.ts +1 -0
  58. package/build/types/setBatchUpdatesFn.d.ts.map +1 -0
  59. package/build/types/types.d.ts +17 -15
  60. package/build/types/types.d.ts.map +1 -0
  61. package/build/types/useIsFetching.d.ts +3 -1
  62. package/build/types/useIsFetching.d.ts.map +1 -0
  63. package/build/types/useIsMutating.d.ts +3 -1
  64. package/build/types/useIsMutating.d.ts.map +1 -0
  65. package/build/types/utils.d.ts +1 -0
  66. package/build/types/utils.d.ts.map +1 -0
  67. package/package.json +20 -19
  68. package/src/QueryClient.ts +84 -0
  69. package/src/QueryClientProvider.tsx +1 -1
  70. package/src/__tests__/QueryClientProvider.test.tsx +2 -3
  71. package/src/__tests__/createInfiniteQuery.test.tsx +83 -19
  72. package/src/__tests__/createMutation.test.tsx +5 -5
  73. package/src/__tests__/createQueries.test.tsx +6 -78
  74. package/src/__tests__/createQuery.test.tsx +66 -334
  75. package/src/__tests__/createQuery.types.test.tsx +21 -1
  76. package/src/__tests__/suspense.test.tsx +7 -90
  77. package/src/__tests__/transition.test.tsx +1 -1
  78. package/src/__tests__/useIsFetching.test.tsx +1 -1
  79. package/src/__tests__/useIsMutating.test.tsx +5 -7
  80. package/src/__tests__/utils.tsx +1 -1
  81. package/src/createBaseQuery.ts +73 -28
  82. package/src/createInfiniteQuery.ts +1 -1
  83. package/src/createMutation.ts +3 -2
  84. package/src/createQueries.ts +32 -14
  85. package/src/createQuery.ts +24 -1
  86. package/src/index.ts +8 -1
  87. package/src/types.ts +4 -2
  88. package/src/useIsFetching.ts +2 -1
  89. package/src/useIsMutating.ts +2 -1
  90. package/build/cjs/index.js +0 -300
  91. package/build/cjs/index.js.map +0 -1
  92. package/build/esm/index.js +0 -285
  93. package/build/esm/index.js.map +0 -1
  94. package/build/umd/index.js +0 -2
  95. package/build/umd/index.js.map +0 -1
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ require('./setBatchUpdatesFn.cjs');
4
+ var queryCore = require('@tanstack/query-core');
5
+ var QueryClient = require('./QueryClient.cjs');
6
+ var createQuery = require('./createQuery.cjs');
7
+ var QueryClientProvider = require('./QueryClientProvider.cjs');
8
+ var useIsFetching = require('./useIsFetching.cjs');
9
+ var createInfiniteQuery = require('./createInfiniteQuery.cjs');
10
+ var createMutation = require('./createMutation.cjs');
11
+ var useIsMutating = require('./useIsMutating.cjs');
12
+ var createQueries = require('./createQueries.cjs');
13
+
14
+
15
+
16
+ exports.QueryClient = QueryClient.QueryClient;
17
+ exports.createQuery = createQuery.createQuery;
18
+ exports.queryOptions = createQuery.queryOptions;
19
+ exports.QueryClientContext = QueryClientProvider.QueryClientContext;
20
+ exports.QueryClientProvider = QueryClientProvider.QueryClientProvider;
21
+ exports.useQueryClient = QueryClientProvider.useQueryClient;
22
+ exports.useIsFetching = useIsFetching.useIsFetching;
23
+ exports.createInfiniteQuery = createInfiniteQuery.createInfiniteQuery;
24
+ exports.createMutation = createMutation.createMutation;
25
+ exports.useIsMutating = useIsMutating.useIsMutating;
26
+ exports.createQueries = createQueries.createQueries;
27
+ Object.keys(queryCore).forEach(function (k) {
28
+ if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {
29
+ enumerable: true,
30
+ get: function () { return queryCore[k]; }
31
+ });
32
+ });
33
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,6 @@
1
+ import { QueryClient as QueryCoreClient } from '@tanstack/query-core';
2
+ export class QueryClient extends QueryCoreClient {
3
+ constructor(config = {}) {
4
+ super(config);
5
+ }
6
+ }
@@ -1,8 +1,7 @@
1
- import { render, screen, waitFor } from 'solid-testing-library';
2
- import { queryKey } from './utils';
1
+ import { render, screen, waitFor } from '@solidjs/testing-library';
2
+ import { createQueryClient, sleep, queryKey } from './utils';
3
3
  import { QueryCache } from '@tanstack/query-core';
4
4
  import { createQuery, QueryClientProvider, useQueryClient } from '..';
5
- import { createQueryClient, sleep } from './utils';
6
5
  import { vi } from 'vitest';
7
6
  describe('QueryClientProvider', () => {
8
7
  it('sets a specific cache for all queries to use', async () => {
@@ -1,8 +1,7 @@
1
- import { fireEvent, render, screen, waitFor } from 'solid-testing-library';
2
- import { createQueryClient, sleep } from './utils';
3
- import { createEffect, createRenderEffect, createSignal, For, Index, Match, Switch, } from 'solid-js';
1
+ import { fireEvent, render, screen, waitFor } from '@solidjs/testing-library';
2
+ import { createQueryClient, sleep, Blink, queryKey, setActTimeout, } from './utils';
3
+ import { createEffect, createRenderEffect, createSignal, For, Index, Match, Switch, on, } from 'solid-js';
4
4
  import { createInfiniteQuery, QueryCache, QueryClientProvider, keepPreviousData, } from '..';
5
- import { Blink, queryKey, setActTimeout } from './utils';
6
5
  import { vi } from 'vitest';
7
6
  const pageSize = 10;
8
7
  const fetchItems = async (page, ts, noNext, noPrev) => {
@@ -154,7 +153,16 @@ describe('useInfiniteQuery', () => {
154
153
  notifyOnChangeProps: 'all',
155
154
  }));
156
155
  createRenderEffect(() => {
157
- states.push({ ...state });
156
+ states.push({
157
+ data: state.data ? JSON.parse(JSON.stringify(state.data)) : undefined,
158
+ hasNextPage: state.hasNextPage,
159
+ hasPreviousPage: state.hasPreviousPage,
160
+ isFetching: state.isFetching,
161
+ isFetchingNextPage: state.isFetchingNextPage,
162
+ isFetchingPreviousPage: state.isFetchingPreviousPage,
163
+ isSuccess: state.isSuccess,
164
+ isPlaceholderData: state.isPlaceholderData,
165
+ });
158
166
  });
159
167
  return (<div>
160
168
  <button onClick={() => state.fetchNextPage()}>fetchNextPage</button>
@@ -306,9 +314,14 @@ describe('useInfiniteQuery', () => {
306
314
  getNextPageParam: () => 1,
307
315
  defaultPageParam: 0,
308
316
  }));
309
- createRenderEffect(() => {
310
- states.push({ ...state });
311
- });
317
+ createRenderEffect(on(() => ({ ...state }), () => {
318
+ states.push({
319
+ data: state.data
320
+ ? JSON.parse(JSON.stringify(state.data))
321
+ : undefined,
322
+ isSuccess: state.isSuccess,
323
+ });
324
+ }));
312
325
  return (<div>
313
326
  <button onClick={() => state.fetchNextPage()}>fetchNextPage</button>
314
327
  <div>data: {state.data?.pages.join(',') ?? 'null'}</div>
@@ -356,7 +369,15 @@ describe('useInfiniteQuery', () => {
356
369
  notifyOnChangeProps: 'all',
357
370
  }));
358
371
  createRenderEffect(() => {
359
- states.push({ ...state });
372
+ states.push({
373
+ data: state.data ? JSON.parse(JSON.stringify(state.data)) : undefined,
374
+ hasNextPage: state.hasNextPage,
375
+ hasPreviousPage: state.hasPreviousPage,
376
+ isFetching: state.isFetching,
377
+ isFetchingNextPage: state.isFetchingNextPage,
378
+ isFetchingPreviousPage: state.isFetchingPreviousPage,
379
+ isSuccess: state.isSuccess,
380
+ });
360
381
  });
361
382
  createEffect(() => {
362
383
  const fetchPreviousPage = state.fetchPreviousPage;
@@ -424,7 +445,13 @@ describe('useInfiniteQuery', () => {
424
445
  notifyOnChangeProps: 'all',
425
446
  }));
426
447
  createRenderEffect(() => {
427
- states.push({ ...state });
448
+ states.push({
449
+ data: state.data ? JSON.parse(JSON.stringify(state.data)) : undefined,
450
+ isFetching: state.isFetching,
451
+ isFetchingNextPage: state.isFetchingNextPage,
452
+ isRefetching: state.isRefetching,
453
+ isFetchingPreviousPage: state.isFetchingPreviousPage,
454
+ });
428
455
  });
429
456
  return (<div>
430
457
  <button onClick={() => state.fetchNextPage()}>fetchNextPage</button>
@@ -524,7 +551,13 @@ describe('useInfiniteQuery', () => {
524
551
  notifyOnChangeProps: 'all',
525
552
  }));
526
553
  createRenderEffect(() => {
527
- states.push({ ...state });
554
+ states.push({
555
+ hasNextPage: state.hasNextPage,
556
+ data: state.data ? JSON.parse(JSON.stringify(state.data)) : undefined,
557
+ isFetching: state.isFetching,
558
+ isFetchingNextPage: state.isFetchingNextPage,
559
+ isSuccess: state.isSuccess,
560
+ });
528
561
  });
529
562
  createEffect(() => {
530
563
  const { refetch, fetchNextPage } = state;
@@ -804,7 +837,13 @@ describe('useInfiniteQuery', () => {
804
837
  defaultPageParam: firstPage(),
805
838
  }));
806
839
  createRenderEffect(() => {
807
- states.push({ ...state });
840
+ states.push({
841
+ hasNextPage: state.hasNextPage,
842
+ data: state.data ? JSON.parse(JSON.stringify(state.data)) : undefined,
843
+ isFetching: state.isFetching,
844
+ isFetchingNextPage: state.isFetchingNextPage,
845
+ isSuccess: state.isSuccess,
846
+ });
808
847
  });
809
848
  createEffect(() => {
810
849
  const { refetch } = state;
@@ -879,7 +918,13 @@ describe('useInfiniteQuery', () => {
879
918
  notifyOnChangeProps: 'all',
880
919
  }));
881
920
  createRenderEffect(() => {
882
- states.push({ ...state });
921
+ states.push({
922
+ data: JSON.parse(JSON.stringify(state.data)),
923
+ hasNextPage: state.hasNextPage,
924
+ isFetching: state.isFetching,
925
+ isFetchingNextPage: state.isFetchingNextPage,
926
+ isSuccess: state.isSuccess,
927
+ });
883
928
  });
884
929
  createEffect(() => {
885
930
  const { fetchNextPage } = state;
@@ -1,6 +1,6 @@
1
1
  import '@testing-library/jest-dom';
2
2
  import { createEffect, createRenderEffect, createSignal, ErrorBoundary, } from 'solid-js';
3
- import { fireEvent, render, screen, waitFor } from 'solid-testing-library';
3
+ import { fireEvent, render, screen, waitFor } from '@solidjs/testing-library';
4
4
  import { createMutation, MutationCache, QueryCache, QueryClientProvider, } from '..';
5
5
  import { createQueryClient, mockNavigatorOnLine, queryKey, setActTimeout, sleep, } from './utils';
6
6
  import { vi } from 'vitest';
@@ -554,7 +554,7 @@ describe('createMutation', () => {
554
554
  fireEvent.click(screen.getByText('mutate'));
555
555
  fireEvent.click(screen.getByText('unmount'));
556
556
  });
557
- it('should be able to throw an error when throwErrors is set to true', async () => {
557
+ it('should be able to throw an error when throwOnError is set to true', async () => {
558
558
  function Page() {
559
559
  const mutation = createMutation(() => ({
560
560
  mutationFn: () => {
@@ -562,7 +562,7 @@ describe('createMutation', () => {
562
562
  err.stack = '';
563
563
  return Promise.reject(err);
564
564
  },
565
- throwErrors: true,
565
+ throwOnError: true,
566
566
  }));
567
567
  return (<div>
568
568
  <button onClick={() => mutation.mutate()}>mutate</button>
@@ -580,7 +580,7 @@ describe('createMutation', () => {
580
580
  expect(screen.queryByText('error')).not.toBeNull();
581
581
  });
582
582
  });
583
- it('should be able to throw an error when throwErrors is a function that returns true', async () => {
583
+ it('should be able to throw an error when throwOnError is a function that returns true', async () => {
584
584
  let boundary = false;
585
585
  function Page() {
586
586
  const mutation = createMutation(() => ({
@@ -589,7 +589,7 @@ describe('createMutation', () => {
589
589
  err.stack = '';
590
590
  return Promise.reject(err);
591
591
  },
592
- throwErrors: () => {
592
+ throwOnError: () => {
593
593
  boundary = !boundary;
594
594
  return !boundary;
595
595
  },
@@ -1,5 +1,5 @@
1
- import { fireEvent, render, screen, waitFor } from 'solid-testing-library';
2
- import * as QueriesObserverModule from '../../../query-core/src/queriesObserver';
1
+ import { fireEvent, render, screen, waitFor } from '@solidjs/testing-library';
2
+ import * as QueryCore from '@tanstack/query-core';
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';
@@ -117,10 +117,6 @@ describe('useQueries', () => {
117
117
  expectTypeNotAny(a);
118
118
  return a.toLowerCase();
119
119
  },
120
- onSuccess: (a) => {
121
- expectType(a);
122
- expectTypeNotAny(a);
123
- },
124
120
  placeholderData: 'string',
125
121
  // @ts-expect-error (initialData: string)
126
122
  initialData: 123,
@@ -133,14 +129,6 @@ describe('useQueries', () => {
133
129
  expectTypeNotAny(a);
134
130
  return parseInt(a);
135
131
  },
136
- onSuccess: (a) => {
137
- expectType(a);
138
- expectTypeNotAny(a);
139
- },
140
- onError: (e) => {
141
- expectType(e);
142
- expectTypeNotAny(e);
143
- },
144
132
  placeholderData: 'string',
145
133
  // @ts-expect-error (initialData: string)
146
134
  initialData: 123,
@@ -253,10 +241,6 @@ describe('useQueries', () => {
253
241
  expectTypeNotAny(a);
254
242
  return a.toLowerCase();
255
243
  },
256
- onSuccess: (a) => {
257
- expectType(a);
258
- expectTypeNotAny(a);
259
- },
260
244
  placeholderData: 'string',
261
245
  // @ts-expect-error (initialData: string)
262
246
  initialData: 123,
@@ -269,14 +253,6 @@ describe('useQueries', () => {
269
253
  expectTypeNotAny(a);
270
254
  return parseInt(a);
271
255
  },
272
- onSuccess: (a) => {
273
- expectType(a);
274
- expectTypeNotAny(a);
275
- },
276
- onError: (e) => {
277
- expectType(e);
278
- expectTypeNotAny(e);
279
- },
280
256
  placeholderData: 'string',
281
257
  // @ts-expect-error (initialData: string)
282
258
  initialData: 123,
@@ -363,59 +339,37 @@ describe('useQueries', () => {
363
339
  },
364
340
  ],
365
341
  }));
366
- // select / onSuccess / onSettled params are "indirectly" enforced
342
+ // select params are "indirectly" enforced
367
343
  createQueries(() => ({
368
344
  queries: [
369
345
  // unfortunately TS will not suggest the type for you
370
346
  {
371
347
  queryKey: key1,
372
348
  queryFn: () => 'string',
373
- // @ts-expect-error (noImplicitAny)
374
- onSuccess: (a) => null,
375
- // @ts-expect-error (noImplicitAny)
376
- onSettled: (a) => null,
377
349
  },
378
350
  // however you can add a type to the callback
379
351
  {
380
352
  queryKey: key2,
381
353
  queryFn: () => 'string',
382
- onSuccess: (a) => {
383
- expectType(a);
384
- expectTypeNotAny(a);
385
- },
386
- onSettled: (a) => {
387
- expectType(a);
388
- expectTypeNotAny(a);
389
- },
390
354
  },
391
355
  // the type you do pass is enforced
392
356
  {
393
357
  queryKey: key3,
394
358
  queryFn: () => 'string',
395
- // @ts-expect-error (only accepts string)
396
- onSuccess: (a) => null,
397
359
  },
398
360
  {
399
361
  queryKey: key4,
400
362
  queryFn: () => 'string',
401
363
  select: (a) => parseInt(a),
402
- // @ts-expect-error (select is defined => only accepts number)
403
- onSuccess: (a) => null,
404
- onSettled: (a) => {
405
- expectType(a);
406
- expectTypeNotAny(a);
407
- },
408
364
  },
409
365
  ],
410
366
  }));
411
367
  // callbacks are also indirectly enforced with Array.map
412
368
  createQueries(() => ({
413
- // @ts-expect-error (onSuccess only accepts string)
414
369
  queries: Array(50).map((_, i) => ({
415
370
  queryKey: ['key', i],
416
371
  queryFn: () => i + 10,
417
372
  select: (data) => data.toString(),
418
- onSuccess: (_data) => null,
419
373
  })),
420
374
  }));
421
375
  createQueries(() => ({
@@ -423,7 +377,6 @@ describe('useQueries', () => {
423
377
  queryKey: ['key', i],
424
378
  queryFn: () => i + 10,
425
379
  select: (data) => data.toString(),
426
- onSuccess: (_data) => null,
427
380
  })),
428
381
  }));
429
382
  // results inference works when all the handlers are defined
@@ -432,32 +385,15 @@ describe('useQueries', () => {
432
385
  {
433
386
  queryKey: key1,
434
387
  queryFn: () => 'string',
435
- // @ts-expect-error (noImplicitAny)
436
- onSuccess: (a) => null,
437
- // @ts-expect-error (noImplicitAny)
438
- onSettled: (a) => null,
439
388
  },
440
389
  {
441
390
  queryKey: key2,
442
391
  queryFn: () => 'string',
443
- onSuccess: (a) => {
444
- expectType(a);
445
- expectTypeNotAny(a);
446
- },
447
- onSettled: (a) => {
448
- expectType(a);
449
- expectTypeNotAny(a);
450
- },
451
392
  },
452
393
  {
453
394
  queryKey: key4,
454
395
  queryFn: () => 'string',
455
396
  select: (a) => parseInt(a),
456
- onSuccess: (_a) => null,
457
- onSettled: (a) => {
458
- expectType(a);
459
- expectTypeNotAny(a);
460
- },
461
397
  },
462
398
  ],
463
399
  }));
@@ -470,12 +406,6 @@ describe('useQueries', () => {
470
406
  {
471
407
  queryKey: key1,
472
408
  queryFn: () => Promise.resolve('string'),
473
- onSuccess: (a) => {
474
- expectType(a);
475
- expectTypeNotAny(a);
476
- },
477
- // @ts-expect-error (refuses to accept a Promise)
478
- onSettled: (a) => null,
479
409
  },
480
410
  ],
481
411
  }));
@@ -555,11 +485,10 @@ describe('useQueries', () => {
555
485
  queries: queries.map(
556
486
  // no need to type the mapped query
557
487
  (query) => {
558
- const { queryFn: fn, queryKey: key, onError: err } = query;
488
+ const { queryFn: fn, queryKey: key } = query;
559
489
  expectType(fn);
560
490
  return {
561
491
  queryKey: key,
562
- onError: err,
563
492
  queryFn: fn
564
493
  ? (ctx) => {
565
494
  expectType(ctx.queryKey);
@@ -622,9 +551,9 @@ describe('useQueries', () => {
622
551
  }
623
552
  }
624
553
  const QueriesObserverSpy = vi
625
- .spyOn(QueriesObserverModule, 'QueriesObserver')
554
+ .spyOn(QueryCore, 'QueriesObserver')
626
555
  .mockImplementation((fn) => {
627
- return new QueriesObserverMock(fn);
556
+ return new QueriesObserverMock(fn, []);
628
557
  });
629
558
  function Queries() {
630
559
  createQueries(() => ({