@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/build/dev.cjs CHANGED
@@ -1,549 +1,461 @@
1
- 'use strict';
2
-
3
- var queryCore = require('@tanstack/query-core');
4
- var solidJs = require('solid-js');
5
- var web = require('solid-js/web');
6
- var store = require('solid-js/store');
7
-
8
- // src/useQuery.ts
9
- exports.QueryClientContext = solidJs.createContext(void 0);
10
- exports.useQueryClient = (queryClient) => {
11
- if (queryClient) {
12
- return queryClient;
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
- exports.QueryClientProvider = (props) => {
21
- solidJs.createRenderEffect((unmount) => {
22
- unmount?.();
23
- props.client.mount();
24
- return props.client.unmount.bind(props.client);
25
- });
26
- solidJs.onCleanup(() => props.client.unmount());
27
- return web.createComponent(exports.QueryClientContext.Provider, {
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
- var IsRestoringContext = solidJs.createContext(() => false);
35
- exports.useIsRestoring = () => solidJs.useContext(IsRestoringContext);
36
- exports.IsRestoringProvider = IsRestoringContext.Provider;
37
-
38
- // src/useBaseQuery.ts
39
- function reconcileFn(store$1, result, reconcileOption, queryHash) {
40
- if (reconcileOption === false) return result;
41
- if (typeof reconcileOption === "function") {
42
- const newData2 = reconcileOption(store$1.data, result.data);
43
- return { ...result, data: newData2 };
44
- }
45
- let data = result.data;
46
- if (store$1.data === void 0) {
47
- try {
48
- data = structuredClone(data);
49
- } catch (error) {
50
- {
51
- if (error instanceof Error) {
52
- console.warn(
53
- `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.
54
-
55
- Error Received: ${error.name} - ${error.message}`
56
- );
57
- }
58
- }
59
- }
60
- }
61
- const newData = store.reconcile(data, { key: reconcileOption })(store$1.data);
62
- return { ...result, data: newData };
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
- var hydratableObserverResult = (query, result) => {
65
- if (!web.isServer) return result;
66
- const obj = {
67
- ...store.unwrap(result),
68
- // During SSR, functions cannot be serialized, so we need to remove them
69
- // This is safe because we will add these functions back when the query is hydrated
70
- refetch: void 0
71
- };
72
- if ("fetchNextPage" in result) {
73
- obj.fetchNextPage = void 0;
74
- obj.fetchPreviousPage = void 0;
75
- }
76
- obj.hydrationData = {
77
- state: query.state,
78
- queryKey: query.queryKey,
79
- queryHash: query.queryHash,
80
- ...query.meta && { meta: query.meta }
81
- };
82
- return obj;
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
- const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
86
- const isRestoring = exports.useIsRestoring();
87
- let unsubscribeQueued = false;
88
- const defaultedOptions = solidJs.createMemo(() => {
89
- const defaultOptions = client().defaultQueryOptions(options());
90
- defaultOptions._optimisticResults = isRestoring() ? "isRestoring" : "optimistic";
91
- defaultOptions.structuralSharing = false;
92
- if (web.isServer) {
93
- defaultOptions.retry = false;
94
- defaultOptions.throwOnError = true;
95
- defaultOptions.experimental_prefetchInRender = true;
96
- }
97
- return defaultOptions;
98
- });
99
- const initialOptions = defaultedOptions();
100
- const [observer, setObserver] = solidJs.createSignal(
101
- new Observer(client(), defaultedOptions())
102
- );
103
- let observerResult = observer().getOptimisticResult(defaultedOptions());
104
- const [state, setState] = store.createStore(observerResult);
105
- const createServerSubscriber = (resolve, reject) => {
106
- return observer().subscribe((result) => {
107
- queryCore.notifyManager.batchCalls(() => {
108
- const query = observer().getCurrentQuery();
109
- const unwrappedResult = hydratableObserverResult(query, result);
110
- if (result.data !== void 0 && unwrappedResult.isError) {
111
- reject(unwrappedResult.error);
112
- unsubscribeIfQueued();
113
- } else {
114
- resolve(unwrappedResult);
115
- unsubscribeIfQueued();
116
- }
117
- })();
118
- });
119
- };
120
- const unsubscribeIfQueued = () => {
121
- if (unsubscribeQueued) {
122
- unsubscribe?.();
123
- unsubscribeQueued = false;
124
- }
125
- };
126
- const createClientSubscriber = () => {
127
- const obs = observer();
128
- return obs.subscribe((result) => {
129
- observerResult = result;
130
- queueMicrotask(() => {
131
- if (unsubscribe) {
132
- refetch();
133
- }
134
- });
135
- });
136
- };
137
- function setStateWithReconciliation(res) {
138
- const opts = observer().options;
139
- const reconcileOptions = opts.reconcile;
140
- setState((store) => {
141
- return reconcileFn(
142
- store,
143
- res,
144
- reconcileOptions === void 0 ? false : reconcileOptions,
145
- opts.queryHash
146
- );
147
- });
148
- }
149
- function createDeepSignal() {
150
- return [
151
- () => state,
152
- (v) => {
153
- const unwrapped = store.unwrap(state);
154
- if (typeof v === "function") {
155
- v = v(unwrapped);
156
- }
157
- if (v?.hydrationData) {
158
- const { hydrationData, ...rest } = v;
159
- v = rest;
160
- }
161
- setStateWithReconciliation(v);
162
- }
163
- ];
164
- }
165
- let unsubscribe = null;
166
- let resolver = null;
167
- const [queryResource, { refetch }] = solidJs.createResource(
168
- () => {
169
- const obs = observer();
170
- return new Promise((resolve, reject) => {
171
- resolver = resolve;
172
- if (web.isServer) {
173
- unsubscribe = createServerSubscriber(resolve, reject);
174
- } else if (!unsubscribe && !isRestoring()) {
175
- unsubscribe = createClientSubscriber();
176
- }
177
- obs.updateResult();
178
- if (observerResult.isError && !observerResult.isFetching && !isRestoring() && queryCore.shouldThrowError(obs.options.throwOnError, [
179
- observerResult.error,
180
- obs.getCurrentQuery()
181
- ])) {
182
- setStateWithReconciliation(observerResult);
183
- return reject(observerResult.error);
184
- }
185
- if (!observerResult.isLoading) {
186
- resolver = null;
187
- return resolve(
188
- hydratableObserverResult(obs.getCurrentQuery(), observerResult)
189
- );
190
- }
191
- setStateWithReconciliation(observerResult);
192
- });
193
- },
194
- {
195
- storage: createDeepSignal,
196
- get deferStream() {
197
- return options().deferStream;
198
- },
199
- /**
200
- * If this resource was populated on the server (either sync render, or streamed in over time), onHydrated
201
- * will be called. This is the point at which we can hydrate the query cache state, and setup the query subscriber.
202
- *
203
- * Leveraging onHydrated allows us to plug into the async and streaming support that solidjs resources already support.
204
- *
205
- * Note that this is only invoked on the client, for queries that were originally run on the server.
206
- */
207
- onHydrated(_k, info) {
208
- if (info.value && "hydrationData" in info.value) {
209
- queryCore.hydrate(client(), {
210
- // @ts-expect-error - hydrationData is not correctly typed internally
211
- queries: [{ ...info.value.hydrationData }]
212
- });
213
- }
214
- if (unsubscribe) return;
215
- const newOptions = { ...initialOptions };
216
- if ((initialOptions.staleTime || !initialOptions.initialData) && info.value) {
217
- newOptions.refetchOnMount = false;
218
- }
219
- observer().setOptions(newOptions);
220
- setStateWithReconciliation(observer().getOptimisticResult(newOptions));
221
- unsubscribe = createClientSubscriber();
222
- }
223
- }
224
- );
225
- solidJs.createComputed(
226
- solidJs.on(
227
- client,
228
- (c) => {
229
- if (unsubscribe) {
230
- unsubscribe();
231
- }
232
- const newObserver = new Observer(c, defaultedOptions());
233
- unsubscribe = createClientSubscriber();
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
- // src/useQuery.ts
239
+ //#endregion
240
+ //#region src/useQuery.ts
292
241
  function useQuery(options, queryClient) {
293
- return useBaseQuery(
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
- return useBaseQuery(
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
- const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
308
- const observer = new queryCore.MutationObserver(client(), options());
309
- const mutate = (variables, mutateOptions) => {
310
- observer.mutate(variables, mutateOptions).catch(queryCore.noop);
311
- };
312
- const [state, setState] = store.createStore({
313
- ...observer.getCurrentResult(),
314
- mutate,
315
- mutateAsync: observer.getCurrentResult().mutate
316
- });
317
- solidJs.createComputed(() => {
318
- observer.setOptions(options());
319
- });
320
- solidJs.createComputed(
321
- solidJs.on(
322
- () => state.status,
323
- () => {
324
- if (state.isError && queryCore.shouldThrowError(observer.options.throwOnError, [state.error])) {
325
- throw state.error;
326
- }
327
- }
328
- )
329
- );
330
- const unsubscribe = observer.subscribe((result) => {
331
- setState({
332
- ...result,
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
- const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
342
- const isRestoring = exports.useIsRestoring();
343
- const defaultedQueries = solidJs.createMemo(
344
- () => queriesOptions().queries.map(
345
- (options) => solidJs.mergeProps(
346
- client().defaultQueryOptions(options),
347
- {
348
- get _optimisticResults() {
349
- return isRestoring() ? "isRestoring" : "optimistic";
350
- }
351
- }
352
- )
353
- )
354
- );
355
- const observer = new queryCore.QueriesObserver(
356
- client(),
357
- defaultedQueries(),
358
- queriesOptions().combine ? {
359
- combine: queriesOptions().combine
360
- } : void 0
361
- );
362
- const [state, setState] = store.createStore(
363
- observer.getOptimisticResult(
364
- defaultedQueries(),
365
- queriesOptions().combine
366
- )[1]()
367
- );
368
- solidJs.createRenderEffect(
369
- solidJs.on(
370
- () => queriesOptions().queries.length,
371
- () => setState(
372
- observer.getOptimisticResult(
373
- defaultedQueries(),
374
- queriesOptions().combine
375
- )[1]()
376
- )
377
- )
378
- );
379
- const dataResources = solidJs.createMemo(
380
- solidJs.on(
381
- () => state.length,
382
- () => state.map((queryRes) => {
383
- const dataPromise = () => new Promise((resolve) => {
384
- if (queryRes.isFetching && queryRes.isLoading) return;
385
- resolve(store.unwrap(queryRes.data));
386
- });
387
- return solidJs.createResource(dataPromise);
388
- })
389
- )
390
- );
391
- solidJs.batch(() => {
392
- const dataResources_ = dataResources();
393
- for (let index = 0; index < dataResources_.length; index++) {
394
- const dataResource = dataResources_[index];
395
- dataResource[1].mutate(() => store.unwrap(state[index].data));
396
- dataResource[1].refetch();
397
- }
398
- });
399
- let taskQueue = [];
400
- const subscribeToObserver = () => observer.subscribe((result) => {
401
- taskQueue.push(() => {
402
- solidJs.batch(() => {
403
- const dataResources_ = dataResources();
404
- for (let index = 0; index < dataResources_.length; index++) {
405
- const dataResource = dataResources_[index];
406
- const unwrappedResult = { ...store.unwrap(result[index]) };
407
- setState(index, store.unwrap(unwrappedResult));
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
- exports.QueryClient = class QueryClient extends queryCore.QueryClient {
458
- constructor(config = {}) {
459
- super(config);
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
- // src/queryOptions.ts
357
+ //#endregion
358
+ //#region src/queryOptions.ts
464
359
  function queryOptions(options) {
465
- return options;
360
+ return options;
466
361
  }
362
+ //#endregion
363
+ //#region src/useIsFetching.ts
467
364
  function useIsFetching(filters, queryClient) {
468
- const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
469
- const queryCache = solidJs.createMemo(() => client().getQueryCache());
470
- const [fetches, setFetches] = solidJs.createSignal(client().isFetching(filters?.()));
471
- const unsubscribe = queryCache().subscribe(() => {
472
- setFetches(client().isFetching(filters?.()));
473
- });
474
- solidJs.onCleanup(unsubscribe);
475
- return fetches;
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
- // src/infiniteQueryOptions.ts
378
+ //#endregion
379
+ //#region src/infiniteQueryOptions.ts
479
380
  function infiniteQueryOptions(options) {
480
- return options;
381
+ return options;
481
382
  }
482
-
483
- // src/mutationOptions.ts
383
+ //#endregion
384
+ //#region src/mutationOptions.ts
484
385
  function mutationOptions(options) {
485
- return options;
386
+ return options;
486
387
  }
388
+ //#endregion
389
+ //#region src/useIsMutating.ts
487
390
  function useIsMutating(filters, queryClient) {
488
- const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
489
- const mutationCache = solidJs.createMemo(() => client().getMutationCache());
490
- const [mutations, setMutations] = solidJs.createSignal(
491
- client().isMutating(filters?.())
492
- );
493
- const unsubscribe = mutationCache().subscribe((_result) => {
494
- setMutations(client().isMutating(filters?.()));
495
- });
496
- solidJs.onCleanup(unsubscribe);
497
- return mutations;
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
- return mutationCache.findAll(options.filters).map(
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
- const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
506
- const mutationCache = solidJs.createMemo(() => client().getMutationCache());
507
- const [result, setResult] = solidJs.createSignal(
508
- getResult(mutationCache(), options())
509
- );
510
- solidJs.createEffect(() => {
511
- const unsubscribe = mutationCache().subscribe(() => {
512
- const nextResult = queryCore.replaceEqualDeep(
513
- result(),
514
- getResult(mutationCache(), options())
515
- );
516
- if (result() !== nextResult) {
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
- // src/index.ts
526
- exports.createQuery = useQuery;
527
- exports.createInfiniteQuery = useInfiniteQuery;
528
- exports.createMutation = useMutation;
529
- exports.createQueries = useQueries;
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
- Object.keys(queryCore).forEach(function (k) {
545
- if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
546
- enumerable: true,
547
- get: function () { return queryCore[k]; }
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
  });