@tanstack/solid-query 6.0.0-beta.3 → 6.0.0-beta.5
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/_tsup-dts-rollup.d.cts +39 -68
- package/build/_tsup-dts-rollup.d.ts +39 -68
- package/build/dev.cjs +85 -56
- package/build/dev.d.cts +4 -7
- package/build/dev.d.ts +4 -7
- package/build/dev.js +86 -57
- package/build/index.cjs +85 -56
- package/build/index.d.cts +4 -7
- package/build/index.d.ts +4 -7
- package/build/index.js +86 -57
- package/package.json +6 -6
- package/src/QueryClientProvider.tsx +1 -1
- package/src/index.ts +3 -3
- package/src/infiniteQueryOptions.ts +3 -15
- package/src/mutationOptions.ts +7 -7
- package/src/queryOptions.ts +3 -3
- package/src/types.ts +6 -6
- package/src/useBaseQuery.ts +113 -44
- package/src/useIsFetching.ts +1 -1
- package/src/useIsMutating.ts +1 -1
- package/src/useMutation.ts +12 -5
- package/src/useMutationState.ts +1 -1
- package/src/useQueries.ts +23 -18
package/build/dev.cjs
CHANGED
|
@@ -93,10 +93,10 @@ var hydratableObserverResult = (query, result) => {
|
|
|
93
93
|
return obj;
|
|
94
94
|
};
|
|
95
95
|
function useBaseQuery(options, Observer, queryClient) {
|
|
96
|
-
const client = solidJs.
|
|
96
|
+
const [client] = solidJs.createSignal(() => exports.useQueryClient(queryClient?.()));
|
|
97
97
|
const isRestoring = exports.useIsRestoring();
|
|
98
98
|
let unsubscribeQueued = false;
|
|
99
|
-
const defaultedOptions = solidJs.
|
|
99
|
+
const [defaultedOptions] = solidJs.createSignal(() => {
|
|
100
100
|
const defaultOptions = client().defaultQueryOptions(options());
|
|
101
101
|
defaultOptions._optimisticResults = isRestoring() ? "isRestoring" : "optimistic";
|
|
102
102
|
defaultOptions.structuralSharing = false;
|
|
@@ -108,11 +108,11 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
108
108
|
return defaultOptions;
|
|
109
109
|
});
|
|
110
110
|
const observer = solidJs.untrack(() => new Observer(client(), defaultedOptions()));
|
|
111
|
-
const trackedDefaultedOptions = solidJs.
|
|
111
|
+
const [trackedDefaultedOptions] = solidJs.createSignal(() => defaultedOptions());
|
|
112
112
|
solidJs.createRenderEffect(
|
|
113
113
|
() => trackedDefaultedOptions(),
|
|
114
114
|
(opts) => {
|
|
115
|
-
observer.setOptions(opts);
|
|
115
|
+
solidJs.runWithOwner(null, () => observer.setOptions(opts));
|
|
116
116
|
}
|
|
117
117
|
);
|
|
118
118
|
let observerResult = solidJs.untrack(
|
|
@@ -146,8 +146,8 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
146
146
|
return observer.subscribe((result) => {
|
|
147
147
|
const previousResult = observerResult;
|
|
148
148
|
observerResult = result;
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
solidJs.runWithOwner(null, () => {
|
|
150
|
+
setStateWithReconciliation(result);
|
|
151
151
|
if (unsubscribe && !disposed && (previousResult.isLoading !== result.isLoading || previousResult.isError !== result.isError)) {
|
|
152
152
|
try {
|
|
153
153
|
solidJs.refresh(queryResource);
|
|
@@ -173,41 +173,58 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
173
173
|
let unsubscribe = null;
|
|
174
174
|
let disposed = false;
|
|
175
175
|
let resolver = null;
|
|
176
|
-
const queryResource = solidJs.
|
|
177
|
-
()
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
176
|
+
const [queryResource] = solidJs.createSignal(() => {
|
|
177
|
+
const opts = trackedDefaultedOptions();
|
|
178
|
+
const restoring = isRestoring();
|
|
179
|
+
if (isServer) {
|
|
180
|
+
const cached = observer.getOptimisticResult(opts);
|
|
181
|
+
if (!cached.isLoading) {
|
|
182
|
+
observerResult = cached;
|
|
183
|
+
solidJs.runWithOwner(null, () => {
|
|
184
|
+
setStateWithReconciliation(cached);
|
|
185
|
+
});
|
|
186
|
+
return hydratableObserverResult(
|
|
187
|
+
observer.getCurrentQuery(),
|
|
188
|
+
cached
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return new Promise((resolve, reject) => {
|
|
193
|
+
resolver = resolve;
|
|
194
|
+
if (isServer) {
|
|
195
|
+
unsubscribe = createServerSubscriber((data) => {
|
|
196
|
+
resolve(data);
|
|
197
|
+
}, reject);
|
|
198
|
+
} else if (!unsubscribe && !restoring) {
|
|
199
|
+
unsubscribe = createClientSubscriber();
|
|
200
|
+
}
|
|
201
|
+
const currentResult = observer.getOptimisticResult(opts);
|
|
202
|
+
observerResult = currentResult;
|
|
203
|
+
solidJs.runWithOwner(null, () => {
|
|
191
204
|
if (currentResult.isError && !currentResult.isFetching && !restoring && queryCore.shouldThrowError(opts.throwOnError, [
|
|
192
205
|
currentResult.error,
|
|
193
206
|
observer.getCurrentQuery()
|
|
194
207
|
])) {
|
|
195
208
|
setStateWithReconciliation(currentResult);
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
if (!currentResult.isLoading) {
|
|
199
|
-
resolver = null;
|
|
200
|
-
setStateWithReconciliation(currentResult);
|
|
201
|
-
return resolve(
|
|
202
|
-
hydratableObserverResult(observer.getCurrentQuery(), currentResult)
|
|
203
|
-
);
|
|
209
|
+
reject(currentResult.error);
|
|
210
|
+
return;
|
|
204
211
|
}
|
|
205
|
-
|
|
212
|
+
setStateWithReconciliation(currentResult);
|
|
206
213
|
});
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
214
|
+
if (currentResult.isError && !currentResult.isFetching && !restoring && queryCore.shouldThrowError(opts.throwOnError, [
|
|
215
|
+
currentResult.error,
|
|
216
|
+
observer.getCurrentQuery()
|
|
217
|
+
])) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
if (!currentResult.isLoading) {
|
|
221
|
+
resolver = null;
|
|
222
|
+
return resolve(
|
|
223
|
+
hydratableObserverResult(observer.getCurrentQuery(), currentResult)
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
});
|
|
211
228
|
solidJs.onCleanup(() => {
|
|
212
229
|
disposed = true;
|
|
213
230
|
if (isServer && solidJs.isPending(queryResource)) {
|
|
@@ -236,6 +253,12 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
236
253
|
if (typeof prop === "symbol") {
|
|
237
254
|
return Reflect.get(target, prop, receiver);
|
|
238
255
|
}
|
|
256
|
+
if (isServer) {
|
|
257
|
+
const resolved = queryResource();
|
|
258
|
+
if (prop in resolved) {
|
|
259
|
+
return Reflect.get(resolved, prop);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
239
262
|
if (errorPassthroughProps.has(prop)) {
|
|
240
263
|
return Reflect.get(target, prop, receiver);
|
|
241
264
|
}
|
|
@@ -289,11 +312,13 @@ function useMutation(options, queryClient) {
|
|
|
289
312
|
mutateAsync: initialResult.mutate
|
|
290
313
|
});
|
|
291
314
|
const unsubscribe = observer.subscribe((result) => {
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
315
|
+
solidJs.runWithOwner(null, () => {
|
|
316
|
+
setState(() => ({
|
|
317
|
+
...result,
|
|
318
|
+
mutate,
|
|
319
|
+
mutateAsync: result.mutate
|
|
320
|
+
}));
|
|
321
|
+
});
|
|
297
322
|
});
|
|
298
323
|
solidJs.onCleanup(unsubscribe);
|
|
299
324
|
solidJs.createRenderEffect(
|
|
@@ -345,14 +370,16 @@ function useQueries(queriesOptions, queryClient) {
|
|
|
345
370
|
() => {
|
|
346
371
|
if (!isRestoring()) {
|
|
347
372
|
unsubscribe = observer.subscribe((result) => {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
373
|
+
solidJs.runWithOwner(null, () => {
|
|
374
|
+
setState(
|
|
375
|
+
solidJs.reconcile(
|
|
376
|
+
[...result],
|
|
377
|
+
// Use a key function that returns undefined so reconcile
|
|
378
|
+
// uses positional matching and recursively updates nested properties
|
|
379
|
+
() => void 0
|
|
380
|
+
)
|
|
381
|
+
);
|
|
382
|
+
});
|
|
356
383
|
});
|
|
357
384
|
}
|
|
358
385
|
},
|
|
@@ -364,12 +391,14 @@ function useQueries(queriesOptions, queryClient) {
|
|
|
364
391
|
});
|
|
365
392
|
solidJs.createMemo(() => {
|
|
366
393
|
const queries = defaultedQueries();
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
394
|
+
solidJs.runWithOwner(null, () => {
|
|
395
|
+
observer.setQueries(
|
|
396
|
+
queries,
|
|
397
|
+
queriesOptions().combine ? {
|
|
398
|
+
combine: queriesOptions().combine
|
|
399
|
+
} : void 0
|
|
400
|
+
);
|
|
401
|
+
});
|
|
373
402
|
return queries;
|
|
374
403
|
});
|
|
375
404
|
return state;
|
|
@@ -389,7 +418,7 @@ function useIsFetching(filters, queryClient) {
|
|
|
389
418
|
const queryCache = solidJs.createMemo(() => client().getQueryCache());
|
|
390
419
|
const [fetches, setFetches] = solidJs.createSignal(
|
|
391
420
|
solidJs.untrack(() => client().isFetching(filters?.())),
|
|
392
|
-
{
|
|
421
|
+
{ ownedWrite: true }
|
|
393
422
|
);
|
|
394
423
|
const unsubscribe = solidJs.untrack(
|
|
395
424
|
() => queryCache().subscribe(() => {
|
|
@@ -414,7 +443,7 @@ function useIsMutating(filters, queryClient) {
|
|
|
414
443
|
const mutationCache = solidJs.createMemo(() => client().getMutationCache());
|
|
415
444
|
const [mutations, setMutations] = solidJs.createSignal(
|
|
416
445
|
solidJs.untrack(() => client().isMutating(filters?.())),
|
|
417
|
-
{
|
|
446
|
+
{ ownedWrite: true }
|
|
418
447
|
);
|
|
419
448
|
const unsubscribe = solidJs.untrack(
|
|
420
449
|
() => mutationCache().subscribe((_result) => {
|
|
@@ -434,7 +463,7 @@ function useMutationState(options = () => ({}), queryClient) {
|
|
|
434
463
|
const mutationCache = solidJs.createMemo(() => client().getMutationCache());
|
|
435
464
|
const [result, setResult] = solidJs.createSignal(
|
|
436
465
|
solidJs.untrack(() => getResult(mutationCache(), options())),
|
|
437
|
-
{
|
|
466
|
+
{ ownedWrite: true }
|
|
438
467
|
);
|
|
439
468
|
const unsubscribe = solidJs.untrack(
|
|
440
469
|
() => mutationCache().subscribe(() => {
|
package/build/dev.d.cts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { DefinedUseBaseQueryResult } from './_tsup-dts-rollup.cjs';
|
|
2
2
|
export { DefinedUseInfiniteQueryResult } from './_tsup-dts-rollup.cjs';
|
|
3
3
|
export { DefinedUseQueryResult } from './_tsup-dts-rollup.cjs';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
4
|
+
export { InfiniteQueryOptions } from './_tsup-dts-rollup.cjs';
|
|
5
|
+
export { MutationOptions } from './_tsup-dts-rollup.cjs';
|
|
6
|
+
export { QueryOptions } from './_tsup-dts-rollup.cjs';
|
|
7
7
|
export { UseBaseMutationResult } from './_tsup-dts-rollup.cjs';
|
|
8
8
|
export { UseBaseQueryOptions } from './_tsup-dts-rollup.cjs';
|
|
9
9
|
export { UseBaseQueryResult } from './_tsup-dts-rollup.cjs';
|
|
@@ -111,7 +111,6 @@ export { NonUndefinedGuard } from './_tsup-dts-rollup.cjs';
|
|
|
111
111
|
export { DistributiveOmit } from './_tsup-dts-rollup.cjs';
|
|
112
112
|
export { OmitKeyof } from './_tsup-dts-rollup.cjs';
|
|
113
113
|
export { Override } from './_tsup-dts-rollup.cjs';
|
|
114
|
-
export { NoInfer } from './_tsup-dts-rollup.cjs';
|
|
115
114
|
export { Register } from './_tsup-dts-rollup.cjs';
|
|
116
115
|
export { DefaultError } from './_tsup-dts-rollup.cjs';
|
|
117
116
|
export { QueryKey } from './_tsup-dts-rollup.cjs';
|
|
@@ -126,7 +125,7 @@ export { InferErrorFromTag } from './_tsup-dts-rollup.cjs';
|
|
|
126
125
|
export { QueryFunction } from './_tsup-dts-rollup.cjs';
|
|
127
126
|
export { StaleTime } from './_tsup-dts-rollup.cjs';
|
|
128
127
|
export { StaleTimeFunction } from './_tsup-dts-rollup.cjs';
|
|
129
|
-
export {
|
|
128
|
+
export { QueryBooleanOption } from './_tsup-dts-rollup.cjs';
|
|
130
129
|
export { QueryPersister } from './_tsup-dts-rollup.cjs';
|
|
131
130
|
export { QueryFunctionContext } from './_tsup-dts-rollup.cjs';
|
|
132
131
|
export { InitialDataFunction } from './_tsup-dts-rollup.cjs';
|
|
@@ -139,7 +138,6 @@ export { InfiniteData } from './_tsup-dts-rollup.cjs';
|
|
|
139
138
|
export { QueryMeta } from './_tsup-dts-rollup.cjs';
|
|
140
139
|
export { NetworkMode } from './_tsup-dts-rollup.cjs';
|
|
141
140
|
export { NotifyOnChangeProps } from './_tsup-dts-rollup.cjs';
|
|
142
|
-
export { QueryOptions } from './_tsup-dts-rollup.cjs';
|
|
143
141
|
export { InitialPageParam } from './_tsup-dts-rollup.cjs';
|
|
144
142
|
export { InfiniteQueryPageParamsOptions } from './_tsup-dts-rollup.cjs';
|
|
145
143
|
export { ThrowOnError } from './_tsup-dts-rollup.cjs';
|
|
@@ -184,7 +182,6 @@ export { MutationScope } from './_tsup-dts-rollup.cjs';
|
|
|
184
182
|
export { MutationMeta } from './_tsup-dts-rollup.cjs';
|
|
185
183
|
export { MutationFunctionContext } from './_tsup-dts-rollup.cjs';
|
|
186
184
|
export { MutationFunction } from './_tsup-dts-rollup.cjs';
|
|
187
|
-
export { MutationOptions } from './_tsup-dts-rollup.cjs';
|
|
188
185
|
export { MutationObserverOptions } from './_tsup-dts-rollup.cjs';
|
|
189
186
|
export { MutateOptions } from './_tsup-dts-rollup.cjs';
|
|
190
187
|
export { MutateFunction } from './_tsup-dts-rollup.cjs';
|
package/build/dev.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { DefinedUseBaseQueryResult } from './_tsup-dts-rollup.js';
|
|
2
2
|
export { DefinedUseInfiniteQueryResult } from './_tsup-dts-rollup.js';
|
|
3
3
|
export { DefinedUseQueryResult } from './_tsup-dts-rollup.js';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
4
|
+
export { InfiniteQueryOptions } from './_tsup-dts-rollup.js';
|
|
5
|
+
export { MutationOptions } from './_tsup-dts-rollup.js';
|
|
6
|
+
export { QueryOptions } from './_tsup-dts-rollup.js';
|
|
7
7
|
export { UseBaseMutationResult } from './_tsup-dts-rollup.js';
|
|
8
8
|
export { UseBaseQueryOptions } from './_tsup-dts-rollup.js';
|
|
9
9
|
export { UseBaseQueryResult } from './_tsup-dts-rollup.js';
|
|
@@ -111,7 +111,6 @@ export { NonUndefinedGuard } from './_tsup-dts-rollup.js';
|
|
|
111
111
|
export { DistributiveOmit } from './_tsup-dts-rollup.js';
|
|
112
112
|
export { OmitKeyof } from './_tsup-dts-rollup.js';
|
|
113
113
|
export { Override } from './_tsup-dts-rollup.js';
|
|
114
|
-
export { NoInfer } from './_tsup-dts-rollup.js';
|
|
115
114
|
export { Register } from './_tsup-dts-rollup.js';
|
|
116
115
|
export { DefaultError } from './_tsup-dts-rollup.js';
|
|
117
116
|
export { QueryKey } from './_tsup-dts-rollup.js';
|
|
@@ -126,7 +125,7 @@ export { InferErrorFromTag } from './_tsup-dts-rollup.js';
|
|
|
126
125
|
export { QueryFunction } from './_tsup-dts-rollup.js';
|
|
127
126
|
export { StaleTime } from './_tsup-dts-rollup.js';
|
|
128
127
|
export { StaleTimeFunction } from './_tsup-dts-rollup.js';
|
|
129
|
-
export {
|
|
128
|
+
export { QueryBooleanOption } from './_tsup-dts-rollup.js';
|
|
130
129
|
export { QueryPersister } from './_tsup-dts-rollup.js';
|
|
131
130
|
export { QueryFunctionContext } from './_tsup-dts-rollup.js';
|
|
132
131
|
export { InitialDataFunction } from './_tsup-dts-rollup.js';
|
|
@@ -139,7 +138,6 @@ export { InfiniteData } from './_tsup-dts-rollup.js';
|
|
|
139
138
|
export { QueryMeta } from './_tsup-dts-rollup.js';
|
|
140
139
|
export { NetworkMode } from './_tsup-dts-rollup.js';
|
|
141
140
|
export { NotifyOnChangeProps } from './_tsup-dts-rollup.js';
|
|
142
|
-
export { QueryOptions } from './_tsup-dts-rollup.js';
|
|
143
141
|
export { InitialPageParam } from './_tsup-dts-rollup.js';
|
|
144
142
|
export { InfiniteQueryPageParamsOptions } from './_tsup-dts-rollup.js';
|
|
145
143
|
export { ThrowOnError } from './_tsup-dts-rollup.js';
|
|
@@ -184,7 +182,6 @@ export { MutationScope } from './_tsup-dts-rollup.js';
|
|
|
184
182
|
export { MutationMeta } from './_tsup-dts-rollup.js';
|
|
185
183
|
export { MutationFunctionContext } from './_tsup-dts-rollup.js';
|
|
186
184
|
export { MutationFunction } from './_tsup-dts-rollup.js';
|
|
187
|
-
export { MutationOptions } from './_tsup-dts-rollup.js';
|
|
188
185
|
export { MutationObserverOptions } from './_tsup-dts-rollup.js';
|
|
189
186
|
export { MutateOptions } from './_tsup-dts-rollup.js';
|
|
190
187
|
export { MutateFunction } from './_tsup-dts-rollup.js';
|
package/build/dev.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MutationObserver, shouldThrowError, QueriesObserver, QueryClient as QueryClient$1, replaceEqualDeep, noop, notifyManager, QueryObserver, InfiniteQueryObserver } from '@tanstack/query-core';
|
|
2
2
|
export * from '@tanstack/query-core';
|
|
3
|
-
import { createContext, useContext, onCleanup, createMemo, untrack, createRenderEffect, createStore, merge, createEffect, reconcile, createSignal, isPending, refresh, snapshot } from 'solid-js';
|
|
3
|
+
import { createContext, useContext, onCleanup, createMemo, untrack, createRenderEffect, createStore, runWithOwner, merge, createEffect, reconcile, createSignal, isPending, refresh, snapshot } from 'solid-js';
|
|
4
4
|
import { createComponent } from '@solidjs/web';
|
|
5
5
|
|
|
6
6
|
// src/useQuery.ts
|
|
@@ -92,10 +92,10 @@ var hydratableObserverResult = (query, result) => {
|
|
|
92
92
|
return obj;
|
|
93
93
|
};
|
|
94
94
|
function useBaseQuery(options, Observer, queryClient) {
|
|
95
|
-
const client =
|
|
95
|
+
const [client] = createSignal(() => useQueryClient(queryClient?.()));
|
|
96
96
|
const isRestoring = useIsRestoring();
|
|
97
97
|
let unsubscribeQueued = false;
|
|
98
|
-
const defaultedOptions =
|
|
98
|
+
const [defaultedOptions] = createSignal(() => {
|
|
99
99
|
const defaultOptions = client().defaultQueryOptions(options());
|
|
100
100
|
defaultOptions._optimisticResults = isRestoring() ? "isRestoring" : "optimistic";
|
|
101
101
|
defaultOptions.structuralSharing = false;
|
|
@@ -107,11 +107,11 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
107
107
|
return defaultOptions;
|
|
108
108
|
});
|
|
109
109
|
const observer = untrack(() => new Observer(client(), defaultedOptions()));
|
|
110
|
-
const trackedDefaultedOptions =
|
|
110
|
+
const [trackedDefaultedOptions] = createSignal(() => defaultedOptions());
|
|
111
111
|
createRenderEffect(
|
|
112
112
|
() => trackedDefaultedOptions(),
|
|
113
113
|
(opts) => {
|
|
114
|
-
observer.setOptions(opts);
|
|
114
|
+
runWithOwner(null, () => observer.setOptions(opts));
|
|
115
115
|
}
|
|
116
116
|
);
|
|
117
117
|
let observerResult = untrack(
|
|
@@ -145,8 +145,8 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
145
145
|
return observer.subscribe((result) => {
|
|
146
146
|
const previousResult = observerResult;
|
|
147
147
|
observerResult = result;
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
runWithOwner(null, () => {
|
|
149
|
+
setStateWithReconciliation(result);
|
|
150
150
|
if (unsubscribe && !disposed && (previousResult.isLoading !== result.isLoading || previousResult.isError !== result.isError)) {
|
|
151
151
|
try {
|
|
152
152
|
refresh(queryResource);
|
|
@@ -172,41 +172,58 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
172
172
|
let unsubscribe = null;
|
|
173
173
|
let disposed = false;
|
|
174
174
|
let resolver = null;
|
|
175
|
-
const queryResource =
|
|
176
|
-
()
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
175
|
+
const [queryResource] = createSignal(() => {
|
|
176
|
+
const opts = trackedDefaultedOptions();
|
|
177
|
+
const restoring = isRestoring();
|
|
178
|
+
if (isServer) {
|
|
179
|
+
const cached = observer.getOptimisticResult(opts);
|
|
180
|
+
if (!cached.isLoading) {
|
|
181
|
+
observerResult = cached;
|
|
182
|
+
runWithOwner(null, () => {
|
|
183
|
+
setStateWithReconciliation(cached);
|
|
184
|
+
});
|
|
185
|
+
return hydratableObserverResult(
|
|
186
|
+
observer.getCurrentQuery(),
|
|
187
|
+
cached
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return new Promise((resolve, reject) => {
|
|
192
|
+
resolver = resolve;
|
|
193
|
+
if (isServer) {
|
|
194
|
+
unsubscribe = createServerSubscriber((data) => {
|
|
195
|
+
resolve(data);
|
|
196
|
+
}, reject);
|
|
197
|
+
} else if (!unsubscribe && !restoring) {
|
|
198
|
+
unsubscribe = createClientSubscriber();
|
|
199
|
+
}
|
|
200
|
+
const currentResult = observer.getOptimisticResult(opts);
|
|
201
|
+
observerResult = currentResult;
|
|
202
|
+
runWithOwner(null, () => {
|
|
190
203
|
if (currentResult.isError && !currentResult.isFetching && !restoring && shouldThrowError(opts.throwOnError, [
|
|
191
204
|
currentResult.error,
|
|
192
205
|
observer.getCurrentQuery()
|
|
193
206
|
])) {
|
|
194
207
|
setStateWithReconciliation(currentResult);
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
if (!currentResult.isLoading) {
|
|
198
|
-
resolver = null;
|
|
199
|
-
setStateWithReconciliation(currentResult);
|
|
200
|
-
return resolve(
|
|
201
|
-
hydratableObserverResult(observer.getCurrentQuery(), currentResult)
|
|
202
|
-
);
|
|
208
|
+
reject(currentResult.error);
|
|
209
|
+
return;
|
|
203
210
|
}
|
|
204
|
-
|
|
211
|
+
setStateWithReconciliation(currentResult);
|
|
205
212
|
});
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
213
|
+
if (currentResult.isError && !currentResult.isFetching && !restoring && shouldThrowError(opts.throwOnError, [
|
|
214
|
+
currentResult.error,
|
|
215
|
+
observer.getCurrentQuery()
|
|
216
|
+
])) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (!currentResult.isLoading) {
|
|
220
|
+
resolver = null;
|
|
221
|
+
return resolve(
|
|
222
|
+
hydratableObserverResult(observer.getCurrentQuery(), currentResult)
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
});
|
|
210
227
|
onCleanup(() => {
|
|
211
228
|
disposed = true;
|
|
212
229
|
if (isServer && isPending(queryResource)) {
|
|
@@ -235,6 +252,12 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
235
252
|
if (typeof prop === "symbol") {
|
|
236
253
|
return Reflect.get(target, prop, receiver);
|
|
237
254
|
}
|
|
255
|
+
if (isServer) {
|
|
256
|
+
const resolved = queryResource();
|
|
257
|
+
if (prop in resolved) {
|
|
258
|
+
return Reflect.get(resolved, prop);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
238
261
|
if (errorPassthroughProps.has(prop)) {
|
|
239
262
|
return Reflect.get(target, prop, receiver);
|
|
240
263
|
}
|
|
@@ -288,11 +311,13 @@ function useMutation(options, queryClient) {
|
|
|
288
311
|
mutateAsync: initialResult.mutate
|
|
289
312
|
});
|
|
290
313
|
const unsubscribe = observer.subscribe((result) => {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
314
|
+
runWithOwner(null, () => {
|
|
315
|
+
setState(() => ({
|
|
316
|
+
...result,
|
|
317
|
+
mutate,
|
|
318
|
+
mutateAsync: result.mutate
|
|
319
|
+
}));
|
|
320
|
+
});
|
|
296
321
|
});
|
|
297
322
|
onCleanup(unsubscribe);
|
|
298
323
|
createRenderEffect(
|
|
@@ -344,14 +369,16 @@ function useQueries(queriesOptions, queryClient) {
|
|
|
344
369
|
() => {
|
|
345
370
|
if (!isRestoring()) {
|
|
346
371
|
unsubscribe = observer.subscribe((result) => {
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
372
|
+
runWithOwner(null, () => {
|
|
373
|
+
setState(
|
|
374
|
+
reconcile(
|
|
375
|
+
[...result],
|
|
376
|
+
// Use a key function that returns undefined so reconcile
|
|
377
|
+
// uses positional matching and recursively updates nested properties
|
|
378
|
+
() => void 0
|
|
379
|
+
)
|
|
380
|
+
);
|
|
381
|
+
});
|
|
355
382
|
});
|
|
356
383
|
}
|
|
357
384
|
},
|
|
@@ -363,12 +390,14 @@ function useQueries(queriesOptions, queryClient) {
|
|
|
363
390
|
});
|
|
364
391
|
createMemo(() => {
|
|
365
392
|
const queries = defaultedQueries();
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
393
|
+
runWithOwner(null, () => {
|
|
394
|
+
observer.setQueries(
|
|
395
|
+
queries,
|
|
396
|
+
queriesOptions().combine ? {
|
|
397
|
+
combine: queriesOptions().combine
|
|
398
|
+
} : void 0
|
|
399
|
+
);
|
|
400
|
+
});
|
|
372
401
|
return queries;
|
|
373
402
|
});
|
|
374
403
|
return state;
|
|
@@ -388,7 +417,7 @@ function useIsFetching(filters, queryClient) {
|
|
|
388
417
|
const queryCache = createMemo(() => client().getQueryCache());
|
|
389
418
|
const [fetches, setFetches] = createSignal(
|
|
390
419
|
untrack(() => client().isFetching(filters?.())),
|
|
391
|
-
{
|
|
420
|
+
{ ownedWrite: true }
|
|
392
421
|
);
|
|
393
422
|
const unsubscribe = untrack(
|
|
394
423
|
() => queryCache().subscribe(() => {
|
|
@@ -413,7 +442,7 @@ function useIsMutating(filters, queryClient) {
|
|
|
413
442
|
const mutationCache = createMemo(() => client().getMutationCache());
|
|
414
443
|
const [mutations, setMutations] = createSignal(
|
|
415
444
|
untrack(() => client().isMutating(filters?.())),
|
|
416
|
-
{
|
|
445
|
+
{ ownedWrite: true }
|
|
417
446
|
);
|
|
418
447
|
const unsubscribe = untrack(
|
|
419
448
|
() => mutationCache().subscribe((_result) => {
|
|
@@ -433,7 +462,7 @@ function useMutationState(options = () => ({}), queryClient) {
|
|
|
433
462
|
const mutationCache = createMemo(() => client().getMutationCache());
|
|
434
463
|
const [result, setResult] = createSignal(
|
|
435
464
|
untrack(() => getResult(mutationCache(), options())),
|
|
436
|
-
{
|
|
465
|
+
{ ownedWrite: true }
|
|
437
466
|
);
|
|
438
467
|
const unsubscribe = untrack(
|
|
439
468
|
() => mutationCache().subscribe(() => {
|