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