@tanstack/solid-query 6.0.0-alpha.1 → 6.0.0-alpha.2
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 +61 -35
- package/build/dev.js +62 -36
- package/build/index.cjs +61 -35
- package/build/index.js +62 -36
- package/package.json +1 -1
- package/src/useBaseQuery.ts +6 -2
- package/src/useIsFetching.ts +10 -5
- package/src/useIsMutating.ts +8 -5
- package/src/useMutation.ts +17 -11
- package/src/useMutationState.ts +14 -11
- package/src/useQueries.ts +17 -11
package/build/dev.cjs
CHANGED
|
@@ -107,7 +107,7 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
107
107
|
}
|
|
108
108
|
return defaultOptions;
|
|
109
109
|
});
|
|
110
|
-
const observer = new Observer(client(), defaultedOptions());
|
|
110
|
+
const observer = solidJs.untrack(() => new Observer(client(), defaultedOptions()));
|
|
111
111
|
const trackedDefaultedOptions = solidJs.createMemo(() => defaultedOptions());
|
|
112
112
|
solidJs.createRenderEffect(
|
|
113
113
|
() => trackedDefaultedOptions(),
|
|
@@ -115,7 +115,9 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
115
115
|
observer.setOptions(opts);
|
|
116
116
|
}
|
|
117
117
|
);
|
|
118
|
-
let observerResult =
|
|
118
|
+
let observerResult = solidJs.untrack(
|
|
119
|
+
() => observer.getOptimisticResult(defaultedOptions())
|
|
120
|
+
);
|
|
119
121
|
const [state, setState] = solidJs.createStore(
|
|
120
122
|
_stripFnsForSSR(observerResult)
|
|
121
123
|
);
|
|
@@ -265,17 +267,26 @@ function useInfiniteQuery(options, queryClient) {
|
|
|
265
267
|
}
|
|
266
268
|
function useMutation(options, queryClient) {
|
|
267
269
|
const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
|
|
268
|
-
const observer =
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
270
|
+
const observer = solidJs.untrack(
|
|
271
|
+
() => new queryCore.MutationObserver(
|
|
272
|
+
client(),
|
|
273
|
+
options()
|
|
274
|
+
)
|
|
275
|
+
);
|
|
276
|
+
solidJs.createRenderEffect(
|
|
277
|
+
() => options(),
|
|
278
|
+
(opts) => {
|
|
279
|
+
observer.setOptions(opts);
|
|
280
|
+
}
|
|
281
|
+
);
|
|
272
282
|
const mutate = (variables, mutateOptions) => {
|
|
273
283
|
observer.mutate(variables, mutateOptions).catch(queryCore.noop);
|
|
274
284
|
};
|
|
285
|
+
const initialResult = solidJs.untrack(() => observer.getCurrentResult());
|
|
275
286
|
const [state, setState] = solidJs.createStore({
|
|
276
|
-
...
|
|
287
|
+
...initialResult,
|
|
277
288
|
mutate,
|
|
278
|
-
mutateAsync:
|
|
289
|
+
mutateAsync: initialResult.mutate
|
|
279
290
|
});
|
|
280
291
|
const unsubscribe = observer.subscribe((result) => {
|
|
281
292
|
setState(() => ({
|
|
@@ -310,16 +321,20 @@ function useQueries(queriesOptions, queryClient) {
|
|
|
310
321
|
})
|
|
311
322
|
)
|
|
312
323
|
);
|
|
313
|
-
const observer =
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
324
|
+
const observer = solidJs.untrack(
|
|
325
|
+
() => new queryCore.QueriesObserver(
|
|
326
|
+
client(),
|
|
327
|
+
defaultedQueries(),
|
|
328
|
+
queriesOptions().combine ? {
|
|
329
|
+
combine: queriesOptions().combine
|
|
330
|
+
} : void 0
|
|
331
|
+
)
|
|
319
332
|
);
|
|
320
|
-
const [, getCombinedResult] =
|
|
321
|
-
|
|
322
|
-
|
|
333
|
+
const [, getCombinedResult] = solidJs.untrack(
|
|
334
|
+
() => observer.getOptimisticResult(
|
|
335
|
+
defaultedQueries(),
|
|
336
|
+
queriesOptions().combine
|
|
337
|
+
)
|
|
323
338
|
);
|
|
324
339
|
const initialResult = getCombinedResult();
|
|
325
340
|
const [state, setState] = solidJs.createStore(
|
|
@@ -372,10 +387,15 @@ function queryOptions(options) {
|
|
|
372
387
|
function useIsFetching(filters, queryClient) {
|
|
373
388
|
const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
|
|
374
389
|
const queryCache = solidJs.createMemo(() => client().getQueryCache());
|
|
375
|
-
const [fetches, setFetches] = solidJs.createSignal(
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
390
|
+
const [fetches, setFetches] = solidJs.createSignal(
|
|
391
|
+
solidJs.untrack(() => client().isFetching(filters?.())),
|
|
392
|
+
{ pureWrite: true }
|
|
393
|
+
);
|
|
394
|
+
const unsubscribe = solidJs.untrack(
|
|
395
|
+
() => queryCache().subscribe(() => {
|
|
396
|
+
setFetches(client().isFetching(filters?.()));
|
|
397
|
+
})
|
|
398
|
+
);
|
|
379
399
|
solidJs.onCleanup(unsubscribe);
|
|
380
400
|
return fetches;
|
|
381
401
|
}
|
|
@@ -393,11 +413,14 @@ function useIsMutating(filters, queryClient) {
|
|
|
393
413
|
const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
|
|
394
414
|
const mutationCache = solidJs.createMemo(() => client().getMutationCache());
|
|
395
415
|
const [mutations, setMutations] = solidJs.createSignal(
|
|
396
|
-
client().isMutating(filters?.())
|
|
416
|
+
solidJs.untrack(() => client().isMutating(filters?.())),
|
|
417
|
+
{ pureWrite: true }
|
|
418
|
+
);
|
|
419
|
+
const unsubscribe = solidJs.untrack(
|
|
420
|
+
() => mutationCache().subscribe((_result) => {
|
|
421
|
+
setMutations(client().isMutating(filters?.()));
|
|
422
|
+
})
|
|
397
423
|
);
|
|
398
|
-
const unsubscribe = mutationCache().subscribe((_result) => {
|
|
399
|
-
setMutations(client().isMutating(filters?.()));
|
|
400
|
-
});
|
|
401
424
|
solidJs.onCleanup(unsubscribe);
|
|
402
425
|
return mutations;
|
|
403
426
|
}
|
|
@@ -410,17 +433,20 @@ function useMutationState(options = () => ({}), queryClient) {
|
|
|
410
433
|
const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
|
|
411
434
|
const mutationCache = solidJs.createMemo(() => client().getMutationCache());
|
|
412
435
|
const [result, setResult] = solidJs.createSignal(
|
|
413
|
-
getResult(mutationCache(), options())
|
|
436
|
+
solidJs.untrack(() => getResult(mutationCache(), options())),
|
|
437
|
+
{ pureWrite: true }
|
|
438
|
+
);
|
|
439
|
+
const unsubscribe = solidJs.untrack(
|
|
440
|
+
() => mutationCache().subscribe(() => {
|
|
441
|
+
setResult((prev) => {
|
|
442
|
+
const nextResult = queryCore.replaceEqualDeep(
|
|
443
|
+
prev,
|
|
444
|
+
getResult(mutationCache(), options())
|
|
445
|
+
);
|
|
446
|
+
return prev === nextResult ? prev : nextResult;
|
|
447
|
+
});
|
|
448
|
+
})
|
|
414
449
|
);
|
|
415
|
-
const unsubscribe = mutationCache().subscribe(() => {
|
|
416
|
-
setResult((prev) => {
|
|
417
|
-
const nextResult = queryCore.replaceEqualDeep(
|
|
418
|
-
prev,
|
|
419
|
-
getResult(mutationCache(), options())
|
|
420
|
-
);
|
|
421
|
-
return prev === nextResult ? prev : nextResult;
|
|
422
|
-
});
|
|
423
|
-
});
|
|
424
450
|
solidJs.onCleanup(unsubscribe);
|
|
425
451
|
return result;
|
|
426
452
|
}
|
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,
|
|
3
|
+
import { createContext, useContext, onCleanup, createMemo, untrack, createRenderEffect, createStore, merge, createEffect, reconcile, createSignal, isPending, refresh, snapshot } from 'solid-js';
|
|
4
4
|
import { createComponent } from '@solidjs/web';
|
|
5
5
|
|
|
6
6
|
// src/useQuery.ts
|
|
@@ -106,7 +106,7 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
106
106
|
}
|
|
107
107
|
return defaultOptions;
|
|
108
108
|
});
|
|
109
|
-
const observer = new Observer(client(), defaultedOptions());
|
|
109
|
+
const observer = untrack(() => new Observer(client(), defaultedOptions()));
|
|
110
110
|
const trackedDefaultedOptions = createMemo(() => defaultedOptions());
|
|
111
111
|
createRenderEffect(
|
|
112
112
|
() => trackedDefaultedOptions(),
|
|
@@ -114,7 +114,9 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
114
114
|
observer.setOptions(opts);
|
|
115
115
|
}
|
|
116
116
|
);
|
|
117
|
-
let observerResult =
|
|
117
|
+
let observerResult = untrack(
|
|
118
|
+
() => observer.getOptimisticResult(defaultedOptions())
|
|
119
|
+
);
|
|
118
120
|
const [state, setState] = createStore(
|
|
119
121
|
_stripFnsForSSR(observerResult)
|
|
120
122
|
);
|
|
@@ -264,17 +266,26 @@ function useInfiniteQuery(options, queryClient) {
|
|
|
264
266
|
}
|
|
265
267
|
function useMutation(options, queryClient) {
|
|
266
268
|
const client = createMemo(() => useQueryClient(queryClient?.()));
|
|
267
|
-
const observer =
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
269
|
+
const observer = untrack(
|
|
270
|
+
() => new MutationObserver(
|
|
271
|
+
client(),
|
|
272
|
+
options()
|
|
273
|
+
)
|
|
274
|
+
);
|
|
275
|
+
createRenderEffect(
|
|
276
|
+
() => options(),
|
|
277
|
+
(opts) => {
|
|
278
|
+
observer.setOptions(opts);
|
|
279
|
+
}
|
|
280
|
+
);
|
|
271
281
|
const mutate = (variables, mutateOptions) => {
|
|
272
282
|
observer.mutate(variables, mutateOptions).catch(noop);
|
|
273
283
|
};
|
|
284
|
+
const initialResult = untrack(() => observer.getCurrentResult());
|
|
274
285
|
const [state, setState] = createStore({
|
|
275
|
-
...
|
|
286
|
+
...initialResult,
|
|
276
287
|
mutate,
|
|
277
|
-
mutateAsync:
|
|
288
|
+
mutateAsync: initialResult.mutate
|
|
278
289
|
});
|
|
279
290
|
const unsubscribe = observer.subscribe((result) => {
|
|
280
291
|
setState(() => ({
|
|
@@ -309,16 +320,20 @@ function useQueries(queriesOptions, queryClient) {
|
|
|
309
320
|
})
|
|
310
321
|
)
|
|
311
322
|
);
|
|
312
|
-
const observer =
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
323
|
+
const observer = untrack(
|
|
324
|
+
() => new QueriesObserver(
|
|
325
|
+
client(),
|
|
326
|
+
defaultedQueries(),
|
|
327
|
+
queriesOptions().combine ? {
|
|
328
|
+
combine: queriesOptions().combine
|
|
329
|
+
} : void 0
|
|
330
|
+
)
|
|
318
331
|
);
|
|
319
|
-
const [, getCombinedResult] =
|
|
320
|
-
|
|
321
|
-
|
|
332
|
+
const [, getCombinedResult] = untrack(
|
|
333
|
+
() => observer.getOptimisticResult(
|
|
334
|
+
defaultedQueries(),
|
|
335
|
+
queriesOptions().combine
|
|
336
|
+
)
|
|
322
337
|
);
|
|
323
338
|
const initialResult = getCombinedResult();
|
|
324
339
|
const [state, setState] = createStore(
|
|
@@ -371,10 +386,15 @@ function queryOptions(options) {
|
|
|
371
386
|
function useIsFetching(filters, queryClient) {
|
|
372
387
|
const client = createMemo(() => useQueryClient(queryClient?.()));
|
|
373
388
|
const queryCache = createMemo(() => client().getQueryCache());
|
|
374
|
-
const [fetches, setFetches] = createSignal(
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
389
|
+
const [fetches, setFetches] = createSignal(
|
|
390
|
+
untrack(() => client().isFetching(filters?.())),
|
|
391
|
+
{ pureWrite: true }
|
|
392
|
+
);
|
|
393
|
+
const unsubscribe = untrack(
|
|
394
|
+
() => queryCache().subscribe(() => {
|
|
395
|
+
setFetches(client().isFetching(filters?.()));
|
|
396
|
+
})
|
|
397
|
+
);
|
|
378
398
|
onCleanup(unsubscribe);
|
|
379
399
|
return fetches;
|
|
380
400
|
}
|
|
@@ -392,11 +412,14 @@ function useIsMutating(filters, queryClient) {
|
|
|
392
412
|
const client = createMemo(() => useQueryClient(queryClient?.()));
|
|
393
413
|
const mutationCache = createMemo(() => client().getMutationCache());
|
|
394
414
|
const [mutations, setMutations] = createSignal(
|
|
395
|
-
client().isMutating(filters?.())
|
|
415
|
+
untrack(() => client().isMutating(filters?.())),
|
|
416
|
+
{ pureWrite: true }
|
|
417
|
+
);
|
|
418
|
+
const unsubscribe = untrack(
|
|
419
|
+
() => mutationCache().subscribe((_result) => {
|
|
420
|
+
setMutations(client().isMutating(filters?.()));
|
|
421
|
+
})
|
|
396
422
|
);
|
|
397
|
-
const unsubscribe = mutationCache().subscribe((_result) => {
|
|
398
|
-
setMutations(client().isMutating(filters?.()));
|
|
399
|
-
});
|
|
400
423
|
onCleanup(unsubscribe);
|
|
401
424
|
return mutations;
|
|
402
425
|
}
|
|
@@ -409,17 +432,20 @@ function useMutationState(options = () => ({}), queryClient) {
|
|
|
409
432
|
const client = createMemo(() => useQueryClient(queryClient?.()));
|
|
410
433
|
const mutationCache = createMemo(() => client().getMutationCache());
|
|
411
434
|
const [result, setResult] = createSignal(
|
|
412
|
-
getResult(mutationCache(), options())
|
|
435
|
+
untrack(() => getResult(mutationCache(), options())),
|
|
436
|
+
{ pureWrite: true }
|
|
437
|
+
);
|
|
438
|
+
const unsubscribe = untrack(
|
|
439
|
+
() => mutationCache().subscribe(() => {
|
|
440
|
+
setResult((prev) => {
|
|
441
|
+
const nextResult = replaceEqualDeep(
|
|
442
|
+
prev,
|
|
443
|
+
getResult(mutationCache(), options())
|
|
444
|
+
);
|
|
445
|
+
return prev === nextResult ? prev : nextResult;
|
|
446
|
+
});
|
|
447
|
+
})
|
|
413
448
|
);
|
|
414
|
-
const unsubscribe = mutationCache().subscribe(() => {
|
|
415
|
-
setResult((prev) => {
|
|
416
|
-
const nextResult = replaceEqualDeep(
|
|
417
|
-
prev,
|
|
418
|
-
getResult(mutationCache(), options())
|
|
419
|
-
);
|
|
420
|
-
return prev === nextResult ? prev : nextResult;
|
|
421
|
-
});
|
|
422
|
-
});
|
|
423
449
|
onCleanup(unsubscribe);
|
|
424
450
|
return result;
|
|
425
451
|
}
|
package/build/index.cjs
CHANGED
|
@@ -98,7 +98,7 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
98
98
|
}
|
|
99
99
|
return defaultOptions;
|
|
100
100
|
});
|
|
101
|
-
const observer = new Observer(client(), defaultedOptions());
|
|
101
|
+
const observer = solidJs.untrack(() => new Observer(client(), defaultedOptions()));
|
|
102
102
|
const trackedDefaultedOptions = solidJs.createMemo(() => defaultedOptions());
|
|
103
103
|
solidJs.createRenderEffect(
|
|
104
104
|
() => trackedDefaultedOptions(),
|
|
@@ -106,7 +106,9 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
106
106
|
observer.setOptions(opts);
|
|
107
107
|
}
|
|
108
108
|
);
|
|
109
|
-
let observerResult =
|
|
109
|
+
let observerResult = solidJs.untrack(
|
|
110
|
+
() => observer.getOptimisticResult(defaultedOptions())
|
|
111
|
+
);
|
|
110
112
|
const [state, setState] = solidJs.createStore(
|
|
111
113
|
_stripFnsForSSR(observerResult)
|
|
112
114
|
);
|
|
@@ -256,17 +258,26 @@ function useInfiniteQuery(options, queryClient) {
|
|
|
256
258
|
}
|
|
257
259
|
function useMutation(options, queryClient) {
|
|
258
260
|
const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
|
|
259
|
-
const observer =
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
261
|
+
const observer = solidJs.untrack(
|
|
262
|
+
() => new queryCore.MutationObserver(
|
|
263
|
+
client(),
|
|
264
|
+
options()
|
|
265
|
+
)
|
|
266
|
+
);
|
|
267
|
+
solidJs.createRenderEffect(
|
|
268
|
+
() => options(),
|
|
269
|
+
(opts) => {
|
|
270
|
+
observer.setOptions(opts);
|
|
271
|
+
}
|
|
272
|
+
);
|
|
263
273
|
const mutate = (variables, mutateOptions) => {
|
|
264
274
|
observer.mutate(variables, mutateOptions).catch(queryCore.noop);
|
|
265
275
|
};
|
|
276
|
+
const initialResult = solidJs.untrack(() => observer.getCurrentResult());
|
|
266
277
|
const [state, setState] = solidJs.createStore({
|
|
267
|
-
...
|
|
278
|
+
...initialResult,
|
|
268
279
|
mutate,
|
|
269
|
-
mutateAsync:
|
|
280
|
+
mutateAsync: initialResult.mutate
|
|
270
281
|
});
|
|
271
282
|
const unsubscribe = observer.subscribe((result) => {
|
|
272
283
|
setState(() => ({
|
|
@@ -301,16 +312,20 @@ function useQueries(queriesOptions, queryClient) {
|
|
|
301
312
|
})
|
|
302
313
|
)
|
|
303
314
|
);
|
|
304
|
-
const observer =
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
315
|
+
const observer = solidJs.untrack(
|
|
316
|
+
() => new queryCore.QueriesObserver(
|
|
317
|
+
client(),
|
|
318
|
+
defaultedQueries(),
|
|
319
|
+
queriesOptions().combine ? {
|
|
320
|
+
combine: queriesOptions().combine
|
|
321
|
+
} : void 0
|
|
322
|
+
)
|
|
310
323
|
);
|
|
311
|
-
const [, getCombinedResult] =
|
|
312
|
-
|
|
313
|
-
|
|
324
|
+
const [, getCombinedResult] = solidJs.untrack(
|
|
325
|
+
() => observer.getOptimisticResult(
|
|
326
|
+
defaultedQueries(),
|
|
327
|
+
queriesOptions().combine
|
|
328
|
+
)
|
|
314
329
|
);
|
|
315
330
|
const initialResult = getCombinedResult();
|
|
316
331
|
const [state, setState] = solidJs.createStore(
|
|
@@ -363,10 +378,15 @@ function queryOptions(options) {
|
|
|
363
378
|
function useIsFetching(filters, queryClient) {
|
|
364
379
|
const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
|
|
365
380
|
const queryCache = solidJs.createMemo(() => client().getQueryCache());
|
|
366
|
-
const [fetches, setFetches] = solidJs.createSignal(
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
381
|
+
const [fetches, setFetches] = solidJs.createSignal(
|
|
382
|
+
solidJs.untrack(() => client().isFetching(filters?.())),
|
|
383
|
+
{ pureWrite: true }
|
|
384
|
+
);
|
|
385
|
+
const unsubscribe = solidJs.untrack(
|
|
386
|
+
() => queryCache().subscribe(() => {
|
|
387
|
+
setFetches(client().isFetching(filters?.()));
|
|
388
|
+
})
|
|
389
|
+
);
|
|
370
390
|
solidJs.onCleanup(unsubscribe);
|
|
371
391
|
return fetches;
|
|
372
392
|
}
|
|
@@ -384,11 +404,14 @@ function useIsMutating(filters, queryClient) {
|
|
|
384
404
|
const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
|
|
385
405
|
const mutationCache = solidJs.createMemo(() => client().getMutationCache());
|
|
386
406
|
const [mutations, setMutations] = solidJs.createSignal(
|
|
387
|
-
client().isMutating(filters?.())
|
|
407
|
+
solidJs.untrack(() => client().isMutating(filters?.())),
|
|
408
|
+
{ pureWrite: true }
|
|
409
|
+
);
|
|
410
|
+
const unsubscribe = solidJs.untrack(
|
|
411
|
+
() => mutationCache().subscribe((_result) => {
|
|
412
|
+
setMutations(client().isMutating(filters?.()));
|
|
413
|
+
})
|
|
388
414
|
);
|
|
389
|
-
const unsubscribe = mutationCache().subscribe((_result) => {
|
|
390
|
-
setMutations(client().isMutating(filters?.()));
|
|
391
|
-
});
|
|
392
415
|
solidJs.onCleanup(unsubscribe);
|
|
393
416
|
return mutations;
|
|
394
417
|
}
|
|
@@ -401,17 +424,20 @@ function useMutationState(options = () => ({}), queryClient) {
|
|
|
401
424
|
const client = solidJs.createMemo(() => exports.useQueryClient(queryClient?.()));
|
|
402
425
|
const mutationCache = solidJs.createMemo(() => client().getMutationCache());
|
|
403
426
|
const [result, setResult] = solidJs.createSignal(
|
|
404
|
-
getResult(mutationCache(), options())
|
|
427
|
+
solidJs.untrack(() => getResult(mutationCache(), options())),
|
|
428
|
+
{ pureWrite: true }
|
|
429
|
+
);
|
|
430
|
+
const unsubscribe = solidJs.untrack(
|
|
431
|
+
() => mutationCache().subscribe(() => {
|
|
432
|
+
setResult((prev) => {
|
|
433
|
+
const nextResult = queryCore.replaceEqualDeep(
|
|
434
|
+
prev,
|
|
435
|
+
getResult(mutationCache(), options())
|
|
436
|
+
);
|
|
437
|
+
return prev === nextResult ? prev : nextResult;
|
|
438
|
+
});
|
|
439
|
+
})
|
|
405
440
|
);
|
|
406
|
-
const unsubscribe = mutationCache().subscribe(() => {
|
|
407
|
-
setResult((prev) => {
|
|
408
|
-
const nextResult = queryCore.replaceEqualDeep(
|
|
409
|
-
prev,
|
|
410
|
-
getResult(mutationCache(), options())
|
|
411
|
-
);
|
|
412
|
-
return prev === nextResult ? prev : nextResult;
|
|
413
|
-
});
|
|
414
|
-
});
|
|
415
441
|
solidJs.onCleanup(unsubscribe);
|
|
416
442
|
return result;
|
|
417
443
|
}
|
package/build/index.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,
|
|
3
|
+
import { createContext, useContext, onCleanup, createMemo, untrack, createRenderEffect, createStore, merge, createEffect, reconcile, createSignal, isPending, refresh, snapshot } from 'solid-js';
|
|
4
4
|
import { createComponent } from '@solidjs/web';
|
|
5
5
|
|
|
6
6
|
// src/useQuery.ts
|
|
@@ -97,7 +97,7 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
97
97
|
}
|
|
98
98
|
return defaultOptions;
|
|
99
99
|
});
|
|
100
|
-
const observer = new Observer(client(), defaultedOptions());
|
|
100
|
+
const observer = untrack(() => new Observer(client(), defaultedOptions()));
|
|
101
101
|
const trackedDefaultedOptions = createMemo(() => defaultedOptions());
|
|
102
102
|
createRenderEffect(
|
|
103
103
|
() => trackedDefaultedOptions(),
|
|
@@ -105,7 +105,9 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
105
105
|
observer.setOptions(opts);
|
|
106
106
|
}
|
|
107
107
|
);
|
|
108
|
-
let observerResult =
|
|
108
|
+
let observerResult = untrack(
|
|
109
|
+
() => observer.getOptimisticResult(defaultedOptions())
|
|
110
|
+
);
|
|
109
111
|
const [state, setState] = createStore(
|
|
110
112
|
_stripFnsForSSR(observerResult)
|
|
111
113
|
);
|
|
@@ -255,17 +257,26 @@ function useInfiniteQuery(options, queryClient) {
|
|
|
255
257
|
}
|
|
256
258
|
function useMutation(options, queryClient) {
|
|
257
259
|
const client = createMemo(() => useQueryClient(queryClient?.()));
|
|
258
|
-
const observer =
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
260
|
+
const observer = untrack(
|
|
261
|
+
() => new MutationObserver(
|
|
262
|
+
client(),
|
|
263
|
+
options()
|
|
264
|
+
)
|
|
265
|
+
);
|
|
266
|
+
createRenderEffect(
|
|
267
|
+
() => options(),
|
|
268
|
+
(opts) => {
|
|
269
|
+
observer.setOptions(opts);
|
|
270
|
+
}
|
|
271
|
+
);
|
|
262
272
|
const mutate = (variables, mutateOptions) => {
|
|
263
273
|
observer.mutate(variables, mutateOptions).catch(noop);
|
|
264
274
|
};
|
|
275
|
+
const initialResult = untrack(() => observer.getCurrentResult());
|
|
265
276
|
const [state, setState] = createStore({
|
|
266
|
-
...
|
|
277
|
+
...initialResult,
|
|
267
278
|
mutate,
|
|
268
|
-
mutateAsync:
|
|
279
|
+
mutateAsync: initialResult.mutate
|
|
269
280
|
});
|
|
270
281
|
const unsubscribe = observer.subscribe((result) => {
|
|
271
282
|
setState(() => ({
|
|
@@ -300,16 +311,20 @@ function useQueries(queriesOptions, queryClient) {
|
|
|
300
311
|
})
|
|
301
312
|
)
|
|
302
313
|
);
|
|
303
|
-
const observer =
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
314
|
+
const observer = untrack(
|
|
315
|
+
() => new QueriesObserver(
|
|
316
|
+
client(),
|
|
317
|
+
defaultedQueries(),
|
|
318
|
+
queriesOptions().combine ? {
|
|
319
|
+
combine: queriesOptions().combine
|
|
320
|
+
} : void 0
|
|
321
|
+
)
|
|
309
322
|
);
|
|
310
|
-
const [, getCombinedResult] =
|
|
311
|
-
|
|
312
|
-
|
|
323
|
+
const [, getCombinedResult] = untrack(
|
|
324
|
+
() => observer.getOptimisticResult(
|
|
325
|
+
defaultedQueries(),
|
|
326
|
+
queriesOptions().combine
|
|
327
|
+
)
|
|
313
328
|
);
|
|
314
329
|
const initialResult = getCombinedResult();
|
|
315
330
|
const [state, setState] = createStore(
|
|
@@ -362,10 +377,15 @@ function queryOptions(options) {
|
|
|
362
377
|
function useIsFetching(filters, queryClient) {
|
|
363
378
|
const client = createMemo(() => useQueryClient(queryClient?.()));
|
|
364
379
|
const queryCache = createMemo(() => client().getQueryCache());
|
|
365
|
-
const [fetches, setFetches] = createSignal(
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
380
|
+
const [fetches, setFetches] = createSignal(
|
|
381
|
+
untrack(() => client().isFetching(filters?.())),
|
|
382
|
+
{ pureWrite: true }
|
|
383
|
+
);
|
|
384
|
+
const unsubscribe = untrack(
|
|
385
|
+
() => queryCache().subscribe(() => {
|
|
386
|
+
setFetches(client().isFetching(filters?.()));
|
|
387
|
+
})
|
|
388
|
+
);
|
|
369
389
|
onCleanup(unsubscribe);
|
|
370
390
|
return fetches;
|
|
371
391
|
}
|
|
@@ -383,11 +403,14 @@ function useIsMutating(filters, queryClient) {
|
|
|
383
403
|
const client = createMemo(() => useQueryClient(queryClient?.()));
|
|
384
404
|
const mutationCache = createMemo(() => client().getMutationCache());
|
|
385
405
|
const [mutations, setMutations] = createSignal(
|
|
386
|
-
client().isMutating(filters?.())
|
|
406
|
+
untrack(() => client().isMutating(filters?.())),
|
|
407
|
+
{ pureWrite: true }
|
|
408
|
+
);
|
|
409
|
+
const unsubscribe = untrack(
|
|
410
|
+
() => mutationCache().subscribe((_result) => {
|
|
411
|
+
setMutations(client().isMutating(filters?.()));
|
|
412
|
+
})
|
|
387
413
|
);
|
|
388
|
-
const unsubscribe = mutationCache().subscribe((_result) => {
|
|
389
|
-
setMutations(client().isMutating(filters?.()));
|
|
390
|
-
});
|
|
391
414
|
onCleanup(unsubscribe);
|
|
392
415
|
return mutations;
|
|
393
416
|
}
|
|
@@ -400,17 +423,20 @@ function useMutationState(options = () => ({}), queryClient) {
|
|
|
400
423
|
const client = createMemo(() => useQueryClient(queryClient?.()));
|
|
401
424
|
const mutationCache = createMemo(() => client().getMutationCache());
|
|
402
425
|
const [result, setResult] = createSignal(
|
|
403
|
-
getResult(mutationCache(), options())
|
|
426
|
+
untrack(() => getResult(mutationCache(), options())),
|
|
427
|
+
{ pureWrite: true }
|
|
428
|
+
);
|
|
429
|
+
const unsubscribe = untrack(
|
|
430
|
+
() => mutationCache().subscribe(() => {
|
|
431
|
+
setResult((prev) => {
|
|
432
|
+
const nextResult = replaceEqualDeep(
|
|
433
|
+
prev,
|
|
434
|
+
getResult(mutationCache(), options())
|
|
435
|
+
);
|
|
436
|
+
return prev === nextResult ? prev : nextResult;
|
|
437
|
+
});
|
|
438
|
+
})
|
|
404
439
|
);
|
|
405
|
-
const unsubscribe = mutationCache().subscribe(() => {
|
|
406
|
-
setResult((prev) => {
|
|
407
|
-
const nextResult = replaceEqualDeep(
|
|
408
|
-
prev,
|
|
409
|
-
getResult(mutationCache(), options())
|
|
410
|
-
);
|
|
411
|
-
return prev === nextResult ? prev : nextResult;
|
|
412
|
-
});
|
|
413
|
-
});
|
|
414
440
|
onCleanup(unsubscribe);
|
|
415
441
|
return result;
|
|
416
442
|
}
|
package/package.json
CHANGED
package/src/useBaseQuery.ts
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
reconcile,
|
|
12
12
|
refresh,
|
|
13
13
|
snapshot,
|
|
14
|
+
untrack,
|
|
14
15
|
} from 'solid-js'
|
|
15
16
|
import { useQueryClient } from './QueryClientProvider'
|
|
16
17
|
import { useIsRestoring } from './isRestoring'
|
|
@@ -174,7 +175,7 @@ export function useBaseQuery<
|
|
|
174
175
|
return defaultOptions
|
|
175
176
|
})
|
|
176
177
|
|
|
177
|
-
const observer = new Observer(client(), defaultedOptions())
|
|
178
|
+
const observer = untrack(() => new Observer(client(), defaultedOptions()))
|
|
178
179
|
|
|
179
180
|
// Track options reactively so the queryResource memo re-runs on change.
|
|
180
181
|
const trackedDefaultedOptions = createMemo(() => defaultedOptions())
|
|
@@ -189,7 +190,10 @@ export function useBaseQuery<
|
|
|
189
190
|
},
|
|
190
191
|
)
|
|
191
192
|
|
|
192
|
-
let observerResult =
|
|
193
|
+
let observerResult = untrack(() =>
|
|
194
|
+
observer.getOptimisticResult(defaultedOptions()),
|
|
195
|
+
)
|
|
196
|
+
|
|
193
197
|
const [state, setState] = createStore<QueryObserverResult<TData, TError>>(
|
|
194
198
|
_stripFnsForSSR(observerResult),
|
|
195
199
|
)
|
package/src/useIsFetching.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createMemo, createSignal, onCleanup } from 'solid-js'
|
|
1
|
+
import { createMemo, createSignal, onCleanup, untrack } from 'solid-js'
|
|
2
2
|
import { useQueryClient } from './QueryClientProvider'
|
|
3
3
|
import type { QueryFilters } from '@tanstack/query-core'
|
|
4
4
|
import type { QueryClient } from './QueryClient'
|
|
@@ -11,11 +11,16 @@ export function useIsFetching(
|
|
|
11
11
|
const client = createMemo(() => useQueryClient(queryClient?.()))
|
|
12
12
|
const queryCache = createMemo(() => client().getQueryCache())
|
|
13
13
|
|
|
14
|
-
const [fetches, setFetches] = createSignal(
|
|
14
|
+
const [fetches, setFetches] = createSignal(
|
|
15
|
+
untrack(() => client().isFetching(filters?.())),
|
|
16
|
+
{ pureWrite: true },
|
|
17
|
+
)
|
|
15
18
|
|
|
16
|
-
const unsubscribe =
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
const unsubscribe = untrack(() =>
|
|
20
|
+
queryCache().subscribe(() => {
|
|
21
|
+
setFetches(client().isFetching(filters?.()))
|
|
22
|
+
}),
|
|
23
|
+
)
|
|
19
24
|
|
|
20
25
|
onCleanup(unsubscribe)
|
|
21
26
|
|
package/src/useIsMutating.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createMemo, createSignal, onCleanup } from 'solid-js'
|
|
1
|
+
import { createMemo, createSignal, onCleanup, untrack } from 'solid-js'
|
|
2
2
|
import { useQueryClient } from './QueryClientProvider'
|
|
3
3
|
import type { MutationFilters } from '@tanstack/query-core'
|
|
4
4
|
import type { QueryClient } from './QueryClient'
|
|
@@ -12,12 +12,15 @@ export function useIsMutating(
|
|
|
12
12
|
const mutationCache = createMemo(() => client().getMutationCache())
|
|
13
13
|
|
|
14
14
|
const [mutations, setMutations] = createSignal(
|
|
15
|
-
client().isMutating(filters?.()),
|
|
15
|
+
untrack(() => client().isMutating(filters?.())),
|
|
16
|
+
{ pureWrite: true },
|
|
16
17
|
)
|
|
17
18
|
|
|
18
|
-
const unsubscribe =
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
const unsubscribe = untrack(() =>
|
|
20
|
+
mutationCache().subscribe((_result) => {
|
|
21
|
+
setMutations(client().isMutating(filters?.()))
|
|
22
|
+
}),
|
|
23
|
+
)
|
|
21
24
|
|
|
22
25
|
onCleanup(unsubscribe)
|
|
23
26
|
|
package/src/useMutation.ts
CHANGED
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
createRenderEffect,
|
|
5
5
|
createStore,
|
|
6
6
|
onCleanup,
|
|
7
|
+
untrack,
|
|
7
8
|
} from 'solid-js'
|
|
8
9
|
import { useQueryClient } from './QueryClientProvider'
|
|
9
10
|
import type { DefaultError } from '@tanstack/query-core'
|
|
@@ -27,17 +28,21 @@ export function useMutation<
|
|
|
27
28
|
): UseMutationResult<TData, TError, TVariables, TOnMutateResult> {
|
|
28
29
|
const client = createMemo(() => useQueryClient(queryClient?.()))
|
|
29
30
|
|
|
30
|
-
const observer =
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
const observer = untrack(
|
|
32
|
+
() =>
|
|
33
|
+
new MutationObserver<TData, TError, TVariables, TOnMutateResult>(
|
|
34
|
+
client(),
|
|
35
|
+
options(),
|
|
36
|
+
),
|
|
37
|
+
)
|
|
36
38
|
|
|
37
39
|
// Track options changes and update observer
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
createRenderEffect(
|
|
41
|
+
() => options(),
|
|
42
|
+
(opts) => {
|
|
43
|
+
observer.setOptions(opts)
|
|
44
|
+
},
|
|
45
|
+
)
|
|
41
46
|
|
|
42
47
|
const mutate: UseMutateFunction<
|
|
43
48
|
TData,
|
|
@@ -48,12 +53,13 @@ export function useMutation<
|
|
|
48
53
|
observer.mutate(variables, mutateOptions).catch(noop)
|
|
49
54
|
}
|
|
50
55
|
|
|
56
|
+
const initialResult = untrack(() => observer.getCurrentResult())
|
|
51
57
|
const [state, setState] = createStore<
|
|
52
58
|
UseMutationResult<TData, TError, TVariables, TOnMutateResult>
|
|
53
59
|
>({
|
|
54
|
-
...
|
|
60
|
+
...initialResult,
|
|
55
61
|
mutate,
|
|
56
|
-
mutateAsync:
|
|
62
|
+
mutateAsync: initialResult.mutate,
|
|
57
63
|
})
|
|
58
64
|
|
|
59
65
|
const unsubscribe = observer.subscribe((result) => {
|
package/src/useMutationState.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createMemo, createSignal, onCleanup } from 'solid-js'
|
|
1
|
+
import { createMemo, createSignal, onCleanup, untrack } from 'solid-js'
|
|
2
2
|
import { replaceEqualDeep } from '@tanstack/query-core'
|
|
3
3
|
import { useQueryClient } from './QueryClientProvider'
|
|
4
4
|
import type {
|
|
@@ -35,18 +35,21 @@ export function useMutationState<TResult = MutationState>(
|
|
|
35
35
|
const mutationCache = createMemo(() => client().getMutationCache())
|
|
36
36
|
|
|
37
37
|
const [result, setResult] = createSignal(
|
|
38
|
-
getResult(mutationCache(), options()),
|
|
38
|
+
untrack(() => getResult(mutationCache(), options())),
|
|
39
|
+
{ pureWrite: true },
|
|
39
40
|
)
|
|
40
41
|
|
|
41
|
-
const unsubscribe =
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
42
|
+
const unsubscribe = untrack(() =>
|
|
43
|
+
mutationCache().subscribe(() => {
|
|
44
|
+
setResult((prev) => {
|
|
45
|
+
const nextResult = replaceEqualDeep(
|
|
46
|
+
prev,
|
|
47
|
+
getResult(mutationCache(), options()),
|
|
48
|
+
)
|
|
49
|
+
return prev === nextResult ? prev : nextResult
|
|
50
|
+
})
|
|
51
|
+
}),
|
|
52
|
+
)
|
|
50
53
|
|
|
51
54
|
onCleanup(unsubscribe)
|
|
52
55
|
|
package/src/useQueries.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
merge,
|
|
7
7
|
onCleanup,
|
|
8
8
|
reconcile,
|
|
9
|
+
untrack,
|
|
9
10
|
} from 'solid-js'
|
|
10
11
|
import { useQueryClient } from './QueryClientProvider'
|
|
11
12
|
import { useIsRestoring } from './isRestoring'
|
|
@@ -205,20 +206,25 @@ export function useQueries<
|
|
|
205
206
|
),
|
|
206
207
|
)
|
|
207
208
|
|
|
208
|
-
const observer =
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
209
|
+
const observer = untrack(
|
|
210
|
+
() =>
|
|
211
|
+
new QueriesObserver<TCombinedResult>(
|
|
212
|
+
client(),
|
|
213
|
+
defaultedQueries(),
|
|
214
|
+
queriesOptions().combine
|
|
215
|
+
? ({
|
|
216
|
+
combine: queriesOptions().combine,
|
|
217
|
+
} as QueriesObserverOptions<TCombinedResult>)
|
|
218
|
+
: undefined,
|
|
219
|
+
),
|
|
216
220
|
)
|
|
217
221
|
|
|
218
222
|
// Get initial optimistic result
|
|
219
|
-
const [, getCombinedResult] =
|
|
220
|
-
|
|
221
|
-
|
|
223
|
+
const [, getCombinedResult] = untrack(() =>
|
|
224
|
+
observer.getOptimisticResult(
|
|
225
|
+
defaultedQueries(),
|
|
226
|
+
(queriesOptions() as QueriesObserverOptions<TCombinedResult>).combine,
|
|
227
|
+
),
|
|
222
228
|
)
|
|
223
229
|
|
|
224
230
|
const initialResult = getCombinedResult()
|