@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.
- package/build/cjs/index.js +7 -1
- package/build/cjs/index.js.map +1 -1
- package/build/esm/index.js +7 -1
- package/build/esm/index.js.map +1 -1
- package/build/umd/index.js +1 -1
- package/build/umd/index.js.map +1 -1
- package/package.json +2 -2
- package/src/createBaseQuery.ts +5 -2
- package/build/source/QueryClientProvider.jsx +0 -21
- package/build/source/__tests__/QueryClientProvider.test.jsx +0 -121
- package/build/source/__tests__/createInfiniteQuery.test.jsx +0 -1315
- package/build/source/__tests__/createMutation.test.jsx +0 -867
- package/build/source/__tests__/createQueries.test.jsx +0 -661
- package/build/source/__tests__/createQuery.test.jsx +0 -4608
- package/build/source/__tests__/createQuery.types.test.jsx +0 -135
- package/build/source/__tests__/suspense.test.jsx +0 -721
- package/build/source/__tests__/transition.test.jsx +0 -42
- package/build/source/__tests__/useIsFetching.test.jsx +0 -190
- package/build/source/__tests__/useIsMutating.test.jsx +0 -198
- package/build/source/__tests__/utils.jsx +0 -50
- package/build/source/createBaseQuery.js +0 -155
- package/build/source/createInfiniteQuery.js +0 -8
- package/build/source/createMutation.js +0 -38
- package/build/source/createQueries.js +0 -32
- package/build/source/createQuery.js +0 -6
- package/build/source/index.js +0 -14
- package/build/source/setBatchUpdatesFn.js +0 -3
- package/build/source/types.js +0 -2
- package/build/source/useIsFetching.js +0 -12
- package/build/source/useIsMutating.js +0 -12
- package/build/source/utils.js +0 -7
package/src/createBaseQuery.ts
CHANGED
|
@@ -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
|
-
...
|
|
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
|
-
|
|
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
|
-
});
|