@tanstack/solid-query 5.0.0-alpha.15 → 5.0.0-alpha.18

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 (31) hide show
  1. package/build/cjs/index.js +7 -1
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/index.js +7 -1
  4. package/build/esm/index.js.map +1 -1
  5. package/build/umd/index.js +1 -1
  6. package/build/umd/index.js.map +1 -1
  7. package/package.json +2 -2
  8. package/src/createBaseQuery.ts +5 -2
  9. package/build/source/QueryClientProvider.jsx +0 -21
  10. package/build/source/__tests__/QueryClientProvider.test.jsx +0 -121
  11. package/build/source/__tests__/createInfiniteQuery.test.jsx +0 -1315
  12. package/build/source/__tests__/createMutation.test.jsx +0 -867
  13. package/build/source/__tests__/createQueries.test.jsx +0 -661
  14. package/build/source/__tests__/createQuery.test.jsx +0 -4608
  15. package/build/source/__tests__/createQuery.types.test.jsx +0 -135
  16. package/build/source/__tests__/suspense.test.jsx +0 -721
  17. package/build/source/__tests__/transition.test.jsx +0 -42
  18. package/build/source/__tests__/useIsFetching.test.jsx +0 -190
  19. package/build/source/__tests__/useIsMutating.test.jsx +0 -198
  20. package/build/source/__tests__/utils.jsx +0 -50
  21. package/build/source/createBaseQuery.js +0 -155
  22. package/build/source/createInfiniteQuery.js +0 -8
  23. package/build/source/createMutation.js +0 -38
  24. package/build/source/createQueries.js +0 -32
  25. package/build/source/createQuery.js +0 -6
  26. package/build/source/index.js +0 -14
  27. package/build/source/setBatchUpdatesFn.js +0 -3
  28. package/build/source/types.js +0 -2
  29. package/build/source/useIsFetching.js +0 -12
  30. package/build/source/useIsMutating.js +0 -12
  31. package/build/source/utils.js +0 -7
@@ -64,8 +64,9 @@ export function createBaseQuery<
64
64
  return observer.subscribe((result) => {
65
65
  notifyManager.batchCalls(() => {
66
66
  const query = observer.getCurrentQuery()
67
+ const { refetch, ...rest } = unwrap(result)
67
68
  const unwrappedResult = {
68
- ...unwrap(result),
69
+ ...rest,
69
70
 
70
71
  // hydrate() expects a QueryState object, which is similar but not
71
72
  // quite the same as a QueryObserverResult object. Thus, for now, we're
@@ -84,7 +85,9 @@ export function createBaseQuery<
84
85
  reject(unwrappedResult.error)
85
86
  }
86
87
  if (unwrappedResult.isSuccess) {
87
- resolve(unwrappedResult)
88
+ // Use of any here is fine
89
+ // We cannot include refetch since it is not serializable
90
+ resolve(unwrappedResult as any)
88
91
  }
89
92
  })()
90
93
  })
@@ -1,21 +0,0 @@
1
- import { createContext, useContext, onMount, onCleanup } from 'solid-js';
2
- export const QueryClientContext = createContext(undefined);
3
- export const useQueryClient = (queryClient) => {
4
- const client = useContext(QueryClientContext);
5
- if (queryClient) {
6
- return queryClient;
7
- }
8
- if (!client) {
9
- throw new Error('No QueryClient set, use QueryClientProvider to set one');
10
- }
11
- return client;
12
- };
13
- export const QueryClientProvider = (props) => {
14
- onMount(() => {
15
- props.client.mount();
16
- });
17
- onCleanup(() => props.client.unmount());
18
- return (<QueryClientContext.Provider value={props.client}>
19
- {props.children}
20
- </QueryClientContext.Provider>);
21
- };
@@ -1,121 +0,0 @@
1
- import { render, screen, waitFor } from 'solid-testing-library';
2
- import { queryKey } from './utils';
3
- import { QueryCache } from '@tanstack/query-core';
4
- import { createQuery, QueryClientProvider, useQueryClient } from '..';
5
- import { createQueryClient, sleep } from './utils';
6
- import { vi } from 'vitest';
7
- describe('QueryClientProvider', () => {
8
- it('sets a specific cache for all queries to use', async () => {
9
- const key = queryKey();
10
- const queryCache = new QueryCache();
11
- const queryClient = createQueryClient({ queryCache });
12
- function Page() {
13
- const query = createQuery(() => ({
14
- queryKey: key,
15
- queryFn: async () => {
16
- await sleep(10);
17
- return 'test';
18
- },
19
- }));
20
- return (<div>
21
- <h1>{query.data}</h1>
22
- </div>);
23
- }
24
- render(() => (<QueryClientProvider client={queryClient}>
25
- <Page />
26
- </QueryClientProvider>));
27
- await waitFor(() => {
28
- return screen.getByText('test');
29
- });
30
- expect(queryCache.find({ queryKey: key })).toBeDefined();
31
- });
32
- it('allows multiple caches to be partitioned', async () => {
33
- const key1 = queryKey();
34
- const key2 = queryKey();
35
- const queryCache1 = new QueryCache();
36
- const queryCache2 = new QueryCache();
37
- const queryClient1 = createQueryClient({ queryCache: queryCache1 });
38
- const queryClient2 = createQueryClient({ queryCache: queryCache2 });
39
- function Page1() {
40
- const query = createQuery(() => ({
41
- queryKey: key1,
42
- queryFn: async () => {
43
- await sleep(10);
44
- return 'test1';
45
- },
46
- }));
47
- return (<div>
48
- <h1>{query.data}</h1>
49
- </div>);
50
- }
51
- function Page2() {
52
- const query = createQuery(() => ({
53
- queryKey: key2,
54
- queryFn: async () => {
55
- await sleep(10);
56
- return 'test2';
57
- },
58
- }));
59
- return (<div>
60
- <h1>{query.data}</h1>
61
- </div>);
62
- }
63
- render(() => (<>
64
- <QueryClientProvider client={queryClient1}>
65
- <Page1 />
66
- </QueryClientProvider>
67
- <QueryClientProvider client={queryClient2}>
68
- <Page2 />
69
- </QueryClientProvider>
70
- </>));
71
- await waitFor(() => screen.getByText('test1'));
72
- await waitFor(() => screen.getByText('test2'));
73
- expect(queryCache1.find({ queryKey: key1 })).toBeDefined();
74
- expect(queryCache1.find({ queryKey: key2 })).not.toBeDefined();
75
- expect(queryCache2.find({ queryKey: key1 })).not.toBeDefined();
76
- expect(queryCache2.find({ queryKey: key2 })).toBeDefined();
77
- });
78
- it("uses defaultOptions for queries when they don't provide their own config", async () => {
79
- const key = queryKey();
80
- const queryCache = new QueryCache();
81
- const queryClient = createQueryClient({
82
- queryCache,
83
- defaultOptions: {
84
- queries: {
85
- gcTime: Infinity,
86
- },
87
- },
88
- });
89
- function Page() {
90
- const query = createQuery(() => ({
91
- queryKey: key,
92
- queryFn: async () => {
93
- await sleep(10);
94
- return 'test';
95
- },
96
- }));
97
- return (<div>
98
- <h1>{query.data}</h1>
99
- </div>);
100
- }
101
- render(() => (<QueryClientProvider client={queryClient}>
102
- <Page />
103
- </QueryClientProvider>));
104
- await waitFor(() => screen.getByText('test'));
105
- expect(queryCache.find({ queryKey: key })).toBeDefined();
106
- expect(queryCache.find({ queryKey: key })?.options.gcTime).toBe(Infinity);
107
- });
108
- describe('useQueryClient', () => {
109
- it('should throw an error if no query client has been set', () => {
110
- const consoleMock = vi
111
- .spyOn(console, 'error')
112
- .mockImplementation(() => undefined);
113
- function Page() {
114
- useQueryClient();
115
- return null;
116
- }
117
- expect(() => render(() => <Page />)).toThrow('No QueryClient set, use QueryClientProvider to set one');
118
- consoleMock.mockRestore();
119
- });
120
- });
121
- });