@tanstack/solid-query 5.101.4 → 5.102.1
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/README.md +15 -1
- package/build/dev.cjs +418 -506
- package/build/dev.js +400 -499
- package/build/index.cjs +1 -540
- package/build/index.d.cts +132 -150
- package/build/index.d.cts.map +1 -0
- package/build/index.d.ts +132 -150
- package/build/index.d.ts.map +1 -0
- package/build/index.js +2 -521
- package/build/index.js.map +1 -0
- package/package.json +6 -8
- package/src/QueryClientProvider.tsx +24 -2
- package/src/infiniteQueryOptions.ts +5 -7
- package/src/queryOptions.ts +9 -7
- package/src/useBaseQuery.ts +3 -5
- package/src/useIsFetching.ts +11 -6
- package/src/useIsMutating.ts +11 -6
- package/src/useMutation.ts +5 -4
- package/src/useMutationState.ts +35 -9
- package/src/useQueries.ts +3 -2
package/build/dev.cjs
CHANGED
|
@@ -1,549 +1,461 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const client = solidJs.useContext(exports.QueryClientContext);
|
|
15
|
-
if (!client) {
|
|
16
|
-
throw new Error("No QueryClient set, use QueryClientProvider to set one");
|
|
17
|
-
}
|
|
18
|
-
return client();
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
let _tanstack_query_core = require("@tanstack/query-core");
|
|
3
|
+
let solid_js = require("solid-js");
|
|
4
|
+
let solid_js_web = require("solid-js/web");
|
|
5
|
+
let solid_js_store = require("solid-js/store");
|
|
6
|
+
//#region src/QueryClientProvider.tsx
|
|
7
|
+
const QueryClientContext = (0, solid_js.createContext)(void 0);
|
|
8
|
+
const queryClientContextError = "No QueryClient set, use QueryClientProvider to set one";
|
|
9
|
+
const useQueryClient = (queryClient) => {
|
|
10
|
+
if (queryClient) return queryClient;
|
|
11
|
+
const client = (0, solid_js.useContext)(QueryClientContext);
|
|
12
|
+
if (!client) throw new Error(queryClientContextError);
|
|
13
|
+
return client();
|
|
19
14
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
value: () => props.client,
|
|
29
|
-
get children() {
|
|
30
|
-
return props.children;
|
|
31
|
-
}
|
|
32
|
-
});
|
|
15
|
+
const useQueryClientResolver = (queryClient) => {
|
|
16
|
+
const contextClient = (0, solid_js.useContext)(QueryClientContext);
|
|
17
|
+
return () => {
|
|
18
|
+
const resolvedClient = queryClient?.();
|
|
19
|
+
if (resolvedClient) return resolvedClient;
|
|
20
|
+
if (!contextClient) throw new Error(queryClientContextError);
|
|
21
|
+
return contextClient();
|
|
22
|
+
};
|
|
33
23
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
24
|
+
const QueryClientProvider = (props) => {
|
|
25
|
+
(0, solid_js.createRenderEffect)((unmount) => {
|
|
26
|
+
unmount?.();
|
|
27
|
+
props.client.mount();
|
|
28
|
+
return props.client.unmount.bind(props.client);
|
|
29
|
+
});
|
|
30
|
+
(0, solid_js.onCleanup)(() => props.client.unmount());
|
|
31
|
+
return (0, solid_js_web.createComponent)(QueryClientContext.Provider, {
|
|
32
|
+
value: () => props.client,
|
|
33
|
+
get children() {
|
|
34
|
+
return props.children;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
//#endregion
|
|
39
|
+
//#region src/isRestoring.ts
|
|
40
|
+
const IsRestoringContext = (0, solid_js.createContext)(() => false);
|
|
41
|
+
const useIsRestoring = () => (0, solid_js.useContext)(IsRestoringContext);
|
|
42
|
+
const IsRestoringProvider = IsRestoringContext.Provider;
|
|
43
|
+
//#endregion
|
|
44
|
+
//#region src/useBaseQuery.ts
|
|
45
|
+
function reconcileFn(store, result, reconcileOption, queryHash) {
|
|
46
|
+
if (reconcileOption === false) return result;
|
|
47
|
+
if (typeof reconcileOption === "function") {
|
|
48
|
+
const newData = reconcileOption(store.data, result.data);
|
|
49
|
+
return {
|
|
50
|
+
...result,
|
|
51
|
+
data: newData
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
let data = result.data;
|
|
55
|
+
if (store.data === void 0) try {
|
|
56
|
+
data = structuredClone(data);
|
|
57
|
+
} catch (error) {
|
|
58
|
+
if (error instanceof Error) console.warn(`Unable to correctly reconcile data for query key: ${queryHash}. Possibly because the query data contains data structures that aren't supported by the 'structuredClone' algorithm. Consider using a callback function instead to manage the reconciliation manually.\n\n Error Received: ${error.name} - ${error.message}`);
|
|
59
|
+
}
|
|
60
|
+
const newData = (0, solid_js_store.reconcile)(data, { key: reconcileOption })(store.data);
|
|
61
|
+
return {
|
|
62
|
+
...result,
|
|
63
|
+
data: newData
|
|
64
|
+
};
|
|
63
65
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Solid's `onHydrated` functionality will silently "fail" (hydrate with an empty object)
|
|
68
|
+
* if the resource data is not serializable.
|
|
69
|
+
*/
|
|
70
|
+
const hydratableObserverResult = (query, result) => {
|
|
71
|
+
if (!solid_js_web.isServer) return result;
|
|
72
|
+
const obj = {
|
|
73
|
+
...(0, solid_js_store.unwrap)(result),
|
|
74
|
+
refetch: void 0
|
|
75
|
+
};
|
|
76
|
+
if ("fetchNextPage" in result) {
|
|
77
|
+
obj.fetchNextPage = void 0;
|
|
78
|
+
obj.fetchPreviousPage = void 0;
|
|
79
|
+
}
|
|
80
|
+
obj.hydrationData = {
|
|
81
|
+
state: query.state,
|
|
82
|
+
queryKey: query.queryKey,
|
|
83
|
+
queryHash: query.queryHash,
|
|
84
|
+
...query.meta && { meta: query.meta }
|
|
85
|
+
};
|
|
86
|
+
return obj;
|
|
83
87
|
};
|
|
84
88
|
function useBaseQuery(options, Observer, queryClient) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
setObserver(newObserver);
|
|
235
|
-
},
|
|
236
|
-
{
|
|
237
|
-
defer: true
|
|
238
|
-
}
|
|
239
|
-
)
|
|
240
|
-
);
|
|
241
|
-
solidJs.createComputed(
|
|
242
|
-
solidJs.on(
|
|
243
|
-
isRestoring,
|
|
244
|
-
(restoring) => {
|
|
245
|
-
if (!restoring && !web.isServer) {
|
|
246
|
-
refetch();
|
|
247
|
-
}
|
|
248
|
-
},
|
|
249
|
-
{ defer: true }
|
|
250
|
-
)
|
|
251
|
-
);
|
|
252
|
-
solidJs.onCleanup(() => {
|
|
253
|
-
if (web.isServer && queryResource.loading) {
|
|
254
|
-
unsubscribeQueued = true;
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
if (unsubscribe) {
|
|
258
|
-
unsubscribe();
|
|
259
|
-
unsubscribe = null;
|
|
260
|
-
}
|
|
261
|
-
if (resolver && !web.isServer) {
|
|
262
|
-
resolver(observerResult);
|
|
263
|
-
resolver = null;
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
solidJs.createComputed(
|
|
267
|
-
solidJs.on(
|
|
268
|
-
[observer, defaultedOptions],
|
|
269
|
-
([obs, opts]) => {
|
|
270
|
-
obs.setOptions(opts);
|
|
271
|
-
setStateWithReconciliation(obs.getOptimisticResult(opts));
|
|
272
|
-
refetch();
|
|
273
|
-
},
|
|
274
|
-
{ defer: true }
|
|
275
|
-
)
|
|
276
|
-
);
|
|
277
|
-
const handler = {
|
|
278
|
-
get(target, prop) {
|
|
279
|
-
if (prop === "data") {
|
|
280
|
-
if (state.data !== void 0) {
|
|
281
|
-
return queryResource.latest?.data;
|
|
282
|
-
}
|
|
283
|
-
return queryResource()?.data;
|
|
284
|
-
}
|
|
285
|
-
return Reflect.get(target, prop);
|
|
286
|
-
}
|
|
287
|
-
};
|
|
288
|
-
return new Proxy(state, handler);
|
|
89
|
+
const resolveClient = useQueryClientResolver(queryClient);
|
|
90
|
+
const client = (0, solid_js.createMemo)(() => resolveClient());
|
|
91
|
+
const isRestoring = useIsRestoring();
|
|
92
|
+
let unsubscribeQueued = false;
|
|
93
|
+
const defaultedOptions = (0, solid_js.createMemo)(() => {
|
|
94
|
+
const defaultOptions = client().defaultQueryOptions(options());
|
|
95
|
+
defaultOptions._optimisticResults = isRestoring() ? "isRestoring" : "optimistic";
|
|
96
|
+
defaultOptions.structuralSharing = false;
|
|
97
|
+
if (solid_js_web.isServer) {
|
|
98
|
+
defaultOptions.retry = false;
|
|
99
|
+
defaultOptions.throwOnError = true;
|
|
100
|
+
}
|
|
101
|
+
return defaultOptions;
|
|
102
|
+
});
|
|
103
|
+
const initialOptions = defaultedOptions();
|
|
104
|
+
const [observer, setObserver] = (0, solid_js.createSignal)(new Observer(client(), defaultedOptions()));
|
|
105
|
+
let observerResult = observer().getOptimisticResult(defaultedOptions());
|
|
106
|
+
const [state, setState] = (0, solid_js_store.createStore)(observerResult);
|
|
107
|
+
const createServerSubscriber = (resolve, reject) => {
|
|
108
|
+
return observer().subscribe((result) => {
|
|
109
|
+
_tanstack_query_core.notifyManager.batchCalls(() => {
|
|
110
|
+
const query = observer().getCurrentQuery();
|
|
111
|
+
const unwrappedResult = hydratableObserverResult(query, result);
|
|
112
|
+
if (result.data !== void 0 && unwrappedResult.isError) {
|
|
113
|
+
reject(unwrappedResult.error);
|
|
114
|
+
unsubscribeIfQueued();
|
|
115
|
+
} else {
|
|
116
|
+
resolve(unwrappedResult);
|
|
117
|
+
unsubscribeIfQueued();
|
|
118
|
+
}
|
|
119
|
+
})();
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
const unsubscribeIfQueued = () => {
|
|
123
|
+
if (unsubscribeQueued) {
|
|
124
|
+
unsubscribe?.();
|
|
125
|
+
unsubscribeQueued = false;
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
const createClientSubscriber = () => {
|
|
129
|
+
return observer().subscribe((result) => {
|
|
130
|
+
observerResult = result;
|
|
131
|
+
queueMicrotask(() => {
|
|
132
|
+
if (unsubscribe) refetch();
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
function setStateWithReconciliation(res) {
|
|
137
|
+
const opts = observer().options;
|
|
138
|
+
const reconcileOptions = opts.reconcile;
|
|
139
|
+
setState((store) => {
|
|
140
|
+
return reconcileFn(store, res, reconcileOptions === void 0 ? false : reconcileOptions, opts.queryHash);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function createDeepSignal() {
|
|
144
|
+
return [() => state, (v) => {
|
|
145
|
+
const unwrapped = (0, solid_js_store.unwrap)(state);
|
|
146
|
+
if (typeof v === "function") v = v(unwrapped);
|
|
147
|
+
if (v?.hydrationData) {
|
|
148
|
+
const { hydrationData, ...rest } = v;
|
|
149
|
+
v = rest;
|
|
150
|
+
}
|
|
151
|
+
setStateWithReconciliation(v);
|
|
152
|
+
}];
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Unsubscribe is set lazily, so that we can subscribe after hydration when needed.
|
|
156
|
+
*/
|
|
157
|
+
let unsubscribe = null;
|
|
158
|
+
let resolver = null;
|
|
159
|
+
const [queryResource, { refetch }] = (0, solid_js.createResource)(() => {
|
|
160
|
+
const obs = observer();
|
|
161
|
+
return new Promise((resolve, reject) => {
|
|
162
|
+
resolver = resolve;
|
|
163
|
+
if (solid_js_web.isServer) unsubscribe = createServerSubscriber(resolve, reject);
|
|
164
|
+
else if (!unsubscribe && !isRestoring()) unsubscribe = createClientSubscriber();
|
|
165
|
+
obs.updateResult();
|
|
166
|
+
if (observerResult.isError && !observerResult.isFetching && !isRestoring() && (0, _tanstack_query_core.shouldThrowError)(obs.options.throwOnError, [observerResult.error, obs.getCurrentQuery()])) {
|
|
167
|
+
setStateWithReconciliation(observerResult);
|
|
168
|
+
return reject(observerResult.error);
|
|
169
|
+
}
|
|
170
|
+
if (!observerResult.isLoading) {
|
|
171
|
+
resolver = null;
|
|
172
|
+
return resolve(hydratableObserverResult(obs.getCurrentQuery(), observerResult));
|
|
173
|
+
}
|
|
174
|
+
setStateWithReconciliation(observerResult);
|
|
175
|
+
});
|
|
176
|
+
}, {
|
|
177
|
+
storage: createDeepSignal,
|
|
178
|
+
get deferStream() {
|
|
179
|
+
return options().deferStream;
|
|
180
|
+
},
|
|
181
|
+
/**
|
|
182
|
+
* If this resource was populated on the server (either sync render, or streamed in over time), onHydrated
|
|
183
|
+
* will be called. This is the point at which we can hydrate the query cache state, and setup the query subscriber.
|
|
184
|
+
*
|
|
185
|
+
* Leveraging onHydrated allows us to plug into the async and streaming support that solidjs resources already support.
|
|
186
|
+
*
|
|
187
|
+
* Note that this is only invoked on the client, for queries that were originally run on the server.
|
|
188
|
+
*/
|
|
189
|
+
onHydrated(_k, info) {
|
|
190
|
+
if (info.value && "hydrationData" in info.value) (0, _tanstack_query_core.hydrate)(client(), { queries: [{ ...info.value.hydrationData }] });
|
|
191
|
+
if (unsubscribe) return;
|
|
192
|
+
/**
|
|
193
|
+
* Do not refetch query on mount if query was fetched on server,
|
|
194
|
+
* even if `staleTime` is not set.
|
|
195
|
+
*/
|
|
196
|
+
const newOptions = { ...initialOptions };
|
|
197
|
+
if ((initialOptions.staleTime || !initialOptions.initialData) && info.value) newOptions.refetchOnMount = false;
|
|
198
|
+
observer().setOptions(newOptions);
|
|
199
|
+
setStateWithReconciliation(observer().getOptimisticResult(newOptions));
|
|
200
|
+
unsubscribe = createClientSubscriber();
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
(0, solid_js.createComputed)((0, solid_js.on)(client, (c) => {
|
|
204
|
+
if (unsubscribe) unsubscribe();
|
|
205
|
+
const newObserver = new Observer(c, defaultedOptions());
|
|
206
|
+
unsubscribe = createClientSubscriber();
|
|
207
|
+
setObserver(newObserver);
|
|
208
|
+
}, { defer: true }));
|
|
209
|
+
(0, solid_js.createComputed)((0, solid_js.on)(isRestoring, (restoring) => {
|
|
210
|
+
if (!restoring && !solid_js_web.isServer) refetch();
|
|
211
|
+
}, { defer: true }));
|
|
212
|
+
(0, solid_js.onCleanup)(() => {
|
|
213
|
+
if (solid_js_web.isServer && queryResource.loading) {
|
|
214
|
+
unsubscribeQueued = true;
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (unsubscribe) {
|
|
218
|
+
unsubscribe();
|
|
219
|
+
unsubscribe = null;
|
|
220
|
+
}
|
|
221
|
+
if (resolver && !solid_js_web.isServer) {
|
|
222
|
+
resolver(observerResult);
|
|
223
|
+
resolver = null;
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
(0, solid_js.createComputed)((0, solid_js.on)([observer, defaultedOptions], ([obs, opts]) => {
|
|
227
|
+
obs.setOptions(opts);
|
|
228
|
+
setStateWithReconciliation(obs.getOptimisticResult(opts));
|
|
229
|
+
refetch();
|
|
230
|
+
}, { defer: true }));
|
|
231
|
+
return new Proxy(state, { get(target, prop) {
|
|
232
|
+
if (prop === "data") {
|
|
233
|
+
if (state.data !== void 0) return queryResource.latest?.data;
|
|
234
|
+
return queryResource()?.data;
|
|
235
|
+
}
|
|
236
|
+
return Reflect.get(target, prop);
|
|
237
|
+
} });
|
|
289
238
|
}
|
|
290
|
-
|
|
291
|
-
|
|
239
|
+
//#endregion
|
|
240
|
+
//#region src/useQuery.ts
|
|
292
241
|
function useQuery(options, queryClient) {
|
|
293
|
-
|
|
294
|
-
solidJs.createMemo(() => options()),
|
|
295
|
-
queryCore.QueryObserver,
|
|
296
|
-
queryClient
|
|
297
|
-
);
|
|
242
|
+
return useBaseQuery((0, solid_js.createMemo)(() => options()), _tanstack_query_core.QueryObserver, queryClient);
|
|
298
243
|
}
|
|
244
|
+
//#endregion
|
|
245
|
+
//#region src/useInfiniteQuery.ts
|
|
299
246
|
function useInfiniteQuery(options, queryClient) {
|
|
300
|
-
|
|
301
|
-
solidJs.createMemo(() => options()),
|
|
302
|
-
queryCore.InfiniteQueryObserver,
|
|
303
|
-
queryClient
|
|
304
|
-
);
|
|
247
|
+
return useBaseQuery((0, solid_js.createMemo)(() => options()), _tanstack_query_core.InfiniteQueryObserver, queryClient);
|
|
305
248
|
}
|
|
249
|
+
//#endregion
|
|
250
|
+
//#region src/useMutation.ts
|
|
306
251
|
function useMutation(options, queryClient) {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
mutate,
|
|
334
|
-
mutateAsync: result.mutate
|
|
335
|
-
});
|
|
336
|
-
});
|
|
337
|
-
solidJs.onCleanup(unsubscribe);
|
|
338
|
-
return state;
|
|
252
|
+
const resolveClient = useQueryClientResolver(queryClient);
|
|
253
|
+
const client = (0, solid_js.createMemo)(() => resolveClient());
|
|
254
|
+
const observer = new _tanstack_query_core.MutationObserver(client(), options());
|
|
255
|
+
const mutate = (...args) => {
|
|
256
|
+
observer.mutate(args[0], args[1]).catch(_tanstack_query_core.noop);
|
|
257
|
+
};
|
|
258
|
+
const [state, setState] = (0, solid_js_store.createStore)({
|
|
259
|
+
...observer.getCurrentResult(),
|
|
260
|
+
mutate,
|
|
261
|
+
mutateAsync: observer.getCurrentResult().mutate
|
|
262
|
+
});
|
|
263
|
+
(0, solid_js.createComputed)(() => {
|
|
264
|
+
observer.setOptions(options());
|
|
265
|
+
});
|
|
266
|
+
(0, solid_js.createComputed)((0, solid_js.on)(() => state.status, () => {
|
|
267
|
+
if (state.isError && (0, _tanstack_query_core.shouldThrowError)(observer.options.throwOnError, [state.error])) throw state.error;
|
|
268
|
+
}));
|
|
269
|
+
const unsubscribe = observer.subscribe((result) => {
|
|
270
|
+
setState({
|
|
271
|
+
...result,
|
|
272
|
+
mutate,
|
|
273
|
+
mutateAsync: result.mutate
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
(0, solid_js.onCleanup)(unsubscribe);
|
|
277
|
+
return state;
|
|
339
278
|
}
|
|
279
|
+
//#endregion
|
|
280
|
+
//#region src/useQueries.ts
|
|
340
281
|
function useQueries(queriesOptions, queryClient) {
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
dataResource[1].mutate(() => store.unwrap(state[index].data));
|
|
409
|
-
dataResource[1].refetch();
|
|
410
|
-
}
|
|
411
|
-
});
|
|
412
|
-
});
|
|
413
|
-
queueMicrotask(() => {
|
|
414
|
-
const taskToRun = taskQueue.pop();
|
|
415
|
-
if (taskToRun) taskToRun();
|
|
416
|
-
taskQueue = [];
|
|
417
|
-
});
|
|
418
|
-
});
|
|
419
|
-
let unsubscribe = queryCore.noop;
|
|
420
|
-
solidJs.createComputed((cleanup) => {
|
|
421
|
-
cleanup?.();
|
|
422
|
-
unsubscribe = isRestoring() ? queryCore.noop : subscribeToObserver();
|
|
423
|
-
return () => queueMicrotask(unsubscribe);
|
|
424
|
-
});
|
|
425
|
-
solidJs.onCleanup(unsubscribe);
|
|
426
|
-
solidJs.onMount(() => {
|
|
427
|
-
observer.setQueries(
|
|
428
|
-
defaultedQueries(),
|
|
429
|
-
queriesOptions().combine ? {
|
|
430
|
-
combine: queriesOptions().combine
|
|
431
|
-
} : void 0
|
|
432
|
-
);
|
|
433
|
-
});
|
|
434
|
-
solidJs.createComputed(() => {
|
|
435
|
-
observer.setQueries(
|
|
436
|
-
defaultedQueries(),
|
|
437
|
-
queriesOptions().combine ? {
|
|
438
|
-
combine: queriesOptions().combine
|
|
439
|
-
} : void 0
|
|
440
|
-
);
|
|
441
|
-
});
|
|
442
|
-
const handler = (index) => ({
|
|
443
|
-
get(target, prop) {
|
|
444
|
-
if (prop === "data") {
|
|
445
|
-
return dataResources()[index][0]();
|
|
446
|
-
}
|
|
447
|
-
return Reflect.get(target, prop);
|
|
448
|
-
}
|
|
449
|
-
});
|
|
450
|
-
const getProxies = () => state.map((s, index) => {
|
|
451
|
-
return new Proxy(s, handler(index));
|
|
452
|
-
});
|
|
453
|
-
const [proxyState, setProxyState] = store.createStore(getProxies());
|
|
454
|
-
solidJs.createRenderEffect(() => setProxyState(getProxies()));
|
|
455
|
-
return proxyState;
|
|
282
|
+
const resolveClient = useQueryClientResolver(queryClient);
|
|
283
|
+
const client = (0, solid_js.createMemo)(() => resolveClient());
|
|
284
|
+
const isRestoring = useIsRestoring();
|
|
285
|
+
const defaultedQueries = (0, solid_js.createMemo)(() => queriesOptions().queries.map((options) => (0, solid_js.mergeProps)(client().defaultQueryOptions(options), { get _optimisticResults() {
|
|
286
|
+
return isRestoring() ? "isRestoring" : "optimistic";
|
|
287
|
+
} })));
|
|
288
|
+
const observer = new _tanstack_query_core.QueriesObserver(client(), defaultedQueries(), queriesOptions().combine ? { combine: queriesOptions().combine } : void 0);
|
|
289
|
+
const [state, setState] = (0, solid_js_store.createStore)(observer.getOptimisticResult(defaultedQueries(), queriesOptions().combine)[1]());
|
|
290
|
+
(0, solid_js.createRenderEffect)((0, solid_js.on)(() => queriesOptions().queries.length, () => setState(observer.getOptimisticResult(defaultedQueries(), queriesOptions().combine)[1]())));
|
|
291
|
+
const dataResources = (0, solid_js.createMemo)((0, solid_js.on)(() => state.length, () => state.map((queryRes) => {
|
|
292
|
+
const dataPromise = () => new Promise((resolve) => {
|
|
293
|
+
if (queryRes.isFetching && queryRes.isLoading) return;
|
|
294
|
+
resolve((0, solid_js_store.unwrap)(queryRes.data));
|
|
295
|
+
});
|
|
296
|
+
return (0, solid_js.createResource)(dataPromise);
|
|
297
|
+
})));
|
|
298
|
+
(0, solid_js.batch)(() => {
|
|
299
|
+
const dataResources_ = dataResources();
|
|
300
|
+
for (let index = 0; index < dataResources_.length; index++) {
|
|
301
|
+
const dataResource = dataResources_[index];
|
|
302
|
+
dataResource[1].mutate(() => (0, solid_js_store.unwrap)(state[index].data));
|
|
303
|
+
dataResource[1].refetch();
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
let taskQueue = [];
|
|
307
|
+
const subscribeToObserver = () => observer.subscribe((result) => {
|
|
308
|
+
taskQueue.push(() => {
|
|
309
|
+
(0, solid_js.batch)(() => {
|
|
310
|
+
const dataResources_ = dataResources();
|
|
311
|
+
for (let index = 0; index < dataResources_.length; index++) {
|
|
312
|
+
const dataResource = dataResources_[index];
|
|
313
|
+
const unwrappedResult = { ...(0, solid_js_store.unwrap)(result[index]) };
|
|
314
|
+
setState(index, (0, solid_js_store.unwrap)(unwrappedResult));
|
|
315
|
+
dataResource[1].mutate(() => (0, solid_js_store.unwrap)(state[index].data));
|
|
316
|
+
dataResource[1].refetch();
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
queueMicrotask(() => {
|
|
321
|
+
const taskToRun = taskQueue.pop();
|
|
322
|
+
if (taskToRun) taskToRun();
|
|
323
|
+
taskQueue = [];
|
|
324
|
+
});
|
|
325
|
+
});
|
|
326
|
+
let unsubscribe = _tanstack_query_core.noop;
|
|
327
|
+
(0, solid_js.createComputed)((cleanup) => {
|
|
328
|
+
cleanup?.();
|
|
329
|
+
unsubscribe = isRestoring() ? _tanstack_query_core.noop : subscribeToObserver();
|
|
330
|
+
return () => queueMicrotask(unsubscribe);
|
|
331
|
+
});
|
|
332
|
+
(0, solid_js.onCleanup)(unsubscribe);
|
|
333
|
+
(0, solid_js.onMount)(() => {
|
|
334
|
+
observer.setQueries(defaultedQueries(), queriesOptions().combine ? { combine: queriesOptions().combine } : void 0);
|
|
335
|
+
});
|
|
336
|
+
(0, solid_js.createComputed)(() => {
|
|
337
|
+
observer.setQueries(defaultedQueries(), queriesOptions().combine ? { combine: queriesOptions().combine } : void 0);
|
|
338
|
+
});
|
|
339
|
+
const handler = (index) => ({ get(target, prop) {
|
|
340
|
+
if (prop === "data") return dataResources()[index][0]();
|
|
341
|
+
return Reflect.get(target, prop);
|
|
342
|
+
} });
|
|
343
|
+
const getProxies = () => state.map((s, index) => {
|
|
344
|
+
return new Proxy(s, handler(index));
|
|
345
|
+
});
|
|
346
|
+
const [proxyState, setProxyState] = (0, solid_js_store.createStore)(getProxies());
|
|
347
|
+
(0, solid_js.createRenderEffect)(() => setProxyState(getProxies()));
|
|
348
|
+
return proxyState;
|
|
456
349
|
}
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
350
|
+
//#endregion
|
|
351
|
+
//#region src/QueryClient.ts
|
|
352
|
+
var QueryClient = class extends _tanstack_query_core.QueryClient {
|
|
353
|
+
constructor(config = {}) {
|
|
354
|
+
super(config);
|
|
355
|
+
}
|
|
461
356
|
};
|
|
462
|
-
|
|
463
|
-
|
|
357
|
+
//#endregion
|
|
358
|
+
//#region src/queryOptions.ts
|
|
464
359
|
function queryOptions(options) {
|
|
465
|
-
|
|
360
|
+
return options;
|
|
466
361
|
}
|
|
362
|
+
//#endregion
|
|
363
|
+
//#region src/useIsFetching.ts
|
|
467
364
|
function useIsFetching(filters, queryClient) {
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
365
|
+
const resolveClient = useQueryClientResolver(queryClient);
|
|
366
|
+
const client = (0, solid_js.createMemo)(() => resolveClient());
|
|
367
|
+
const queryCache = (0, solid_js.createMemo)(() => client().getQueryCache());
|
|
368
|
+
const [fetches, setFetches] = (0, solid_js.createSignal)(client().isFetching(filters?.()));
|
|
369
|
+
(0, solid_js.createEffect)(() => {
|
|
370
|
+
setFetches(client().isFetching(filters?.()));
|
|
371
|
+
const unsubscribe = queryCache().subscribe(() => {
|
|
372
|
+
setFetches(client().isFetching(filters?.()));
|
|
373
|
+
});
|
|
374
|
+
(0, solid_js.onCleanup)(unsubscribe);
|
|
375
|
+
});
|
|
376
|
+
return fetches;
|
|
476
377
|
}
|
|
477
|
-
|
|
478
|
-
|
|
378
|
+
//#endregion
|
|
379
|
+
//#region src/infiniteQueryOptions.ts
|
|
479
380
|
function infiniteQueryOptions(options) {
|
|
480
|
-
|
|
381
|
+
return options;
|
|
481
382
|
}
|
|
482
|
-
|
|
483
|
-
|
|
383
|
+
//#endregion
|
|
384
|
+
//#region src/mutationOptions.ts
|
|
484
385
|
function mutationOptions(options) {
|
|
485
|
-
|
|
386
|
+
return options;
|
|
486
387
|
}
|
|
388
|
+
//#endregion
|
|
389
|
+
//#region src/useIsMutating.ts
|
|
487
390
|
function useIsMutating(filters, queryClient) {
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
391
|
+
const resolveClient = useQueryClientResolver(queryClient);
|
|
392
|
+
const client = (0, solid_js.createMemo)(() => resolveClient());
|
|
393
|
+
const mutationCache = (0, solid_js.createMemo)(() => client().getMutationCache());
|
|
394
|
+
const [mutations, setMutations] = (0, solid_js.createSignal)(client().isMutating(filters?.()));
|
|
395
|
+
(0, solid_js.createEffect)(() => {
|
|
396
|
+
setMutations(client().isMutating(filters?.()));
|
|
397
|
+
const unsubscribe = mutationCache().subscribe(() => {
|
|
398
|
+
setMutations(client().isMutating(filters?.()));
|
|
399
|
+
});
|
|
400
|
+
(0, solid_js.onCleanup)(unsubscribe);
|
|
401
|
+
});
|
|
402
|
+
return mutations;
|
|
498
403
|
}
|
|
404
|
+
//#endregion
|
|
405
|
+
//#region src/useMutationState.ts
|
|
499
406
|
function getResult(mutationCache, options) {
|
|
500
|
-
|
|
501
|
-
(mutation) => options.select ? options.select(mutation) : mutation.state
|
|
502
|
-
);
|
|
407
|
+
return mutationCache.findAll(options.filters).map((mutation) => options.select ? options.select(mutation) : mutation.state);
|
|
503
408
|
}
|
|
504
409
|
function useMutationState(options = () => ({}), queryClient) {
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
setResult(nextResult);
|
|
518
|
-
}
|
|
519
|
-
});
|
|
520
|
-
solidJs.onCleanup(unsubscribe);
|
|
521
|
-
});
|
|
522
|
-
return result;
|
|
410
|
+
const resolveClient = useQueryClientResolver(queryClient);
|
|
411
|
+
const client = (0, solid_js.createMemo)(() => resolveClient());
|
|
412
|
+
const mutationCache = (0, solid_js.createMemo)(() => client().getMutationCache());
|
|
413
|
+
const [result, setResult] = (0, solid_js.createSignal)(getResult(mutationCache(), options()));
|
|
414
|
+
(0, solid_js.createEffect)(() => {
|
|
415
|
+
const unsubscribe = mutationCache().subscribe(() => {
|
|
416
|
+
const nextResult = (0, _tanstack_query_core.replaceEqualDeep)(result(), getResult(mutationCache(), options()));
|
|
417
|
+
if (result() !== nextResult) setResult(nextResult);
|
|
418
|
+
});
|
|
419
|
+
(0, solid_js.onCleanup)(unsubscribe);
|
|
420
|
+
});
|
|
421
|
+
return result;
|
|
523
422
|
}
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
423
|
+
//#endregion
|
|
424
|
+
//#region src/index.ts
|
|
425
|
+
/* istanbul ignore file */
|
|
426
|
+
const createQuery = useQuery;
|
|
427
|
+
const createInfiniteQuery = useInfiniteQuery;
|
|
428
|
+
const createMutation = useMutation;
|
|
429
|
+
const createQueries = useQueries;
|
|
430
|
+
//#endregion
|
|
431
|
+
exports.IsRestoringProvider = IsRestoringProvider;
|
|
432
|
+
exports.QueryClient = QueryClient;
|
|
433
|
+
exports.QueryClientContext = QueryClientContext;
|
|
434
|
+
exports.QueryClientProvider = QueryClientProvider;
|
|
435
|
+
exports.createInfiniteQuery = createInfiniteQuery;
|
|
531
436
|
exports.createIsFetching = useIsFetching;
|
|
532
437
|
exports.createIsMutating = useIsMutating;
|
|
438
|
+
exports.createMutation = createMutation;
|
|
533
439
|
exports.createMutationState = useMutationState;
|
|
440
|
+
exports.createQueries = createQueries;
|
|
441
|
+
exports.createQuery = createQuery;
|
|
534
442
|
exports.infiniteQueryOptions = infiniteQueryOptions;
|
|
535
443
|
exports.mutationOptions = mutationOptions;
|
|
536
444
|
exports.queryOptions = queryOptions;
|
|
537
445
|
exports.useInfiniteQuery = useInfiniteQuery;
|
|
538
446
|
exports.useIsFetching = useIsFetching;
|
|
539
447
|
exports.useIsMutating = useIsMutating;
|
|
448
|
+
exports.useIsRestoring = useIsRestoring;
|
|
540
449
|
exports.useMutation = useMutation;
|
|
541
450
|
exports.useMutationState = useMutationState;
|
|
542
451
|
exports.useQueries = useQueries;
|
|
543
452
|
exports.useQuery = useQuery;
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
453
|
+
exports.useQueryClient = useQueryClient;
|
|
454
|
+
Object.keys(_tanstack_query_core).forEach(function(k) {
|
|
455
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
456
|
+
enumerable: true,
|
|
457
|
+
get: function() {
|
|
458
|
+
return _tanstack_query_core[k];
|
|
459
|
+
}
|
|
460
|
+
});
|
|
549
461
|
});
|